架构实战训练营 - 模块六课后作业
【背景】
假设你现在是一个创业公司的 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】。未经作者许可,禁止转载。
评论