引言
- 本文介绍微服务架构。
微服务特点
- 对服务来说:
- 服务小,松耦合:服务面向一个独立的业务逻辑,SOA(service oriented architecture);
- 独立的进程;
- 轻量级通信:用https协议通信,用json数据格式;
- 对团队来说:
- 独立开发:不同团队无需相同技术栈,每个团队维护自己的数据源;
- 独立部署:不需要过多协调不同团队进度;
- 康威法则:设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构;
- 弊端:
- 技术栈众多;
- 分布式系统,数据只能保证最终一致;
- 运维和测试复杂;
实践建议
- 何时使用:
- 系统复杂性较低时不使用微服务,使用单块应用,因为微服务所需的基础设施成本高,业务不复杂时微服务的优势无法体现出来;
- 系统复杂性提升时,逐步将单块应用拆解为微服务;
- 拆分粒度:
- 微服务拆分粒度过粗,则体现不出微服务的价值;
- 拆分过细又导致:维护、测试成本上升,效率下降;服务调用链太长,问题定位不方便,性能也会下降;
- 一般一个微服务由2-3个人负责最为合适;每个人能够全面理解系统;能够相互讨论避免出错;
- 自动化:
- 随着微服务的增多,自动化工具必须提供,否则维护成本太高;
如何拆分
- 根据业务逻辑拆分;
- 根据服务成熟度拆分:成熟服务,可能会变化的服务;
- 根据可靠性需求拆分:必须保证99.999%可靠的核心服务,保证99%可靠就可以的非核心服务;
- 根据性能需求拆分:将性能要求高或者性能压力大的模块拆分出来,避免性能压力大的服务影响其他服务;
微服务需要考虑
微服务和SOA的区别
- Class Microservice implements SOA;