架构训练营 week6 作业
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员
全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务
基础设施选型。
分析:
后端语言全部是 java,那么在微服务框架的模式里,就确定选择嵌入式。
从 0 开始做一个业务,那么拆分的思路就可以选择按业务进行拆分,并且一步到位;基础设施可以搭建完善的基础设施,并且按照优先级逐步落地;
电商业务的模块主要有 6 个:商城、商品、库存、订单、财务、用户。为了便于管理,再加上一个管理后台的服务。
人员分配方面,按照三个火枪手的原则,一个微服务分配 3 个人,那么上述的六大模块加上后台管理模块,一共 7 个模块,共需 21 个后端,剩余 4 人共同搭建微服务的基础设施。而 5 个前端的分配可以是:3 人负责电商商城的前端(小程序)开发(包括商城界面、商品搜索、商品详情、购物车、订单、个人中心等),2 人负责管理后台页面(Web)的开发
基础设施方面,由于是创业公司,就不要自己重新造轮子搭建所有的基础设施了,上阿里云可以搞定服务接入层、技术支撑层的大部分设施。
服务网关用阿里的 SLB,服务流控和服务降级用开源的 Sentinel 来搞定
容器编排和自动化部署可以用阿里云的 k8s,服务监控有阿里云自带的监控,服务跟踪可以用自己搭建的 skywalking。
服务运行层里的内容需要自己搭建:包括服务注册、服务发现、服务路由可以用 nacos 来做,而服务的调用,则可以用 springcloud 的 open Feign 或者 dubbo,个人觉得 open Feign 可能用起来更简单,虽然是 http 协议的,更上层,但是一开始的用户规模,这个应该不会有性能问题
配置中心可以用 nacos,日志中心可以用阿里云的 SLS,分布式锁用 redis 来实现,消息队列也可以用阿里云的 RocketMq,它还支持多种消息队列模式,包括事务消息、顺序消费等。
基础设施架构图
整体架构图
版权声明: 本文为 InfoQ 作者【红莲疾风】的原创文章。
原文链接:【http://xie.infoq.cn/article/f3fbf013e7751e37d065002b0】。未经作者许可,禁止转载。
评论