基于主链路规划策略实现微服务升级改造

原创作者:田超凡(程序员田宝宝)
版权所有,引用请注明原作者,严禁复制转载

++最近项目上架构升级改造比较忙,更新频率放缓,敬请谅解!++

主链路规划基本概念

主链路指的就是保证业务可用性的核心链路,那什么样的业务场景才能够入围核心链路呢?

如果我们拿出一个复杂的业务系统,把其中所有的业务场景铺开来,评选出哪些场景是"核心链路",再按重要程度排个序,一时还真不知道如何下手。

如果能有一套易用的理论模型,就可以帮助我们在纷繁复杂的业务场景中精准识别那个业务线其中的主链路,通过积累的大量基于DDD改造微服务项目的理论知识,借鉴其他在长期实践中积累的经验,我总结了主链路的4个特征,可以快速准确地把握和梳理、甄别业务线子域的核心链路。这4个特征分别是:

业务强完整性

转化率重要因子

流量端高占比

现金水仓

如果一个业务场景模块具备其中一个特征,它就是该业务子域的主链路服务之一。

主链路四大特征

1 业务强完整性

比如在电商系统下单场景中,用户必须最少经过商品搜索、查看详情和一键下单这三个步骤才能完成一个完整的下单流程,其中任何一个步骤出现故障都无法保证下单链路的"业务强完整性"。

如果某个关键链路是保证业务强完整性的必要环节,那么它应该被选为核心主链路中的一员。反例,在下单场景中,查看商品评论是一个辅助功能,即便出现了故障,也并不会对下单链路的业务强完整性造成明显的影响,所以就应该被排除在主链路之外。

2 转化率重要因子

有一些业务场景,它们并非是保证业务强完整性的必要条件,看似无关紧要,但是对业务转化率有重大影响,这类场景其实也应该纳入主链路规划中。

比如人们在电商平台买东西的时候通常会先看一下商品长什么样子再决定是否下单,大多数电商平台的商品图片都加载自"文件资源服务",如果图片资源服务发生了故障,一定会大幅降低订单转化率。试想网购如果连图片都看不到,没有人敢贸然下单吧,这时必然会影响到下单业务的转化率。

所以,在做主链路规划的时候也要把这类对业务转化率有重要影响的关键链路包含进去。

3 流量端高占比

在主链路规划中我们要参考各个链路和导流端的用户流量分布,将流量占比高的链路划分为主链路的一环。

4 现金水仓

现金水仓是公司业务运转的源动力,比如在电商和新零售系统中,正向现金业务的故障通常会被定级为重大资损事件。因此,我们在做主链路规划的过程中,需要将现金水仓类业务划归到主链路,保护现金流不受影响,通过对现金水仓服务重点实施一系列服务保护策略,考虑各种容灾backup,可以最大限度避免重大资损事件发生的可能性。

恰如其分地应用主链路规划策略

按照程序员的思维,我们总习惯从"功能性"的角度对微服务做切分,比如营销计算就是一个功能,不管用在什么场景,我把所有计算优惠的场景都放到一个微服务里,这个视角其实是比较片面的。当基于DDD领域驱动来对应用场景做进一步拆分的时候,就会发现同一个"功能"在不同场景下的重要性是不一样的,这样就可以更精准的识别主链路服务。

在微服务架构中,主链路规划再好也不能滥用,要活学活用主链路规划的理论,不能生搬硬套,更不要为了主链路而主链路。

如果应用本身并不复杂,也没有多少用户,那么硬生生套用主链路规划把后台服务拆的零零散散,这其实是浪费精力。只有当业务达到一定复杂度和集群规模之后,主链路规划才能发挥它真正的作用。

相关推荐
麦聪聊数据13 小时前
利用SQL2API模式重构微服务中的数据查询层
数据库·sql·低代码·微服务·架构
九皇叔叔15 小时前
【03】微服务系列 之Nacos 注册中心(服务注册)
java·微服务·nacos·架构·注册中心·服务注册
what丶k17 小时前
微服务稳定性守护者:Sentinel 全面使用指南(从入门到企业级落地)
微服务·架构·sentinel
九皇叔叔17 小时前
【04】微服务系列 之 Nacos 注册中心(服务发现)
java·微服务·nacos·服务发现
猿小羽18 小时前
领域驱动设计(DDD)在电商系统中的架构落地指南(含中英术语对照与图表)
微服务·架构·ddd·领域驱动设计
小信丶18 小时前
@Activate 注解详解:应用场景与实战示例
java·spring boot·后端·spring·spring cloud·微服务·dubbo
未来之窗软件服务19 小时前
商业应用(3)建材城商铺租赁管理系统—东方仙盟练气期
大数据·微服务·架构·商业应用·仙盟创梦ide·东方仙盟
编程彩机19 小时前
互联网大厂Java面试:从Spring MVC到微服务架构场景解析
java·spring cloud·微服务·分布式事务·spring mvc
夜月蓝汐19 小时前
若依微服务版集成阿里云oss
java·阿里云·微服务
编程彩机19 小时前
互联网大厂Java面试:从Spring Boot到微服务的技术场景解读
spring boot·微服务·消息队列·java面试·分布式系统