写点什么

架构实战营 4 期 - 模块 6 作业

作者:木几丶
  • 2022 年 1 月 30 日
  • 本文字数:788 字

    阅读完需:约 3 分钟

作业要求

拆分电商系统为微服务

【背景】

假设你现在是一个创业公司的 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

系统架构



用户头像

木几丶

关注

还未添加个人签名 2021.01.20 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营4期-模块6作业