分布式秒杀电商-微服务架构图 上帝视角分析
整个项目采用前后端分离开发,外网部署前台项目、内网部署后台项目。本文以客户使用客户端访问网站,向后台发送请求这一条线索对上图进行分析。
文章目录
- 一、Nginx集群→API网关
- 二、API网关→服务模块
- 1.Ribbon实现负载均衡
- 2.Sentinel进行熔断降级
- 三、服务模块对请求进行处理
- 四、数据存储解决方案
- 1.存储数据
- 2.消息队列
- 3.全文检索
- 4.OSS云存储
- 五、日志管理
- 六、注册中心&配置中心
- 七、服务追踪
- 八、持续集成&持续部署
一、Nginx集群→API网关
请求首先到达Nginx集群
,并由Nginx将请求转交给API网关
。
项目中使用SpringCloud Gateway技术作为API网关。
二、API网关→服务模块
第二步,API网关
拿到请求后进行认证授权,如果认证合法,就由API网关将请求动态路由到指定的业务模块
。
动态路由
:因为这条请求可能是调用商品服务、购物车服务、搜索服务、等众多服务中的一种,所以需要动态路由。
认证授权
:由网关进行。
1.Ribbon实现负载均衡
由API网关
将请求动态路由到指定的业务模块
时,如果该业务模块存在多个,就需要在业务集群中使用负载均衡技术进行统筹管理。
业务集群中使用
Ribbon组件
实现负载均衡。
2.Sentinel进行熔断降级
由API网关
将请求动态路由到指定的业务模块
时,如果某些服务出现问题,就需要在API网关中使用熔断降级进行管理。
API网关中使用
Sentinel组件
进行熔断降级。(该技术由 Spring Cloud Alibaba提供)
- 注:Sentinel组件在本项目中还实现了令牌限流的功能。
三、服务模块对请求进行处理
请求路由到服务模块后,服务模块对请求进行处理。
SpringBoot
:每个微服务模块都是使用SpringBoot技术进行编写。
远程调用
:使用SpringCloud 的Feign组件
进行远程调用。(服务之间可能会有互相调用,如订单服务调用商品服务查询商品信息。)
OAuth2.0认证中心
:除了一般的登录,还使用OAuth2.0整合了社交登录。(额外判断了某些请求是否需要登陆后才能进行处理)
SpringSecurity
:使用SpringSecurity进行安全与权限控制。
四、数据存储解决方案
1.存储数据
服务处理请求时,免不了要使用数据库与缓存进行数据的存储
。
Redis集群
:使用Sentinel分片集群+Shard哨兵集群
进行缓存处理。
MySQL集群
:持久化数据使用MySQL集群,可以使用 读写分离 也可以使用 分库分表。
2.消息队列
模块集群中,服务模块与服务模块之间的通信,需要使用消息队列进行异步解耦,和分布式事务的最终一致性。
RabbitMQ集群
:使用RabbitMQ集群做消息对立,完成服务与服务之间的 异步解耦 、分布式事务的最终一致性。
3.全文检索
有些服务模块需要进行检索,如对商品信息进行检索。
ElasticSearch
:使用ElasticSearch进行检索。
4.OSS云存储
有些服务需要存储图片,视频等大文件,可以使用阿里云的对象存储服务OSS。
OSS:使用阿里云的对象存储服务OSS进行图片、视频的云存储。
五、日志管理
项目上线以后,为了快速定位项目中可能出现的问题,需要进行日志管理。
ELK
:使用ELK对日志进行处理。
LogStash
:使用LogStash搜集业务中的各种日志,将他们放入ES中。再使用Kibana可视化界面,从ES中检索出相关的日志信息。快速定位项目中的问题。
六、注册中心&配置中心
分布式系统中,由于每一个服务都可能部署在很多台机器,服务与服务之间要互相调用,这就需要指导彼此都在哪里。推荐将所有服务注册到注册中心,这样服务之间就可以从注册中心发现彼此。
每一个服务的配置众多,为了集中管理这些配置,也需要使用Nacos作为配置中心,这样,所有的服务都可以从配置中心中动态的获取其配置。
Nacos注册中心
:使用Nacos作为服务的注册中心。(该技术由 Spring Cloud Alibaba提供)
Nacos配置中心
:同样使用Nacos作为服务的配置中心。(该技术由 Spring Cloud Alibaba提供)
七、服务追踪
服务在调用期间,可能会出现问题。比如:...→订单服务→商品服务→库存服务→...
,可能某一个链路出现了问题,就需要对整个服务调用链进行追踪,查看哪里出现了问题,这就需要使用服务追踪。
使用
Sleuth+Zipkin+Metrics
进行服务追踪,将每一个服务的信息交给开源的Prometheus
进行聚合分析后,由Grafana
进行可视化展示。再通过Prometheus提供的Altermanager
实时得到服务的告警信息,以邮件或者短信的方式通知开发或运维人员。
八、持续集成&持续部署
项目发布时,由于微服务众多,每一个都打包部署到服务器上过于麻烦,使用持续集成与持续部署可以简化这些流程。
持续集成CI/持续部署CD
:开发人员可以将修改后的代码提交给Github,运维人员通过自动化工具Jenkins从Github中获取代码,将其打包成Docker镜像。最终使用k8s集成整个Docker服务。以服务Docker容器的方式来运行。
分布式秒杀电商-微服务架构图 上帝视角分析相关推荐
- 【架构】电商微服务架构图 -来源网络(非原创)
- 商城项目01 _电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图
文章目录 ①. 电商系统基本模式 ②. 分布式基础概念 ③. 微服务架构图详解 ④. 微服务划分图 ①. 电商系统基本模式 ①. B2C模式 就是我们经常看到的供应商直接把商品卖给用户,即" ...
- 亿级流量电商网站微服务架构图(图灵学院)
亿级流量电商网站微服务架构图(图灵学院)
- 微服务架构图_漫谈何时从单体架构迁移到微服务?
面对微服务如火如荼的发展,很多人都在了解,学习希望能在自己的项目中帮得上忙,当你对微服务的庐山真面目有所了解后,接下来就是说服自己了,到底如何评估微服务,什么时候使用微服务,什么时间点最合适,需要哪些 ...
- (五):C++分布式实时应用框架——微服务架构的演进
C++分布式实时应用框架--微服务架构的演进 技术交流合作QQ群:436466587 欢迎讨论交流 上一篇:(四):C++分布式实时应用框架--状态中心模块 版权声明:本文版权及所用技术归属smart ...
- 一行代码,保障分布式事务一致性—GTS:微服务架构下分布式事务解决方案
摘要: 虽然微服务现在如火如荼,但对其实践其实仍处于初级阶段.即使互联网巨头的实践也大多是试验层面,鲜有核心业务系统微服务化的案例.GTS是目前业界第一款,也是唯一的一款通用的解决微服务分布式事务问题 ...
- Java高并发、分布式框架,从无到有微服务架构设计
微服务架构模式(Microservice Architect Pattern).近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微服务架构是一种架构模式,它提倡将单一应用程序划分成 ...
- 现阶段Java高可用集群架构与微服务架构的简单分析
一.如何选择 1.高可用集群 适用于中小型创业公司项目架构,小型技术团队快速迭代版本发布部署需求,前期低成本运行,爆发时可通过投入适量成本横向扩容服务器抗压. 特点: 前期技术开发成本低 一定的服务器 ...
- 微服务架构学习与思考(05):微服务架构适用场景分析
一.简述 在实际开发中,需要考虑多种因素,来决定采取哪种架构模式才适合当前业务发展情况. 毕竟微服务也不能"包治百病",不要把它当做万能药.企业研发哪里得病了,觉得只要把" ...
最新文章
- 技巧速看!如何帮助“表哥”快速玩转报告美化?
- OpenCASCADE绘制测试线束:OCAF 命令之应用命令
- 每日程序C语言42-带头结点的尾插法创建链表
- UVa 816 (BFS求最短路)
- x265将yuv转h265(七)
- 本地开发phpmyadmin去登陆验证
- java 任务栏程序_如何为Java Swing程序动态启用或禁用任务栏图标
- 【浙江省第16届省赛E:】Sequence in the Pocket(思维--不模拟复杂过程)
- 【JY】精彩仿真书籍推荐与投票~
- 营销系统优惠券模板设计
- Linux下如何重置MySQL密码
- 创新案例分享 | 一体化政务服务平台运维项目,全力提升平台服务效能
- HTML小说排行榜案例
- java计算两个月份差_Java编程实现计算两个日期的月份差实例代码
- 如何用计算机进行照片合成,不借助软件怎样将两张照片合成一张?一招教你搞定!...
- 游久刘亮:从最具草莽气质的80后 到上市公司CEO
- 《解剖PetShop》系列之五
- [思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具
- Unity植物大战僵尸游戏素材+源码
- 计算机保研备战,【计算机系】“研途有你 更为明朗”计算机系2017级考研/保研交流会...