写点什么

拆分电商系统为微服务

作者:闲人Eric
  • 2023-01-15
    上海
  • 本文字数:665 字

    阅读完需:约 2 分钟

【背景】

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


架构图:


用户头像

闲人Eric

关注

还未添加个人签名 2018-04-25 加入

还未添加个人简介

评论

发布
暂无评论
拆分电商系统为微服务_#架构实战营_闲人Eric_InfoQ写作社区