目录
一、总结
1.1 架构图
1.2 包含的微服务
1.2.1 网关微服务
1.2.2 授权中心微服务
1.2.3 购物车微服务
1.2.4 评论微服务(新增)
1.2.5 配置中心微服务
1.2.6 页面详情微服务
1.2.7 后台管理微服务
1.2.8 订单微服务
1.2.9 Eureak注册中心
1.2.10 搜索微服务
1.2.11 秒杀微服务(新增)
1.2.12 短信微服务
1.2.13 文件上传微服务
1.2.14 用户中心微服务
1.3 源码
1.4 sql文件
二、不足
三、TODO
架构图
不管是来自于客户端(PC或移动端)的请求,还是服务内部调用。一切对服务的请求都会经过Zuul这个网关,然后再由网关来实现 鉴权、动态路由等等操作。Zuul就是我们服务的统一入口。
配置
服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制
等功能。为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
主要功能
身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不相符的请求。(对jwt鉴权)
动态路由:动态地将请求路由到不同的后端集群。
负载均衡和熔断
结合RSA的鉴权
授权中心的主要职责
功能需求
放入数据库
放入redis(采用)
流程图
这幅图主要描述了两个功能:新增商品到购物车、查询购物车。
新增商品:
判断是否登录
是:则添加商品到后台Redis中
否:则添加商品到本地的Localstorage
无论哪种新增,完成后都需要查询购物车列表:
判断是否登录
否:直接查询localstorage中数据并展示
是:已登录,则需要先看本地是否有数据,
有:需要提交到后台添加到redis,合并数据,而后查询
否:直接去后台查询redis,而后返回
功能需求
表结构设计
parent和isparent字段是用来实现评论嵌套的。
实现
使用MongoDB存储评论,基本的CRUD。
需求
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloudconfig ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。
使用SpringCloudBus来实现配置的自动更新。
组成结构
在spring cloud config 组件中,分两个角色,一是config server,二是config client。
Config Server是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环境下的配置,默认使用Git存储配置文件内容,也可以使用SVN存储,或者是本地文件存存储
Config Client是Config Server的客户端,用于操作存储在Config Server中的配置内容。微服务在启动时会请求Config Server获取配置文件的内容,请求到后再启动容器
实现
创建配置中心,对Config Server进行配置,然后在其它微服务中配置Config Client。最后使用Github上的Webhooks进行配置的动态刷新,所以还要使用内网穿透工具,同时要在配置中心中添加过滤器,因为使用Webhooks提交请求时会加上一段Payload,而本地是无法解析这个Payload的,所以要将它过滤掉。
商品详情浏览量比较大,并发高,所以单独开启一个微服务用来展示商品详情,并且对其进行静态化处理,保存为静态html文件。在用户访问商品详情页面时,让nginx对商品请求进行监听,指向本地静态页面,如果本地没找到,才反向代理到页面详情微服务端口。
主要是对商品分类、品牌、商品的规格参数以及商品的CRUD,为后台管理提供各种接口。
主要接口有:
基本架构
主要功能就是对各种服务进行管理。
主要是对Elasticsearch的应用,将所有商品数据封装好后添加到Elasticsearch的索引库中,然后进行搜索过滤,查询相应的商品信息。
主要接口有:
秒杀的实现及其优化:
前端:秒杀地址的隐藏、使用图形验证码
后端:接口限流,使用消息队列,调用订单微服务执行下单操作。
TODO:需要改进~~~~~~~~~~~~~!!!!!!!!!!!!!
因为系统中不止注册一个地方需要短信发送,因此将短信发送抽取为微服务:leyou-sms-service
,凡是需要的地方都可以使用。
另外,因为短信发送API调用时长的不确定性,为了提高程序的响应速度,短信发送我们都将采用异步发送方式,即:
使用分布式文件系统FastDFS实现图片上传。
FastDFS架构
FastDFS两个主要的角色:Tracker Server 和 Storage Server 。
上传流程
下载流程
提供的接口:
乐优后台:https://github.com/lyj8330328/leyou
乐优门户:https://github.com/lyj8330328/leyou-portal
乐优后台管理:https://github.com/lyj8330328/leyou-manage-web
乐优集中配置:https://github.com/lyj8330328/leyou-config
https://download.csdn.net/download/lyj2018gyq/10870518
2.1 没有进行优化
2.2 数据库读写分离
2.3 前端混乱
3.1 秒杀系统重构
在学习完并发编程后~
3.2 项目部署