我们知道微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析,所以这篇文章谈到的划分也不是绝对标准,仅供参考。
有人说微幅不难,难的是服务的划分,虽然我持保留意见。但是从侧面也反应了划分具有一定的困难。这里的矛盾在于粒度。如果粒度太大了,分和不分似乎都差不多;如果粒度太小了,聚合、发布、调用链、调试等都是坑。
以下谈到的拆分是前人经验的总结,我罗列了三种行家的拆分姿势,每个的的经验和视野不同,各有偏颇,我在这里更多的是谈共鸣和感受,希望对你有所启发。
一、拆分姿势1.姿势一:
新浪微博微服务专家胡忠想从纵横两个维度来划分,简单粗暴:
1.1 纵向拆分
从业务维度进行拆分。标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。
1.2 横向拆分
从公共且独立功能维度拆分。标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。
纵向以业务为基准,关系铁的在一起;横向功能独立的在一起。我想如果拆分这么简单,你有底气拆,敢拆吗?所以我们又继续比对一下其他专家的言论。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=6b7e818c61c6a7efb926a82ecdfbafe9/eeb6d754564e92585d66a2bd8b82d158cdbf4eac.jpg?tbpicau=2025-02-28-05_68bc3a83c7f230e296fb2e6a4ed00a73)
有人说微幅不难,难的是服务的划分,虽然我持保留意见。但是从侧面也反应了划分具有一定的困难。这里的矛盾在于粒度。如果粒度太大了,分和不分似乎都差不多;如果粒度太小了,聚合、发布、调用链、调试等都是坑。
以下谈到的拆分是前人经验的总结,我罗列了三种行家的拆分姿势,每个的的经验和视野不同,各有偏颇,我在这里更多的是谈共鸣和感受,希望对你有所启发。
一、拆分姿势1.姿势一:
新浪微博微服务专家胡忠想从纵横两个维度来划分,简单粗暴:
1.1 纵向拆分
从业务维度进行拆分。标准是按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务。
1.2 横向拆分
从公共且独立功能维度拆分。标准是按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合。
纵向以业务为基准,关系铁的在一起;横向功能独立的在一起。我想如果拆分这么简单,你有底气拆,敢拆吗?所以我们又继续比对一下其他专家的言论。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=6b7e818c61c6a7efb926a82ecdfbafe9/eeb6d754564e92585d66a2bd8b82d158cdbf4eac.jpg?tbpicau=2025-02-28-05_68bc3a83c7f230e296fb2e6a4ed00a73)