自治性
一个微服务就是一个独立的实体,其可以独立的部署在 PASS(Platform As A Service, 平台即服务)上,也可以作为一个操作系统进程存在
每个服务都应该可以独立的进行修改,并且服务部署不应该引起该服务消费者方的变动
服务之间均通过网络调用进行通信,以加强服务之间的隔离性,避免紧耦合
内聚性
内聚性是结构化分析的重要概念之一
论述
内聚性是指将功能相关的代码放在一起组合成一个模块的程度
单一职责原则
论述
把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离开来
单一职责原则是从内聚性原则发展出来的,由 Robert C. Martin 于《敏捷软件开发:原则、模式和实践》书中提出
微服务的优势
技术异构性
一个由多个服务相互协作的系统,可以为不同的服务中选择最适合该服务的技术
弹性
舱壁
舱壁是弹性工程学中的重要概念之一
概述
如果系统中的一个组件不可用了,但并没有导致级联故障,并且系统中的其它部分还可以正常运行,那么服务的边界就是一个舱壁
可扩展性
将庞大的单体应用拆分为多个服务后,可以针对系统中存在性能问题需要扩展的服务进行扩展
可组合性
将单体应用拆分成多个服务,可以达到可重用,可组合的目的
简化部署
在微服务架构中,各个服务的部署都是独立的,可以更快地对特定部分的代码进行部署。即使如果出现问题,也只会影响一个服务,容易快速回滚。这种微服务架构很好地清除了软件发布过程中的种种障碍
更好的与组织结构相匹配
微服务架构可以更好的将架构与组织架构相匹配,避免出现过大的代码库,从而获得理想的团队大小及生产力
相关概念
SOA(Service-Oriented Architecture,面向服务的架构)
概述
SOA 是一种设计方法,其中包含多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于系统进程中。服务之间通过网络调用,而非采用进程内调用的方式进行通信。
微服务架构与面向服务架构的关系
微服务架构是面向服务架构的一种特定方法