架构实战 - 模块六
拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。
【作业要求】 1. 需要明确服务拆分思路,并且将拆分后的系统架构图画出来; 2. 需要明确微服务基础设施选型思路,并选择一个微服务框架。
【提示】 1. 需要应用三个火枪手原则; 2. 需要选择拆分方式; 3. 需要选择微服务框架的模式
1.现状概括
决策者:创业公司 CTO
开发者:前端 5 人;后端 25 人(Java)
项目:小程序电商业务系统;微服务架构(如何拆分和技术选型)
2.决策思路
针对现状概括的几点,项目是从 0 到开始构建的业务系统,首先要分析出电商业务有哪些模块(会员、店铺、供应商、商品、库存、营销、权益、购物车、订单、支付、物流、采购、财务和结算等),知道后续具体要做哪些电商业务功能;再结合目前人力资源分配情况再决定做服务拆分和技术选型,前后端配比是 1:5,可安排 1 个前端和 4 个后端比例分组,负责各自服务模块的研发、测试和部署工作,根据人数来看,可分 5 个研发团队,每个团队 1+4=5 人,另外还有 5 人主要负责基础组件、中间件、框架换和基础设施的建设。
2.1.服务模块拆分
目前研发团队分为五组,可将业务系统也对应拆成五大服务模块(会员、交易、供应链、物流、财务)
2.2.微服务技术选型
基于后端技术工种全是 Java,微服务框架可考虑嵌入 SDK 方式;不必像反向代理和网络代理那样还需要专门抽出资源负责代理服务;一贯流行的 Dubbo 和 GRPC,虽然性能优越,但基础功能扩展比如限流降级,系统监控生态对接,都不是很友好,所以根据下面图谱,选择 Springclooud 框架最合适。
2.3 基础设施方案
基于上面技术分析,选择 SpringCloud 框架,网关选用:Springcloud gateway;限流降级和使用 hystrix 和 Alibaba sentinel;配置中心和服务注册订阅中心可以考虑 Nacos。
由于微服务开发体系,具有敏捷快速迭代,业务变化演进的特点,就需要考虑持续集成基础设施支撑,最流行 k8s 容器化生态。如果选用 k8s,面临另一个选型:如果不用服务订阅注册 Feign ribbon 调用方案,可直接考虑 k8s 提供的 service 路由负载均衡也不失一个好方案。
本项目研发技术以 Java 为主,中间件功能使用可采用 Springboot 生态组件 SDK 快速实现对接(比如:redis、rocketmq、mysql 等)。
评论