我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spring Cloud 的核心架构原理是怎么样的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spring Cloud 的核心架构原理是怎么样的

Spring Cloud 的核心架构原理是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

最近在补一些分布式系列的面试内容,提前几个月做做准备吧,你们懂的,也跟大家分享分享。现在分布式系统基本上都是标配了,如果你现在还在玩儿单机,没有接触过这些东西的话,权当是为你打开一扇新的大门吧。

大的单体项目有多蛋疼

以前我们做单机系统的时候,所有的代码都在一个项目里面,只是不同的模块按照包名来划分的。我们以前做的一个某省的教育项目,有学生信息和就业系统、有高校培训系统、有一个人资系统等一共六个,4个小伙伴都在一个代码里面进行开发,各个系统之间有一定的联系,但是大部分是不相关的,但管理页面在一起。

那时候我们都在一个项目里面码代码,每次启动好几分钟,还有就是包版本冲突问题,搞得真是蛋疼。大家经历过大型的单体项目开发,相信你有体会的。

还有各系统的使用量也不一样,有的比较大。比如学生信息和就业系统,面向的是所有高校,特别是快毕业那段时间,每个学校会上报就业率等信息,还有就是打印报到证呀什么的。有的系统就使用比较少,比如人资、培训系统 使用的基本上就教育厅的一些员工,和部分老师,流量不大,勉强能扛得住。

模拟业务背景

大点的企业,比如做电商的,用户几十万的,日活几万的,背后好几十人上百人的团队在支撑开发,单体系统就不太合适了。

比如现在有一个下单买东西的需求,就需要订单系统、库存系统、仓库系统和积分系统 等来进行处理。如下图:

Spring Cloud 的核心架构原理是怎么样的

订单系统、库存系统、仓储和积分系统都是部署到不同的机器上的。

当用户下单了,那么订单服务会发进行扣件库存、通知仓储系统要发货、通知积分系统累加积分的操作。

如果我们此时需要用到 Spring Cloud 来做一个分布式架构的话,那么我们需要什么东西呢?每个东西都是干嘛的呢?

 

如果使用 Spring Cloud 来实现,需要哪些组件?

 
Eureka

首先,我们需要一个注册中心 Eureka ,主要负责每个服务的注册和发现。

每个微服务中都有一个Euraka client组件,专门负责将这个服务的服务id(serviceId)、ip、端口等信息注册到Eureka server中。

Euraka Server是一个注册中心,该组件内部维护了一个注册表,保存了各个服务所在的机器ip和端口号等信息。

 
Feign

其次每个服务还需要一个远程服务调用的组件 Feign ,他主要负责与其他服务建立连接,构造请求,然后发起请求来调用其他服务来获取数据。

 
Ribbon

然后我们一个服务可能会部署很多台机器,那么我们使用Feign 去调用这个服务的时候,到底把请求发送到哪台机器上去呢?此时我们就需要一个组件来根据一定的策略来选择一台机器。不管怎么选的,总之得选一台机器给 Feign 去调用就好了。

这个组件就是 Ribbon,Ribbon 主要负责就是负载均衡。Ribbon 会定期去从Eureka 注册中心拉取注册中心,缓存到本地,每次发起远程调用的时候,Ribbon 就会从 Eureka 注册表拉取下来的数据中挑选一个机器让 Feign 来发起远程调用。

 
Zuul

我们这么多的微服务,如果一个服务一个IP,使用方都需要进行调用的话,是不是得知道每一个服务的IP地址才行呢?那得记住多少才行呀,多不好管理。

如果有一个统一的地址,然后根据不同的请求路径来跟我进行转发多少是不,比如 /user/* 是转发到用户服务 ,/product/* 是转向到商品服务等等。我使用的时候,只需要访问同一个IP ,只是路径不一样,就行了。

Spring Cloud 也给我们提供了一个组件,那就是 Zuul ,他是一个网关,就是负责网络的路由的。每个请求都经过这个网关,我们还可以做统一鉴权等等很多事情。

 
Hystrix

还有一个东西也得说一下,就是 Hystrix,它是一个隔离、熔断以及降级的一个框架 。

在微服务的相互调用过程中,可能会出现被调用服务错误或者超时的情况,从而导致整个系统崩溃不可用,也就是我们常说的服务雪崩问题,Hystrix 的存在就是为了解决这种问题的。

 

整体架构

我们按照以上使用到的这些组件,来往下单这个流程来套一下:

Spring Cloud 的核心架构原理是怎么样的  

整个调用流程:

  1. 首先每个服务启动的时候都需要往注册中心进行注册。

  2. 用户先对网关发起下单请求,网关收到请求后发现呃,是下单操作,要到订单系统,然后把请求路由到订单系统。

  3. 订单系统啪啦啪啦一顿操作,然后通过 Feign 去调用 库存系统减库存,通知仓储服务发货,调用积分系统加积分。

  4. 在发起调用之前,订单系统还得通过Ribbon 去注册中心去拉取各系统的注册表信息,并且挑一台机器给 Feign 来发起网络调用。

看完上述内容,你们掌握Spring Cloud 的核心架构原理是怎么样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spring Cloud 的核心架构原理是怎么样的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring Cloud 的核心架构原理是怎么样的

Spring Cloud 的核心架构原理是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最近在补一些分布式系列的面试内容,提前几个月做做准备吧,你们懂的,也跟大家分享分
2023-06-19

Spring Cloud原理及核心组件是什么

本篇内容介绍了“Spring Cloud原理及核心组件是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概述毫无疑问,Spring Clo
2023-07-05

Spring Cloud的底层架构原理

本篇内容主要讲解“Spring Cloud的底层架构原理”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Cloud的底层架构原理”吧!Eureka首先,我们得说说服务注册中心 Eur
2023-06-19

spring cloud云架构common-service代码结构是怎样的

今天小编给大家分享一下spring cloud云架构common-service代码结构是怎样的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
2023-06-05

Laravel框架的核心架构是什么

这篇文章主要介绍Laravel框架的核心架构是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 使用过larave框架的朋友都知道laravel框架里面除了提供一些基本的功能(如控制器、视图、模型)之外,还有中间件
2023-06-06

架构设计的理念和原则是SaaS的核心灵魂

我相信,优秀的技术架构是演进出来的。这不意味着你要一个个坑重新踩一遍,我已经踩了这么多年的坑,不断地从坑里爬出来。今天的分享就是为了让大家少踩一些坑。或者当你准备往下踩的时候,你感觉这是个坑,你可以以开放的心态对外多交流,通过这种交流来加速

Vue的核心原理是什么

这篇文章主要介绍“Vue的核心原理是什么”,在日常操作中,相信很多人在Vue的核心原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue的核心原理是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
2023-06-29

Spring Cloud中Feign的实现原理是什么

本篇内容主要讲解“Spring Cloud中Feign的实现原理是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Cloud中Feign的实现原理是什么”吧!目录一、什么是Fei
2023-06-20

spring cloud中common-service的项目构建过程的是怎样的

spring cloud中common-service的项目构建过程的是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先在构建spring cloud的common
2023-06-05

Spring框架的原理是什么

这篇文章主要讲解了“Spring框架的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring框架的原理是什么”吧!简要介绍spring的原理,并结合一个简单的实例,如何配置使用
2023-06-03

深入详解Mybatis的架构原理与六大核心流程

MyBatis 是 Java 生态中非常著名的一款 ORM 框架,目前在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。
MyBatisJavaORM2024-12-02

kubernetes架构是怎么样的

小编给大家分享一下kubernetes架构是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:整体架构二:架构模块说明以上是“kubernetes架构是怎
2023-06-04

Solr搜索引擎的核心架构及工作原理详解(Solr搜索引擎的内部结构和工作机制是怎样的?)

Solr搜索引擎基于ApacheLucene构建,具有高性能、可扩展性和容错性。其核心架构包括模式、核心、处理器、索引、文档、查询、结果和分面。Solr的工作原理包含索引构建、查询解析、查询优化、查询执行、结果排序、分面聚合等步骤。Solr具备高性能、可扩展性、容错性、可定制性和社区支持等优势,使其广泛用于各种应用程序中。
Solr搜索引擎的核心架构及工作原理详解(Solr搜索引擎的内部结构和工作机制是怎样的?)
2024-04-02

Kafka的架构原理是什么

Kafka的架构原理主要是基于分布式发布-订阅消息系统的设计理念。其架构包括以下几个核心组件:生产者(Producer):负责向Kafka集群发送消息。主题(Topic):消息的逻辑分类,生产者可以将消息发送到指定的主题。分区(Partit
Kafka的架构原理是什么
2024-03-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录