架构实战营模块六作业
拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全
部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础
设施选型。
【作业要求】 1. 需要明确服务拆分思路,并且将拆分后的系统架构图画出来; 2. 需要明确微服务基础设施选型思路,并选择一个微服务框架。
【提示】 1. 需要应用三个火枪手原则; 2. 需要选择拆分方式; 3. 需要选择微服务框架的模式
1.微服务拆分
因为是创业团队,所以选择按业务拆分微服务,然后搭建基础设施逐步落地。新团队如果有业务专家,可以由专家进行业务拆分,没有的话,如果是新业务,可以由粗到细进行拆分,电商作为成熟业务可以参照业界进行划分。后端开发 25 个,平均 3 个人负责一个微服务,根据三个火枪手原则,选择一对一拆分,一共拆分出 6 个微服务,业务拆分如下图。
2.微服务框架选型
团队开发语言全部为 JAVA,为了减少运维工作量,同时获得高性能和高可用,采用成熟的嵌入式 SDK 方式,具体而言采用 spring cloud。因为是新业务,所以流量不会太大,所以用不到 RPC;且可能使用粗粒度的渐进式的方式拆分,所以可以优先考虑 springcloud;当流量增大,业务越来越多,应用也越来越多,应用与应用相互关联调用,发现有些功能已经不能简单划分开,此时可能就需要用到 RPC,这时可以考虑使用 dubbo。
3.微服务基础设施
由于业务部分拆分完后是 6 个服务,那么 25 个人中使用了 18 人,还剩下 7 个人可以进行基础设施的开发与维护。但是由于业界的基础设施已经成熟,所以可以直接采用开源方案进行使用,那么就省略的研发工作,只剩下环境的搭建,使用以及维护工作。创业型的公司,业务规模不可测,预算有限,选择微服务核心基础设施;服务运行层,服务注册,发现,路由,容错;服务接入层,网关,降级,安全,流控;
容器化都选用 k8s+docker,技术框架可以采用 springcloud 全家桶系列 +其他组件,服务监控直接 promethues+granfana,日志服务采用 ELK ,链路追踪使用 Skywalking。
评论