专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

微服务如何拆分,微服务设计,微服务应用拆分规则,微服务可靠性拆分

对于一个大系统,应该从什么角度进行微服务拆分?

首先我们要确定出微服务的大致数量,数量很关键,因为数量越多,维护成本越大,一定不要超出团队的承受范围。确定了数量,我们再考虑怎么拆。

服务粒度

最好是基于团队的规模进行拆分,以1个微服务由3个人开发最佳,例如团队开始有6个人,就可以划分为2个微服务,随着业务的发展,功能越来越多,团队扩充到了12个人,就可以把原来的2个拆为4个。

3个人的好处:

  • 3个人负责一个微服务,每人对系统的理解程度、分工的粒度、系统的效率都是非常合适的。
  • 从管理的角度来看,3个人是非常稳定的结构,即使1个人休假或者调走,剩余2个人还可以支撑。如果一共是2个人,走一个剩一个的话压力就很大了。
  • 从技术提升的角度,3个人能够有效的讨论,快速达成一致,提升很快。如果是2个人,可能互相坚持自己的意见。如果是4个人,可能有的人不会认真参与讨论。

拆分方法

1. 基于业务逻辑拆分

将系统中的业务模块按照职责范围识别出来,每个单独的业务模块拆分为一个独立的服务。

例如,做一个电商系统,可以划分为商品、交易、用户3个服务,也可以划分为商品、订单、支付、发货、买家、卖家6个服务。

这2种划分都没问题,差异就是数量不同,这时就要根据上面拆分粒度的原则了,根据团队规模来决定。所以,我们要先计算大概的服务数量,然后再确定合适的“职责范围”。

2. 基于可扩展拆分

将系统中的业务模块按照稳定性排序,将已经成熟和改动不大的服务拆分为稳定服务,将经常变化和迭代的服务拆分为变动服务

稳定服务的粒度可以粗一些,即使逻辑上关联不强的也可以放在一个服务中,例如日志服务、升级服务放在一个子系统中。

变动服务的粒度可以细一些,但要注意服务的数量。

这种拆分方式是为了提升项目快速迭代的效率,避免变动服务的改动升级影响了成熟的功能。

3. 基于可靠性拆分

将系统中的 可靠性要求高的核心服务可靠性要求低的非核心服务 拆分开来,然后重点保证核心服务的高可用。

好处:

  • 避免非核心服务故障影响核心服务

例如,日志上报是非核心服务,某一段时间内上报量可能会非常大,如果没有拆分出来,那么就可能严重影响核心服务。

  • 核心服务高可用方案更简单

核心服务单独拆分出来后,涉及的数据、组件等都会更少,对其做高可用方案就简单很多,需要考虑的点较少。

  • 降低高可用成本

拆分后,核心服务占用的机器、带宽等资源比不拆分要少很多。

4. 基于性能拆分

将对性能压力大的模块拆出来,避免影响其他服务,而且对其做性能提升、高可用等优化都更简单高效。

例如电商的抢购,排队功能的性能压力很大,就可以将其独立为一个服务。

小结

注意,这几种拆分方式不是多选一,可以根据实际情况自由组合,例如一个系统X,可以基于可靠性拆分出服务A,基于性能拆分出B,基于可扩展性拆出 C/D/F,最后共 A/B/C/D/F/X 6个服务。

95_1.png

内容整理自《从0开始学架构》

文章永久链接:https://tech.souyunku.com/11806

未经允许不得转载:搜云库技术团队 » 微服务如何拆分,微服务设计,微服务应用拆分规则,微服务可靠性拆分

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们