整个项目采用前后端分离开发,外网部署前台项目、内网部署后台项目。本文以客户使用客户端访问网站,向后台发送请求这一条线索对上图进行分析。

文章目录

  • 一、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容器的方式来运行。

分布式秒杀电商-微服务架构图 上帝视角分析相关推荐

  1. 【架构】电商微服务架构图 -来源网络(非原创)

  2. 商城项目01 _电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图

    文章目录 ①. 电商系统基本模式 ②. 分布式基础概念 ③. 微服务架构图详解 ④. 微服务划分图 ①. 电商系统基本模式 ①. B2C模式 就是我们经常看到的供应商直接把商品卖给用户,即" ...

  3. 亿级流量电商网站微服务架构图(图灵学院)

    亿级流量电商网站微服务架构图(图灵学院)

  4. 微服务架构图_漫谈何时从单体架构迁移到微服务?

    面对微服务如火如荼的发展,很多人都在了解,学习希望能在自己的项目中帮得上忙,当你对微服务的庐山真面目有所了解后,接下来就是说服自己了,到底如何评估微服务,什么时候使用微服务,什么时间点最合适,需要哪些 ...

  5. (五):C++分布式实时应用框架——微服务架构的演进

    C++分布式实时应用框架--微服务架构的演进 技术交流合作QQ群:436466587 欢迎讨论交流 上一篇:(四):C++分布式实时应用框架--状态中心模块 版权声明:本文版权及所用技术归属smart ...

  6. 一行代码,保障分布式事务一致性—GTS:微服务架构下分布式事务解决方案

    摘要: 虽然微服务现在如火如荼,但对其实践其实仍处于初级阶段.即使互联网巨头的实践也大多是试验层面,鲜有核心业务系统微服务化的案例.GTS是目前业界第一款,也是唯一的一款通用的解决微服务分布式事务问题 ...

  7. Java高并发、分布式框架,从无到有微服务架构设计

    微服务架构模式(Microservice Architect Pattern).近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微服务架构是一种架构模式,它提倡将单一应用程序划分成 ...

  8. 现阶段Java高可用集群架构与微服务架构的简单分析

    一.如何选择 1.高可用集群 适用于中小型创业公司项目架构,小型技术团队快速迭代版本发布部署需求,前期低成本运行,爆发时可通过投入适量成本横向扩容服务器抗压. 特点: 前期技术开发成本低 一定的服务器 ...

  9. 微服务架构学习与思考(05):微服务架构适用场景分析

    一.简述 在实际开发中,需要考虑多种因素,来决定采取哪种架构模式才适合当前业务发展情况. 毕竟微服务也不能"包治百病",不要把它当做万能药.企业研发哪里得病了,觉得只要把" ...

最新文章

  1. 技巧速看!如何帮助“表哥”快速玩转报告美化?
  2. OpenCASCADE绘制测试线束:OCAF 命令之应用命令
  3. 每日程序C语言42-带头结点的尾插法创建链表
  4. UVa 816 (BFS求最短路)
  5. x265将yuv转h265(七)
  6. 本地开发phpmyadmin去登陆验证
  7. java 任务栏程序_如何为Java Swing程序动态启用或禁用任务栏图标
  8. 【浙江省第16届省赛E:】Sequence in the Pocket(思维--不模拟复杂过程)
  9. 【JY】精彩仿真书籍推荐与投票~
  10. 营销系统优惠券模板设计
  11. Linux下如何重置MySQL密码
  12. 创新案例分享 | 一体化政务服务平台运维项目,全力提升平台服务效能
  13. HTML小说排行榜案例
  14. java计算两个月份差_Java编程实现计算两个日期的月份差实例代码
  15. 如何用计算机进行照片合成,不借助软件怎样将两张照片合成一张?一招教你搞定!...
  16. 游久刘亮:从最具草莽气质的80后 到上市公司CEO
  17. 《解剖PetShop》系列之五
  18. [思维模式-12]:《如何系统思考》-8- 工具篇 - 因果回路图/系统循环图/系统控制图,系统思考的关键工具
  19. Unity植物大战僵尸游戏素材+源码
  20. 计算机保研备战,【计算机系】“研途有你 更为明朗”计算机系2017级考研/保研交流会...

热门文章

  1. 如何爬取微信公众号的所有文章
  2. 狼的故事17:大结局
  3. PHP涉及的所有英文单词
  4. java暗黑破坏神,《暗黑破坏神2》1.10 雇用兵详细介绍
  5. Davinci DM6446开发攻略——DSP开发工程建立
  6. 离散数学10__第5章 关系与函数_关系的性质_自反对称传递
  7. 基于STM32F407使用ADC采集电压实验
  8. 路径跟踪与轨迹跟踪概念
  9. Facebook加密项目Libra浮出水面,Visa和万事达卡「入伙」
  10. P3918 [国家集训队]特技飞行