Architecture(五)微服务概述

引言

  • 本文介绍微服务架构。

微服务特点

  • 对服务来说:
    • 服务小,松耦合:服务面向一个独立的业务逻辑,SOA(service oriented architecture);
    • 独立的进程;
    • 轻量级通信:用https协议通信,用json数据格式;
  • 对团队来说:
    • 独立开发:不同团队无需相同技术栈,每个团队维护自己的数据源;
    • 独立部署:不需要过多协调不同团队进度;
    • 康威法则:设计系统的组织,其产生的设计等同于组织之内、组织之间的沟通结构;
  • 弊端:
    • 技术栈众多;
    • 分布式系统,数据只能保证最终一致;
    • 运维和测试复杂;

实践建议

  • 何时使用:
    • 系统复杂性较低时不使用微服务,使用单块应用,因为微服务所需的基础设施成本高,业务不复杂时微服务的优势无法体现出来;
    • 系统复杂性提升时,逐步将单块应用拆解为微服务;
  • 拆分粒度:
    • 微服务拆分粒度过粗,则体现不出微服务的价值;
    • 拆分过细又导致:维护、测试成本上升,效率下降;服务调用链太长,问题定位不方便,性能也会下降;
    • 一般一个微服务由2-3个人负责最为合适;每个人能够全面理解系统;能够相互讨论避免出错;
  • 自动化:
    • 随着微服务的增多,自动化工具必须提供,否则维护成本太高;

如何拆分

  • 根据业务逻辑拆分;
  • 根据服务成熟度拆分:成熟服务,可能会变化的服务;
  • 根据可靠性需求拆分:必须保证99.999%可靠的核心服务,保证99%可靠就可以的非核心服务;
  • 根据性能需求拆分:将性能要求高或者性能压力大的模块拆分出来,避免性能压力大的服务影响其他服务;

微服务需要考虑

term

微服务和SOA的区别

  • Class Microservice implements SOA;

term

您的支持是对我最大的鼓励!