微服务-拆分


拆分时机

  • 业务规模
  • 团队规模
  • 技术储备
  • 人才储备
  • 研发效率

拆分原则

  • 闭包原则(CCP)
  • 服务自治、接口隔离原则
  • 持续演进原则
  • 避免影响产品的日常功能迭代
  • 服务接口的定义要具备可扩展性
  • 避免环形依赖与双向依赖
  • 阶段性合并
  • 自动化驱动

拆分策略

拆分后的服务由相对独立的团队负责

  • 功能维度拆分策略(基于业务复杂度)
    • 基于数据驱动(业务复杂度较低): 自下而上的架构设计方法,通过分析需求,确定整体数据结构,根据表之间的关系拆分服务
    • 基于领域驱动(业务复杂度足够高): 自上而下的架构设计方法,通过和领域专家建立统一的语言,不断交流,确定关键业务场景,逐步确定边界上下文
    • 从已有单体架构中逐步拆分:前后端分离,提取公共基础服务(如授权服务,分布式ID服务),不断从老系统抽取服务,垂直划分优先,适当水平切分
  • 非功能维度拆分策略:扩展性、复用性、高性能、高可用、安全性、异构性

拆分风险

  • 开发团队是否具备足够的经验
  • 不断纠正
  • 要做行动派,而不是理论派:在具体怎么拆分上,也不要太纠结于是否合适,如果拆了之后发现真的不合适,在重新调整就好了。
  • 服务拆合
    • 拆相当于我们开发代码,合相当于重构代码
    • 人员和服务数量的不匹配
    • 微服务数量过多和资源不匹配。合并后的服务包内的服务依然要满足微服务定义,以便在未来某一天要重新拆开的时候可以很快就分离

文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录