转载请标注原文地址:https://blog.csdn.net/lilyssh/article/details/82753318
电商平台微服务架构设计
按照孢子框架要义对电商平台进行微服务架构设计。假设我们设计的目标是简易版淘宝。
1. 需求分析
由于主要是学习技术,所以没对业务规划得过于详细和全面。大的功能分为三个,用户、商品、订单。主要需求如下:
分类 | 功能 | 质量 |
---|---|---|
前端首页 | 注册 | 及时响应、安全性 |
商品展示 | 及时响应、搜索引擎优化 | |
商品搜索 | 及时响应、搜索引擎优化 | |
秒杀购买商品 | 及时响应、安全性、可靠性 | |
用户中心 | 我的订单 | 及时响应、安全性 |
2. 系统分析
要将需求进行系统分析,还需要有企业的运营目标做支持。假设我们运营目标是:
- 用户量:3000万
- 网站日访问量:3000万PV
- 商品购买并发:1000 QPS
我们按照上面的需求进行系统分析,首先按大的职责将职责相同的划分为一个服务。并且有了上面这个运营目标,所有功能需求都需要增加一项“质量”特性,那就是“高并发”,高并发会影响到所有设计。安全性和可靠性也会直接影响功能的技术实现,但并没有并发性影响性大。深入分析职责后把每一种功能的实现关键技术列出,如下:
分类 | 需求 | 实现子系统及服务 | 实现技术(软硬件结合) |
---|---|---|---|
前端首页 | 商品展示、商品搜索 | 商品系统 | 集群部署、高速缓存、分布式缓存、搜索引擎技术、静态化 |
秒杀购买商品 | 订单系统 | 集群部署、消息队列、实时计算 | |
用户中心 | 我的订单 | 订单系统 | 集群部署 |
如上所述,要支持运营目标的电商平台,可以分为大小几个服务和子系统。系统划分的依据一方面是职责,一方面跟实现技术有关,同一职责下实现技术不同会被划分为两个服务,比如购买商品和商品展示原本属于同一个大的领域,但其因为实现技术和质量要求不同需要划分为两个模块。这是因为微服务和传统SOA最大的区别就是技术实现的个性化,只有个性化才能做好做专,并节省成本。用户购买产品产生订单相关数据,订单数据关系到商品和用户两方面,如果是超高并发的系统,用户购买行为需要单独的服务。
3. 逻辑架构
逻辑视图采用以下方法建立。
按照职责、通用性、技能及工作量综合考虑和计量,平台逻辑架构设计如下图:
用户通过终端层发起请求,请求经由网关层nginx,路由到业务层,业务层通过业务逻辑判断,再访问数据访问层,数据访问层再通过数据库层获取到想要的内容。
- 使用kafka,可优化下单性能,可以处理秒抢,或者异步处理一些事情,如送下单后优惠券。
- 使用Elasticsearch,可优化商品查询,商品一般数据量比较大,用户经常模糊查询,近义词要能查出来,且要求及时响应,Elasticsearch