架构实战营 - 模块六作业
拆分电商系统为微服务
【背景】
假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员 全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你设计微服务拆分的架构以及微服务 基础设施选型。
【作业要求】
需要明确服务拆分思路,并且将拆分后的系统架构图画出来;
需要明确微服务基础设施选型思路,并选择一个微服务框架;
用 1~2 页 PPT 即可。
【提示】
1. 需要应用三个火枪手原则; 2. 需要选择拆分方式;3. 需要选择微服务框架的模式。
------------------------------------
一、题目分析
1.首先小程序类型的电商项目一般都是 B2C 的电商项目,市面上目前没有见过 C2C 的微信电商项目
2.题目中没有说明公司背景,因此我就依据常理推算应该是要做一个直接面对 C 端的电商项目,而不是一个平台化的项目。
3.项目中的人员配置不太合理如果是我来带这个项目我会调整项目的人员增加前端开发人员的数量,增加前端开发人员的数量,因为微服务的架构下需要彻底的前后端分离,因此工作量将大幅增加在这个项目中 5 个前端明显不够。
二、微服务拆分思路
1.我的设计思路为将微服务拆分为:门户、商品、订单、物流、会员、促销、广告、基础、运营共 9 个服
2.每个服务具体负责功能
a.门户:首页的数据展示,以及各种消息提醒,个人中心中的统计数字等。
b.商品:就是商品的展示以及库存等跟商品直接相关的部分
c.订单:订单的一系列处理下单购买、对接微信支付、退换货等
d.物流:用户的地址簿、运费计算、物流跟踪数据的同步
e.会员:用户数据部分注册会员中心
f.促销:优惠活动、优惠券
g.广告:内置的各种广告位广告、以及商品推荐
h.基础:一些小的基础服务,比如短信、小程序消息模版、值集等
i.运营:后台管理服务
3.因为项目处于初创阶段,并且配合团队的规模因此我将整个部分拆为 9 个微服务,并将开发团队拆分为 4 个团队,每个团队负责 2-3 个微服务。每个团队保持 6-8 个人
a.商品、订单一个团队。
b.门户、广告、基础一个团队。
c.会员、物流一个团队。
d.促销、运营一个团队。
三、基础设施选型
a.数据库:mysql、redis
b.开发框架:SpringBoot
c.网关:SpringCloud Gateway
d.配置中心、注册中心:nacos
e.RPC 框架:feign
f.分布式事务:hmily
g.消息队列:kafka
h.日志收集:SpingCloud Sleuth
I.熔断:Hystrix
h.部署:docker
i.负载均衡:nginx
版权声明: 本文为 InfoQ 作者【Alex.Wu】的原创文章。
原文链接:【http://xie.infoq.cn/article/27b439d43f655fb577256e9fa】。未经作者许可,禁止转载。
评论