架构实战营 4 期 - 模块 6 作业
作业要求
拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。
【作业要求】
1. 需要明确服务拆分思路,并且将拆分后的系统架构图画出来;
2. 需要明确微服务基础设施选型思路,并选择一个微服务框架;
3. 用 1~2 页 PPT 即可。
【提示】
1. 需要应用三个火枪手原则;
2. 需要选择拆分方式;
3. 需要选择微服务框架的模式。
微服务拆分
拆分原则
按照此表,由于是从 0 开始构建的业务系统,所以拆分方式为:
1、按业务拆分微服务
2、搭建完善基础设施,按照微服务基础设施优先级逐步落地
3、一步到位
微服务粒度
根据“三个火枪手”原则,团队共 25 个后端,那么可以划分为 8 个微服务
由于电商业务是比较成熟的,并不是新兴业务,所以可以参考业内其他案例,比如淘宝天猫
这里将微服务划分为:会员服务、店铺服务、商品服务、库存服务、订单服务、财务服务、物流服务、营销服务。
基础设施选型
基础设施选型方向
由于属于起步业务,整体规模不会太大,因此采用嵌入式 SDK 的方式
根据此图指导,由于团队全部都是 Java 开发,而且并没有 RPC 的要求,本着“遇事不决找 Apache,spring”的思路,加上 springcloud 提供了完备的一套微服务基础设施,最终我们可以选择 springcloud
基础设施产品选型
既然我们选择了 springcloud,那么我们就可以以 spring 全家桶为主,没有相关产品可以采用 Alibaba 系列组件,再根据基础设施优先级,采用以下产品:
网关:springcloud gateway
远程调用:openFeign
负载均衡:LoadBalancer(openFeign 内置 LoadBalancer)
配置中心:Apollo(个人感觉 Apollo 比 springcloud config 好用)
限流容错:Resilience4j
链路跟踪:skywalking
服务治理:Consul
分布式事务:Seata
消息队列:RocketMQ
服务监控:prometheus & Grafana
评论