微服务架构一书读后感,并结合自己实际工作的归纳总结。
1.什么是微服务?
- 官方说法:微服务架构就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。
- 个人理解:每一个服务都有自己独立的功能、数据源,并能完成自治。最小程度依赖外部其他服务。
2.微服务应该满足的特性
- 内聚性:与服务本身相关的功能聚合在一起,类似平时代码中使用的一个包结构。
- 单一职责原则:一个微服务本身应该只做一件事情。当然实际工作中一个微服务的划分会和公司规模、组织结构、功能/复杂性都有关联。
- 自治性:一个微服务本身应该有独立的、与其他服务隔离的主机
(这里的主机套用书里的观点,可以是物理机、可以是容器,可以理解成支持服务运行的环境)
。与其他服务隔离的数据库、缓存等。服务本身应该能独立使用其中的资源而不依赖与其他的服务。
之上所说的内容也即是常见的高内聚、松耦合
。
3.微服务的优点
-
弹性:对比单块应用,理论上单个微服务崩溃只是其中一个功能不可用,而不是整个服务不可用。(实际情况如果不处理好熔断等机制,单个服务的崩溃是可能引起雪崩效应)
-
扩展性:对比单块应用,微服务扩展相对简单。
-
水平扩展:无状态的服务可以直接扩展,有状态的服务理论上也只需要修改更少的代码即可实现扩展。
-
垂直扩展:因与其他服务依赖较低,理论上扩展功能也不易引起其他服务的修改。
-
-
技术异构性:不同服务可以使用不同技术栈、不同类型的存储引擎去实现,具有更高的灵活性与针对性。
-
敏捷开发,快速迭代:与单块应用相比,松耦合、代码数量少,因此能更快的开发、迭代、修复、交付。
-
可组合型:不同粒度、功能的服务可以很快速的组合在一起提供一个复杂的服务。
-
可替代性优化:与单块应用相比,对一个服务进行优化甚至替换都是快速并且可行的。