20服务拆分(横向纵向拆分)

402 阅读1分钟

1.一体化架构的痛点

一体化架构特点:

  • 优点

    • 开发简单,代码项目集中管理
    • 节约维护系统运行的人力
    • 排查问题简单
    • 方便快速迭代
  • 缺点

    • 数据库连接数可能成为系统瓶颈(所有的数据库操作都是用一套连接)
      • 流量大后不可控制
    • 代码耦合导致组织结构的耦合
      • 人与人之间的沟通成本太高
    • 系统运维影响大
      • 提交代码冲突,构建时间,打包上线时间非常不灵活

针对乘客API的拆分特点(横向拆分)

  • 优点
    • 代码拆分后,代码清晰了
    • 上线更快了,冲突更小
    • 可以根据实际情况进行更小粒度的横向扩展
      • per-sale机器最多
      • post-sale机器最少
  • 缺点
    • 更难收敛,需要通过biz-common,biz-lib收敛
    • 可能导致不统一配置

2.如何使用微服务化解决这些痛点

未拆分

image.png

将服务按照业务进行横向拆分:

解决了数据库层面的扩展性问题

image.png

拆分思路:

  • 按照业务横向拆分
  • 按照公共服务抽取出来,下沉为单独的服务

3.总结

  • QPS不是拆分的决定性因素
    • 资源出现扩展性问题,尤其数据库连接数出现瓶颈
    • 维护代码的人多,沟通成本高(上下游)
    • 系统部署成本越来越高