写点什么

第九期 - 模块六

作者:wuli洋
  • 2022-11-13
    北京
  • 本文字数:889 字

    阅读完需:约 3 分钟

拆分电商系统为微服务

【背景】

假设你现在是一个创业公司的 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 通信提升安全与访问性能;


用户头像

wuli洋

关注

还未添加个人签名 2019-12-07 加入

还未添加个人简介

评论

发布
暂无评论
第九期 - 模块六_wuli洋_InfoQ写作社区