第九期 - 模块六
拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。
【需求分析】
从 0-1 建设一个满足电商业务的微服务系统,因此可以按业务拆分微服务,搭建完善基础设施,按照微服务基础设施优先级逐步落地。一步到位
后端团队全是 java 开发,30 人,因此微服务框架可以从 spring boot 或者 dubbo 选择
【微服务拆分】
先按业务流程拆分服务
对于 C 端包括用户登录小程序后,商品浏览,交易下单,支付,物流配送
对于 B 端包括店铺管理、商品库存、订单处理、物流配送等
对于 M 端包括与商家结算、财务等
因此初步拆分微服务模块包括
用户服务:负责用户的信息管理、会员、订单、物流等
商品服务:包括商品信息、库存等
交易服务:包括订单、支付、和下游配送等
商家服务:包括店铺、商品等
再次按质量属性拆分服务
按业务重要程度、性能拆分:根据相似电商业务的请求量情况,商品服务、交易服务通常业务请求量大、业务复杂;因此继续拆分:
商品服务中库存复杂度高(可能包括一些促销、活动等),商品详情页访问量高(下单入口),拆分成两个
交易服务中:包括下单、调用支付、订单管理、调用配送流程复杂,其中调用支付、配送可能接第三方平台,存在多平台适配、降级管理等逻辑,因此拆分出订单管理(负责记录订单状态、调用商品服务扣减库存、适配物流平台对接物流订单),下单支付(负责锁定商品库存、支付回调、生成订单等)
根据三个火枪手原则,因此整体系统架构图如下:
其中前端:2 个同学开发小程序,3 个开发对应的用户、商家、CRMweb 对应的 H5
后端:交易 6 个同学负责订单管理、下单支付 2 个服务:商品 9 个同学,负责商品信息、库存、促销 3 个服务;用户、商家、CRM 分别 3 个同学负责开发对应业务服务,还有 1 个同学负责底层基础设施及框架、SDK 适配、可观测性开发等
【基础设施选型】
由于后端同学全部 java 开发、且业务初期服务量并不大,因此选用嵌入式 SDK 模式,维护成本比较小、同时满足高可用、高性能;
同时框架选择 Dubbo 作为服务框架,内部通过 rpc 通信提升安全与访问性能;
评论