• 九个基本特征,加粗三个容易被遗漏的内容
  1. 通过服务实现组件化;
  2. 服务按照业务能力划分组织;
  3. 服务以产品而不是项目研发;
  4. 逻辑集中在服务中,编排简单;
  5. 每个服务自主决策(技术栈,语言等等);
  6. 每个服务自主管理数据(不强制使用统一数据源);
  7. 基础设施自动化;
  8. 将服务失败当作常态纳入设计考量;
  9. 演进式设计(不求一步到位):TDD是必须的
  • 为什么云原生时代下,微服务架构设计是默认选择?
    • 微服务架构风格在粒度上更能符合云原生(镜像、API、弹性)和架构设计(按能力划分组织)的需要,所以微服务架构风格被视为云原生架构的“默认选择”。
    • 在云原生的视角下,微服务的核心关注就是:如何更好的利用弹性(怎么拆,如何更好的水平拓展)+ 如何设计 API
  • 拆分依据:
    弹性作为最优先的考虑要素,以业务上下文为辅助考虑因素,从而划定系统边界。通过弹性边界的核心概念和应用要点,就能判断某个系统是否充分利用了云平台的能力。
    • 微服务到底要多微?微到能够更好地利用弹性控制成本的大小。
    • 边界判断缺位的资源代价进一步对照了微服务与 LLM:服务拆分不能代替边界设计,正如更长的 Context 不能代替人对工作相关性的判断。
    • 弹性优先原则不仅仅适用于微服务架构,而是适用于所有云原生架构
    • 云平台更擅长处理依赖吞吐量(Thoughput)的弹性依赖,而不擅长处理对依赖于响应时间(Reponse Time)的弹性依赖。
      业务的天然异步性,是弹性边界的天然识别点。