架构实战训练营 - 模块六课后作业
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务基础设施选型。
【作业要求】
- 需要明确服务拆分思路,并且将拆分后的系统架构图画出来; 
- 需要明确微服务基础设施选型思路,并选择一个微服务框架。 
【提示】
- 需要应用三个火枪手原则; 
- 需要选择拆分方式; 
- 需要选择微服务框架的模式。 
一、微服务拆分的架构
1、微服务拆分的思路
微服务拆分可以按照业务和质量拆分的思路,但电商业务属于比较成熟的领域,可以直接参考业界的一些拆分方式。由于是创业公司,一开始不需要拆分的很细,可以采用粗粒度+演进的方式。题目中有 25 个后端,可以采用多对一或者一对一的方式。关于服务的粒度,根据三个火枪手原则,3 个人维护一个微服务。
1.1、多对一的方式
关于人员的分配:
1、微服务团队(后端 3*4=12 人):
3 个人(三个火枪手原则)为一组,维护一个微服务(服务中心)。
- 用户中心(包括会员、商户等) 
- 交易中心(包括订单、支付等) 
- 商品中心(包括商品、库存等) 
- 其他服务中心(剩下的一些没有归属的服务) 
2、业务团队(前端 5 人、后端 13 人):
包括前台和后台的前后端业务逻辑实现(后端主要是基于微服务实现多变的业务逻辑)。
1.2、一对一的方式
关于人员的分配:
1、微服务团队 :
3 个人(三个火枪手原则)为一组,维护一个微服务。大概是分成 7*3 人 = 21 人,多出来的人去其他服务组。
- 会员 
- 商户 
- 订单 
- 支付 
- 商品 
- 库存 
- 其他服务(剩下的一些没有归属的服务) 
2、前端 5 人:
包括前台和后台的所有前端部分的实现。
2、微服务总体架构图
 
 二、微服务基础设施选型
1、微服务框架模式
因为团队技术栈统一语言 Java 的话和结合团队规模(30 人左右),微服务框架模式用嵌入 SDK 就可以了,不必用反向代理或者网络代理。
2、微服务框架选型
用 java 技术开发微服务,比较主流的选择有:Spring Cloud 和 Dubbo。
这边选择 Spring Cloud 作为微服务框架,虽然 Dubbo 支持 RPC 调用,服务之间的调用性能会很好,但是只是微服务的一个子集,一个子框架。而 Spring Cloud 是一个微服务的全家桶,也可以说是微服务生态,功能齐全,社区维护也积极。
具体的技术框架选择
(1)服务治理
- 服务注册和发现:Netflix Eureka。(其他的备选:consul,etcd,zookeeper 等) 
- 断路器:Hystrix 
- 调用端负载均衡:Ribbon 
- REST 客户端:Feign 
(2)网关
- API 网关:Zuul 
(3)分布式链路监控
- Spring Cloud Sleuth:埋点和发送数据。(其他的备选:zipkin,pinpoint,skywalking,jaeger 等) 
(4)消息组件
- Spring Cloud Stream 
- Spirng Cloud Bus 
(其他备选:消息中间件的其他软件:RocketMQ,Kafka,RabbitMQ 等)
(5)配置中心
- Spring Cloud Config(其他的备选:Apollo,Nacos 等) 
(6)安全控制
- Spring Cloud Security 
版权声明: 本文为 InfoQ 作者【Johnny】的原创文章。
原文链接:【http://xie.infoq.cn/article/b02cde039047047ccfb6a4a82】。未经作者许可,禁止转载。












 
    
评论