写点什么

架构实战训练营 - 模块六课后作业

用户头像
Johnny
关注
发布于: 1 小时前

【背景】

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


发布于: 1 小时前阅读数: 5
用户头像

Johnny

关注

种一棵树最好的时间是十年前,其次是现在。 2018.05.05 加入

关注微服务、架构等

评论

发布
暂无评论
架构实战训练营 - 模块六课后作业