电商微服务
【服务拆分】
因为业务是从 0 开始建设,按“业务维度”进行微服务拆分,按优先级逐步搭建完善的基础设施,采取一步到位的方式是最合适的。
从业务维度来考虑电商系统的话,大致可以分为如下几个业务域:
商品、订单、库存、营销、物流、供应链、购物车、支付、搜索、评价、会员、店铺
接下来还要根据团队规模及使用三个火枪手的原则来预估最佳微服务粒度:25/3=8 个左右
目前分析出的领域已经超过预估的微服务最佳粒度了,所以我们要对部分领域进行合并,原则就是业务关联性和相似性:我们把购物车、库存、订单合并为交易域;店铺、商品、搜索合并为商品域。
最终微服务拆分结果如下:
商品、交易、支付、营销、会员、物流、供应链、评价
【基础设施】
基础设施选择:后端人员都是 Java 语言,技术栈比较统一,考虑采用嵌入式 SDK。业界目前比较成熟、应用比较广泛、生态比较丰富、治理组件比较完善的开源微服务框架当属 Spring Cloud,而 Spring Cloud 部分组件停止维护如 Eureka、Hystrix。相比较而言 Spring Cloud Alibaba 社区活跃,热度较高,在 Spring Cloud 的基础上进行了增强,如 sentinal,nacos,seata 等。
所以最终选型 Spring Cloud Alibaba 作为基础设施,具体选型如下:
注册中心:Nacos
配置中心:Nacos
微服务网关:Spring Cloud Gateway
服务调用:Open Feign
分布式事务:Seata
流控:Sentinel
负载均衡:Ribbon
在此基础上可以逐步完善,引入服务监控、链路跟踪等治理技术,选取目前主流开源的框架:
监控:Prometheus
链路追踪:Skywalking
【系统架构】
根据上述服务拆分及基础设施选择,整理后总结如下:
最终的系统架构如下图所示:
版权声明: 本文为 InfoQ 作者【intelamd】的原创文章。
原文链接:【http://xie.infoq.cn/article/cbe1f1aeaedc740717faaecd3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论