本文参考文献----《微服务架构与实践(第2版)》电子工业出版社出版 王磊 等著
什么是微服务架构
微服务的两个核心点:
- 松耦合(Loosely coupled):松耦合表明,服务之间的耦合关系是松散的,即服务能够被独立部署和更新。
- 业务上下文(Bounded context)独立:源于《领域驱动设计》(Domain Driven Design)一书,表明对于单服务而言,它的业务是相对独立的,可以由团队根据接口定义的信息来维护该服务。
定义
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 协议的 RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。
微服务的小,多小才算小?有以下几个参考因素:
- 代码行数:无固定参考
- 重写时间:无固定参考
- 团队大小:10人以内
- 独立的业务单元:关于如何划分独立的业务单元或者根据业务建模的可以参考 Eric Evans 的《领域驱动设计》一书。
- 团队能够自治:团队规模一般不建议超过10人,超过10人时,可以考虑拆分成子团队,全功能的自治团队能够负责服务的开发、测试、部署以及上线
- 服务的职责单一:参考面向对象设计中的SOLID原则
- 高内聚:一个模块内各个元素彼此结合的紧密程度高。高内聚体现在服务处理的业务逻辑单一,将不相关的业务逻辑隔离。
- 低耦合:一个模块内各个元素彼此结合的紧密程度高。高内聚体现在服务处理的业务逻辑单一,将不相关的业务逻辑隔离。
微服务----独
- 每个服务都运行在独立的进程中
- 每个服务都是具有业务属性的独立单元,同时能够被独立开发、独立运行、独立测试以及独立部署
理论上,虽然我们能够将多个服务部署到同一台节点上,并让他们运行在不同的进程中,但并不推荐这么做。作为运行微服务的环境,我们希望他能够保持高度的自治性和隔离性。如果多个服务运行在同一个服务器节点上,虽然省去了节点的开销,但是增加了部署和伸缩的复杂度。譬如,当部署某个新的服务时,如果当前节点已经运行多个服务,则可能会对这些现有的服务造成影响。
微服务----轻
服务之间使用轻量级通信机制
微服务----松
松耦合,是指在服务的交互过程中,开发、测试以及部署的过程在不同服务之间是互不影响的。每个服务都是