谷粒商城学习笔记(二):简介- 谷粒商城项目微服务架构图

news2025/2/22 12:29:08

目录

  • 项目前置知识
  • 一、前后端分离开发,分为 内网部署 和 外网部署。
  • 二、用户是通过使用 客户端 来完成各种的功能
  • 三、网关的作用
  • 四、Sentiel组件
  • 五、Feign组件
  • 六、OAuth2.0认证中心
  • 七、SpringSecurity组件
  • 八、关于数据存储的解决方案
  • 九、定位bug
  • 十、注册中心
  • 十一、配置中心
  • 十二、服务追踪
  • 十三、运维
  • 十四、参考资料

请添加图片描述

项目前置知识

  1. springboot
  2. Redis
  3. MySQL

一、前后端分离开发,分为 内网部署 和 外网部署。

  • 外网也就是面向公众访问的,即前端项目,可以是手机APP or 电脑的web网站
  • 内网部署的,是整个后台的服务集群。

二、用户是通过使用 客户端 来完成各种的功能

  • 比如:登录、注册等,都要通过 客户端 来给后台的服务发送 请求,当然,请求 不是直接过来的。
  • 首先,请求客户端 发起,来到 nginx集群nginx请求 通过 API网关 转交给后台服务(即业务集群),API网关 会使用到 SpringCloud Gateway。那么网关会完成一个什么样的功能呢?

三、网关的作用

  1. 动态路由网关 可以根据当前 请求,动态地路由到指定的服务,看当前 请求 是要调用商品服务呢?还是购物车服务?还是检索等等
    等路由过来的时候,如果某一个服务众多,比如当前 请求 是来查询商品的,在这三个服务里面都有商品服务,这个时候 网关 还可以负载均衡地调用商品服务。当某个服务出现问题,也可以在 网关 这个阶段对服务进行统一的熔断、降级,那么熔断降级就使用阿里巴巴的sentinel组件。
  2. 认证授权:也就是 请求 过来,要先看一下是否合法,合法了再放行过去。
  3. 令牌限流:限制当前的瞬时流量,比如:一百万个 请求 都过来了,由于担心全部放过去,整个后台服务会被压垮,所以在 网关 处进行流量控制。可以先放行一万个过去,让后台服务能够很容易处理这些请求。

四、Sentiel组件

通过阿里巴巴提供的Sentiel来完成限流、熔断、降级。当请求通过网关,到达后台服务以后,后台服务就进行处理,这些后台服务是通过springboot来写的一个个微服务。

五、Feign组件

服务与服务之间也会互相调用,比如下订单的时候,就需要通过Feign去调用商品服务,来查询一个个商品信息。

六、OAuth2.0认证中心

有些请求可能要登录以后才能处理,有一个专门基于OAuth2.0的认证中心,除了有一般的登录,还有基于OAuth2.0的社交登录。

七、SpringSecurity组件

整个应用里面的安全和权限控制,都是用SpirngSecurity来进行控制的。

八、关于数据存储的解决方案

  • 服务要使用一些数据,就要用到Redis缓存,可以是分片集群,也可以是哨兵集群
  • 持久化存储数据是用MySQL集群,可以做成读写分离,也可以做分库分表
  • 服务与服务之间,会使用消息队列来进行异步解耦,包括完成分布式事务的最终一致性。
  • 使用RabbitMQ集群来做消息队列
  • 有些服务需要进行全文检索去检索一些商品信息,就需要使用到ElasticSearch
  • 有些服务在运行期间,可能需要存储一些图片、视频等,使用的是阿里云的对象存储服务OSS

九、定位bug

  • 项目上线后,为了快速定位项目中一些问题,使用ELK来进行对日志进行相关处理,也就是使用LogStash来收集业务里面的各种日志,把它存储到ES中,然后再使用Kibana可视化界面从ES中检索出相关的日志信息帮我们快速定位线上问题的所在。

十、注册中心

  • 发现问题:在分布式系统中,由于每一个服务都可能部署在很多台机器,而且服务跟服务之间要互相调用
  • 分析问题:服务之间需要知道彼此的位置
  • 解决问题:可以将所有的服务都注册到注册中心,然后别的服务再从注册中心中去来发现其它服务所在的位置,所以使用阿里巴巴的springcloud Nacos来作为配置中心,

十一、配置中心

  • 发现问题:每一个服务的配置众多,一个一个服务改配置就太麻烦了,有没有什么一键修改的方法呢
  • 分析问题:要实现一键修改的功能,可以采取集中管理配置,那么就需要一个配置中心,
  • 解决问题:使用阿里巴巴的springcloud Nacos来作为配置中心,所有的服务都可以从配置中心中获取它的配置

十二、服务追踪

  • 发现问题:服务在调用期间可能出现一个问题,比如:下订单服务,调用商品服务,商品服务再调用库存服务,可能某一个链路出现了问题,那该怎么办呢?
  • 分析问题:那我们就得追踪整个服务调用链,看哪里出了问题,哪一块问题该怎么解决等
  • 解决问题:我们可以使用服务追踪,服务追踪使用Springcloud提供的Sleuth + Zipkin,把每一个服务的信息,交给开源的Prometheus进行聚合分析,再由Grafana进行可视化展示,通过Prometheus提供的AlterManager来实时得到服务的告警信息,把这些告警信息以邮件或者手机短信的方式通知开发或者运维人员。

十三、运维

  • 提供了持续集成,持续部署,也就是项目发布起来,由于微服务众多,每一个都打包,部署到服务器上太麻烦了,那有了持续集成
  • 开发人员可以将修改后的代码提交给GItHub,然后运维人员,可以通过自动化工具Jenkins从GItHub中获取代码,打包成Docker镜像,最终使用k8s来集成整个Docker服务,将服务以Docker容器的形式来运行

十四、参考资料

  • Java项目《谷粒商城》Java架构师 | 微服务 | 大型电商项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA 远程 Debug 调试,你可以不需要,但是要会

文章目录 前言配置IDEA设置启动脚本改造 细节细节1:停在本地断点,关闭程序后会继续执行吗细节2:jar包代码和本地不一致会怎么样?细节3:日志打印在哪里?细节4:调试时其他人会不会卡住&#xff1f…

湖南大学OS-2022期末考试解析

【特别注意】 答案来源于不确定的光子和wolf 是两位同学在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 这张卷子比较正,个人感觉能够代表接下来几年的考试方向。如果仔细研究应该会有所收获。 【试卷与答案】 一、&…

网络安全认证CISP、CISSP对比及分析

好多网络安全行业或者打算转行该行业的人在纠结学是考取CISP认证还是CISSP认证,作为从事多年网络安全培训认证业务的专家,对这两个认证还是非常了解的,下面是这两个认证的一个对比说明,希望能够帮助到大家更好地选择到适合自己的认…

湖南大学OS-2020期末考试解析

【特别注意】 答案来源于wolf以及网络 是我在备考时自己做的,仅供参考,若有不同的地方欢迎讨论。 【试卷评析】 这张卷子有点老了,部分题目可能有用。如果仔细研究应该会有所收获。 【试卷与答案】 一、选择题(15%&#xff…

基于SSM+Vue的房屋租赁网站-求租合同设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

“混合办公”已来!

不知不觉中,你已经开启“未来办公模式”了。这听起来好像有些疯狂,但事实就是如此! 试想一下,近三年,你是不是很少去办公室,但却没有耽误工作?你有多少次是在出差的途中开视频会议,…

5分钟了解Kubernetes Ingress和Gateway API

了解Kubernetes Ingress和Gateway API之间的差异,以实现有效的流量管理。原文: Kubernetes Ingress Vs Gateway API Ingress vs Gateway API 概述 Kubernetes如今被广泛应用于容器管理、微服务编排解决方案。对于如何控制微服务的入口流量,Kubernetes提供…

未来制鞋厂的智能化改造: RFID技术的应用

近年来,RFID(射频识别)的应用在生产、物流、零售等方面得到了广泛的应用。在制鞋厂中,RFID的应用也越来越受到关注。 RFID技术可以让制鞋厂实现对鞋子的全程跟踪,从原材料的采购到鞋子的成品出货,都可以实…

OpenAI 新发布GPT 最佳实践;WordPress新增 AI写作助手;国产语言模型TigerBot发布

🦉 AI新闻 🚀 WordPress新增Jetpack AI Assistant AI写作助手 摘要:Automattic公司宣布,为其WordPress新增AI写作助手–Jetpack AI Assistant。该工具可根据用户提示撰写博文、详情页、结构化列表和表格,支持多种口吻…

代码质量规范测量

圈复杂度介绍 圈复杂度(Cyclomatic complexity)是一种代码复杂度的衡量标准,在1976年由Thomas J. McCabe, Sr. 提出。在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即合理的预…

脑洞大开:“Excel+中文编程”衍生新型软件,WPS用户:自家孩子

中国人脑洞有多大? 有时候,你不得不承认,中国人的脑洞有时候真是让人意想不到: 你只知道Excel表格,你也知道中文编程,但是你有没有想过,用Excel和中文编程嫁接起来的话,会衍生出一…

sessionStorage、localStorage、cookie你真的会用么

文章目录 前言会话存储:本地存储: 一、sessionStorage介绍使用演示存储数据到sessionStorage从sessionStorage中获取数据删除sessionStorage中的某个键值对清空sessionStorage中的所有数据从Chrome查看sessionStorage的存储情况 二、localStorage介绍使用…

最新 Adobe Photoshop AI (Beta) 下载安装教程

Adobe最近推出了新的Adobe Photoshop AI(Beta),这是一款融合了生成性AI和Adobe Firefly的新功能。 能够根据用户的自然语言提示,创建出极其出色的图像。这些提示可以用来添加内容、删除或替换图像的某部分,甚至扩展图…

Flutter:动画

前言 学习参考:老孟 flutter动画 基本上开发时使用的组件都有其动画,关于动画方面的知识,一般情况很少会用到。因此这里只学习关于动画的基本知识。 AnimationController Flutter中的AnimationController是一个用于控制动画的类。它可以控…

深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__Qt 事件循环

深入理解Qt多线程编程:QThread、QTimer与QAudioOutput的内在联系__QObject的主线程的事件循环 1. Qt多线程编程的基础1.1 QObject和线程(QObject and Threads)1.2 QThread的使用和理解(Understanding and Using QThread&#xff0…

ubuntu下安装transition_amr_parser

ubuntu下安装transition_amr_parser transition_amr_parser是IBM公司开源的AMR paraing和AMR text-to-generation工具,在NLP领域中经常会用到,但是这个安装过程中可能会存在很多坑,transition_amr_parser的github主页安装教程不清晰&#xf…

探秘美颜SDK的动态贴纸的技术原理

美颜SDK作为美颜相机的重要组成部分,其动态贴纸技术也是很多用户喜爱的功能之一。本文将探秘美颜SDK的动态贴纸技术,从技术原理、应用场景和未来发展等方面进行分析。 一、技术原理 **1. 人脸识别技术。**在添加动态贴纸时,第一步要做的肯定…

图的导航 - 最短路径算法

一个 恋爱关系图 胡图图love:98于小美 胡图图love:48何壮壮 胡图图love:99小怪 于小美love:10张帅子 何壮壮love:45张帅子 小怪love:100张帅子 胡图图到张帅子的最短路径 确定不是恋爱路径? 算法实现 先看猛料再看是否实现思路 // 定义深度优先搜索状态 struct DepthFirs…

【Android】WMS(六)Surface的创建和操作

Surface的创建流程 在Android系统中每个Activity都有一个独立的画布(在应用侧称为Surface,在SurfaceFlinger侧称为Layer), 无论这个Activity安排了多么复杂的view结构,它们最终都是被画在了所属Activity的这块画布上。 1.Surfac…

618数码好物全推荐,几款科技感满满的数码好物分享

6月18日将迎来一年一度的618狂欢购物节,这可谓是一场精彩绝伦的购物盛宴。每年都有诸多品牌参与其中,我们不仅需要应对复杂的折扣,还需要面对眼花缭乱的产品,这让我们不可避免地陷入了“选择困难症”的困扰中。为了让大家在今年61…