告诉我!微服务,究竟拆分到什么粒度才合适?
随着数据量、并发量、业务复杂度的增长,互联网架构会出现一些问题,“服务化”是一个很好的解决上述痛点的方案。又有童鞋问我说,那微服务架构多“微”才合适?
《微服务架构的六大好处》中提到,随着数据量、并发量、业务复杂度的增长,互联网架构会出现以下问题:
代码到处拷贝;底层复杂性扩散;基础库(so/jar/dll)耦合;SQL质量得不到保障,业务相互影响;数据库耦合;“服务化”是一个很好的解决上述痛点的方案。

又有童鞋问我说,那微服务架构多“微”才合适?
一般有这样四类实践。
实践一:统一服务层。

这是最粗犷的玩法,所有基础数据,都通过一个统一的服务来进行访问。
在业务不是特别复杂的时候,这不失为一个快速分层的方案,一旦业务变得复杂,服务层会变得非常重,成为耦合焦点。
以微信场景为例,假设通过一个通用的服务层来访问基础数据。

则只有一个统一的服务层,用户信息,好友信息,群组信息,消息信息都通过这个服务层来访问。
实践二:一个子业务一个服务。
如果所有的数据访问都通过一个服务层来访问,那么一行代码出故障,就将影响整个服务,所以更合理的做法是在服务层进行拆分。
服务层架构如何细分?
垂直拆分是个好的方案,将子业务分拆,那么微信的服务化架构或许会变成下面的样子:

这样的话,一个服务出问题也不会影响其他服务,与此同时,数据层也按照业务垂直拆分开了。
服务粒度变细之后,出现一个新的问题,业务与服务的连接关系变复杂了,有什么好的优化方案么?

常见的,加入一个高可用服务分发层(Service Mesh不就是这么干的么),并在协议设计时加入服务号,可以减少蜘蛛网状的依赖关系:
调用方依赖分发层,传入服务号;分发层依赖服务层,通过服务号参数分发;实践三:一个数据库对应一个服务。
数据访问服务最初是从DAO/ORM的数据访问需求过来的,所以有些公司也有一个数据库一个服务的玩法。
一个子业务对应一个服务的玩法如下图:

拆分成一个数据库一个服务,则架构会变成下面的样子:

群信息库,群成员库,群消息库之间也解耦开,不会相互影响。
实践四,一个接口对应一个服务。
微服务架构中,更极端的,甚至一个接口对应一个微服务。
这样的话,架构就从:

进化为:

多个服务操纵同一个数据库,任何接口服务出问题,都不会影响其他接口服务。使用这种方案的,一般与开发语言特性结合比较紧密,例如golang。
上文中谈到的服务化与微服务,不同粒度的服务化各有什么优劣呢?
总的来说,细粒度拆分的优点有:
服务都能够独立部署;扩容和缩容方便,有利于提高资源利用率;拆得越细,耦合相对会减小;拆得越细,容错相对会更好,一个服务出问题不影响其他服务;扩展性更好;细粒度拆分的不足也很明显:
拆得越细,系统越复杂;系统之间的依赖关系也更复杂;运维复杂度提升;监控更加复杂;出问题时定位问题更难;互联公司,以“子业务”作为微服务粒度是最常用,订单服务,用户服务,支付服务等等。
知其然,知其所以然。
思路比结论更重要。
相关攻略
实战:重写URL前缀路径 在微服务落地和API网关部署过程中,一个绕不开的经典场景就是路径适配。你肯定遇到过:前端或是客户端发出的请求是一个路径,但后端服务实际监听的却是另一个。比如,客户端发起的是` api v1 users`的请求,而后端只有` users`这个接口在等着。这种前后端路径不匹配,
本文,我们分析了分布式系统和微服务架构,虽然都涉及到多个独立的组件协同工作,但两者的侧重点和应用场景存在显著差异。分布式系统更关注资源的分布与任务的分解,强调系统的整体高可用性和可靠性;而微服务架构
随着服务规模扩张,对人工定义策略、配置及运维阈值的依赖也日益加深。但庞大的规模也必然伴随更精简的自动化机制以避免瓶颈。于是新的问题来了:是否存在足够自主的智能体接掌运维重任,以保证微服务真正实现自我
随着数据量、并发量、业务复杂度的增长,互联网架构会出现一些问题,“服务化”是一个很好的解决上述痛点的方案。又有童鞋问我说,那微服务架构多“微”才合适? 《微服务架构的六大好处》中提到,随着数据量、并
罪名?我把一个叫 “Billing-Quotes” 的、波澜不惊的 Java 微服务(13 个上游)用 Rust 重写了。p95 更瘦了、CPU 更冷静、内存更低,基础设施账单开始像小冰箱数字那样往
热门专题
热门推荐
过去24小时全球主要交易所比特币流向分化明显,整体净流出5740 82枚。其中CoinbasePro流出约5457枚,币安、Gemini分别流出1023枚和504枚;而OKX则逆势录得约530枚净流入。
《魔力宝贝》中“狗洞”即“奇怪的洞窟”,位于亚留特村西南方向黄色传送石处,是12至20级玩家高效练级地点。前往路线为:从法兰城至伊尔村,向北进入哈巴鲁东边洞窟击败“熊男”,穿越后抵达亚留特村,再向西南探索即可找到入口。洞内怪物等级较高,建议携带“风地”属性水晶提升生存能力。
时隔七年,贾跃亭以CEO身份重掌法拉第未来(FF)帅印,并成功为公司注入了关键的发展动力。近期,FF累计完成了高达7000万美元的机构融资。这笔至关重要的资金,被贾跃亭定位为驱动公司机器人业务实现第一阶段战略目标的“核心粮草”。 随着资金与团队就位,贾跃亭的信心显著增强。他公开立下目标:将用两年时间
任务需修复两条水道。首先跟随指引找到NPC并进入幻境,使用号角对准壁画激活飞鸟幻影,触碰并跟随其路径即可修复第一条水道。第二条水道位于洞xue内,跟随萤火虫找到入口,重复使用号角并借助弹跳水母到达高处,跟随飞鸟完成修复。完成后可获得奖励并推进剧情。





