【架构实战营】模块六作业
拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。
1. 微服务拆分方式
由于是从 0 开始做小程序电商业务,所以采取按业务拆分微服务。
电商业务一般包括商品、会员、库存、支付、物流、客服、订单、退换货、评价、营销等模块。目前有 25 个后端开发,按照三个火枪手原则,将业务拆分为 8 个微服务比较合适,具体如下:
商品服务、会员服务、库存服务、支付服务、物流服务、客服服务、订单服务、营销服务
拆分后的系统架构图如下:

2. 微服务基础设施选型
由于后端开发人员全部使用 Java 语言,且是 30 人的开发团队,所以可以考虑嵌入 SDK 的微服务框架模式,例如 Dubbo、Spring Cloud,无额外的维护工作,且天然支持高性能、高可用。
通过以下的比较可以看出,Dubbo 的定位是一款 RPC 框架,而 Spring Cloud 的目标是微服务架构下的一站式解决方案,相比于其他框架,Spring Cloud 对微服务周边环境的支持力度最大。对于中小企业来讲,使用门槛较低。
所以这里选择使用 Spring Cloud 作为的微服务框架。

服务接入层
使用 Spring Cloud Zuul 作为服务网关
使用 Hystrix 实现限流、熔断等
服务运行层
使用 Eureka 实现服务注册和服务发现
使用 Hystrix 实现服务容错
技术支撑层
使用 Hystrix-dashboard 和 Turbine 进行服务监控
使用 Spring Cloud Sleuth 和 Zipkin 进行服务跟踪
基础设施层
使用 Spring Cloud Config 进行分布式配置
评论