拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。
【分析】
因为是从 0 开始做一个小程序电商业务,所以:
拆分方式按照【业务拆分】微服务
基础设施要求:搭建【完善】基础设施,按照微服务基础设施优先级逐步落地
服务拆分落地方式:【一步到位】
业务边界划分:由于没有技术专家,电商不是全新的业务,所以可以参考业界实现来拆分微服务
基于 3 个火枪手原则,25 个后端可以维护 25/3=8 个微服务,所以微服务拆分成 8 个
参考阿里的订单中心、会员中心、库存中心、店铺中心、商品中心、财务中心、仓储物流、会计结算,所以拆分成以下 8 个微服务:
基础设施选型
后端开发人员【全部都是 Java】,暂不考虑支持 RPC,而且【微服务集群规模不大】,因此微服务框架选择嵌入 SDK 式中的 Spring Cloud。
服务运行层
使用 Eureka 实现服务注册和服务发现。
使用 Feign 做远程服务调用和服务路由以及负载均衡。
服务接入层
使用 Spring Cloud Gateway 作为服务网关。
使用 Hystrix 实现服务容错,以及限流、熔断等。
基础设施层
选用 Spring Cloud Config+SpringCloudBus 做配置中心。
消息队列使用 rocketmq
分布式锁依靠 redis 实现。
日志中心选用 ELK 方案。使用 Canal 将 Mysql 中的数据实时同步到 ES 中,再由 ELK 进行相关处理。
技术支撑层
容器使用 docker。
编排使用 k8s
分布式事务选用本地事务消息,简单容易实现。
自动化部署:Jenkins。
监控工具使用 Promethus。
服务跟踪选用 Zipkin
架构图:
评论