国庆7天没休息,我用17张图画明白了SpringCloudAlibaba

2023-10-30

大家好,今天给大家介绍一个非常热门的技术,同时也是面试的时候面试官特别喜欢问的一个话题,那就是 SpringCloudAlibaba 的底层原理。

现在大家都知道,SpringCloudAlibaba 风靡 Java 开发行业,各个公司都在用这套技术,所以咱们 Java 工程师出去面试,面试官对 SpringCloudAlibaba 都搞成了面试必问选项了,但凡面试,总会有面试官问问:“兄弟,SpringCloudAlibaba 玩儿过吗?能聊聊 SpringCloudAlibaba 的底层原理吗?”

这个时候你要是一脸懵圈的说:“兄弟,我们玩儿的是 SpringCloud 啊,你后面加个 Alibaba 干什么?这东西什么时候跟阿里扯上钩了?”要是面试时你这么回答,那么恭喜你,基本上面试官应该会借口肚子疼要上厕所,然后 30 分钟就结束这场面试了。

所以说,咱们这篇文章,就是希望各位兄弟别出现上面那种 30 分钟就被迫结束面试的窘迫问题。

今天我们先一步一步的来让大家理解一下 SpringCloudAlibaba 里面都包含哪些技术组件,在系统里都是用来干什么的,然后再给大家分析一下这些技术底层的原理。

首先,假设你们公司有两个系统,咱们就假设是系统 A 和系统 B 吧,这俩系统现在的需求就是要让系统 A 可以发送一个请求给系统 B 来实现系统间的接口调用。

咱们看下面这个图:

图片

现在有一个最大的问题,系统 A 是部署在一台服务器上的,系统 B 又是部署在另外一台服务器上的,那系统 A 怎么可能莫名其妙的就知道系统B部署在哪台机器上呢?

这就好比说,您在大马路上走着走着,看到一个美女,回家了特别想微信联系她一下,结果您都不知道她的微信号,没加过好友,凭空也没法跟美女搭讪啊!

那跟美女搭讪的正确姿势应该是什么呢?这得有一个前提,就是您有一个中间的朋友,他认识那美女有人家的微信号,这个时候你可以找那中间的朋友要到人家微信号,再根据微信号加人家美女好友,接着就可以实现无缝情感沟通啦!

开个玩笑,上面仅仅是枯燥技术文章中的一个插曲,其实对于您的系统 A 来说,这时就必须引入一个 SpringCloudAlibaba 的关键技术组件,叫做 Nacos。

大家请擦亮眼睛,这个 Nacos 是一个关键名词,一定要记住了,他的学术定位叫做“服务注册中心”。

这个 Nacos 就类似上面说的那个有美女微信号的第三方朋友,他是知道你的系统B部署在哪台机器上的,因为系统 B 在启动的时候会主动向 Nacos 服务注册中心进行服务注册,告诉 Nacos 说自己部署在哪台机器上,自己的机器 ip 地址是 172.86.76.251,自己的端口号是 20880。

大家看下图:

图片

这个时候&#x

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

国庆7天没休息,我用17张图画明白了SpringCloudAlibaba 的相关文章

  • 为什么 Hashtable 不允许空键或空值?

    正如 JDK 文档中所指定的 Hashtable 不允许空键或空值 HashMap 允许一个空键和任意数量的空值 为什么是这样 Hashtable 是较旧的类 通常不鼓励使用它 也许他们看到了对 null 键的需要 更重要的是 null 值
  • 如何编写 Maven 构建脚本来执行 Java

    如何在构建过程中或构建刚刚完成后执行 Java 程序 可以直接从 pom 中执行此操作吗 mvn exec java Dexec mainClass org sonatype mavenbook weather Main EDIT 假设我想
  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • 在Java Servlet中获取通过jquery ajax发送的参数[重复]

    这个问题在这里已经有答案了 我在网上搜索这个主题 但找不到有效的示例 我会很高兴有人能给我帮助 这就是我测试的 ajax url GetJson type POST dataType json contentType application
  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • openFileOutput 在单例类中无法正常工作 - 想法/解决方法?

    作为一名 Android 开发新手 我遇到了一些奇怪的问题 我想创建一个类 它方法其他类 活动 任何可以用于以某种特殊方式处理文件的类 假设为了简单起见 我们将记录一些内容 如果我在活动中执行以下操作 例如在 OnClick 侦听器中 则一
  • 如何重复一段文本中的每个字母?爪哇语

    就像在口吃中一样 如果文本为 dean 并且乘数为 3 则结果将是 dddeeeaaannn 由提供的乘数指定的次数 public static void repeatLetters String text dean int n 3 Str
  • Java 错误和警告列表

    在哪里 如何获得所有 java 和 javac 的错误和警告消息的列表 This http mindprod com jgloss compileerrormessages html我认为页面是您所需要的
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • 如何在正则表达式中编写可选单词?

    我想编写一个识别以下模式的 java 正则表达式 abc def the ghi and abc def ghi 我试过这个 abc def the ghi 但是 它没有识别第二种模式 我哪里出错了 abc def the ghi 删除多余
  • 使用正则表达式验证电子邮件的最大长度

    我找到了用于电子邮件验证的正则表达式 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4 我希望电子邮件的最大长度为 20 个字符 因此我将其更改为 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4
  • 是否可以创建 Java RAM 磁盘以与 java.io.* API 一起使用?

    我正在使用一个第三方库 它基本上创建一个输出目录 其中包含不同类型的文件和子目录 我希望能够编写单元测试来确认输出正确 我希望能够将库与 RAM 磁盘一起使用 这样库所做的任何事情都不会以任何方式接触实际的磁盘板 这个想法是让测试运行和清理
  • 在 Eclipse 中删除空块之前的新行

    我更喜欢奥尔曼式 http en wikipedia org wiki Brace style Allman style大括号 例如 if foo magical prancing unicorn stuff 而不是 if foo unma
  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • java.exe 以非零退出值 1 结束

    只是为了开始 我并不是真正尝试从 Android 中的 xlsx 文件中读取单元格 我已经尝试了几乎所有我在 Google 上搜索到的内容 但是每次 在两台不同的 PC 上 都是 Java 1 7 0 79 当我尝试构建 运行 这个应用程序
  • 为休息服务实施 JUnit 测试

    我必须为我的休息服务实现一些 JUnit 测试 例如 这是我的休息服务之一 Path dni fe public class HelloWorld POST Path home Consumes MediaType APPLICATION
  • 在约束验证器中使用 Guice 进行依赖注入

    我有一个在 ConstraintValidator 的实现中注入类的用例 我正在使用 Google guice 进行依赖项注入 目前无法在验证器内注入 我的场景的简化形式 内部模块 Provides Singleton public Ser
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • Spring MVC:通用 DAO 和服务类

    我正在 Spring MVC 中编写网页 我使用 Generic DAO 编写了所有 DAO 现在我想重写我的服务类 我该如何写 通用服务 我的 DAO 如下 DAO package net example com dao import j
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github

随机推荐

  • RocketMQ第四节(部署模式、监控面板等)

    1 mq的部署模式 部署方式 RocketMQ 参考官网 单机模式 抗风险能力差 单机挂机没服务 单机硬盘损坏 丢失数据 多机 多master没有Slave副本 多个master采用RAID10磁盘 不会丢失数据 但是某一个master关闭
  • Unity - BRP - PP后效导致 Camera.targetTexture 被换掉,graphicsFormat 不对问题

    文章目录 环境 目的 原因 问题 解决方法 环境 Unity 国际版2020 3 37f1 Pipeline BRP Packages Post Processing 3 0 3 目的 BRP 虽然是 官方放弃更新的 渲染管线 但是有些项目
  • java--基础--17.8--线程--wait方法与sleep方法区别

    java 基础 17 8 线程 wait方法与sleep方法区别 1 介绍 wait 线程间的通讯的问题 需要等待别的线程唤醒 sleep 自己控制线程的运行状态 隔了一段时间自动醒过来 wait 方法释放了锁 sleep 方法没有释放锁
  • 高斯分布(正态分布)详解

    高斯分布 一 概念 二 详解和例子说明 三 判断数据是否服从高斯分布 四 高斯分布实际应用 一 概念 定义 随机变量X服从一个数学期望 mu 方差为 sigma 的高斯分布 又名正态分布 当 0 1时的正
  • c, cs, vala 性能简单测试

    分别用c cs 和 vala 完成同样的运算 Code include
  • matlab sum函数_Matlab: 如何对矩阵的部分行/列求和

    Matlab里的sum函数可以用于求和 先简单来介绍一下sum函数 对一个矩阵A而言 1 sum A all 对矩阵A的所有元素进行求和 返回的是一个标量 2 sum A 1 对矩阵A的每一列进行求和 返回的是一个行向量 3 sum A 2
  • 哈工大2020软件构造Lab4实验报告

    为了鄙视代写 抄袭 伸手党 删除了一些 容易抄袭 的部分 有问题 询问省略部分 欢迎QQ交流 本项目于5 19日实验课完成 该更新的 更新完成 如果有所参考 请点点关注 点点赞GitHub Follow一下谢谢 2020春计算机学院 软件构
  • Python安装教程

    本文主要介绍Windows下Python的安装步骤 1 打开官网www python org 选择Downloads 进入下载界面 2 选择需要下载的Python版本号 点击Download 我选择的Python版本为3 9 6 3 点击D
  • 计算机考研复试操作系统题库

    文章目录 1 什么是操作系统 操作系统的主要功能是 它的主要特征是什么 重点 2 进程与线程的关系以及区别 重点 3 Windows下的内存是如何管理的 简单了解即可 4 中断和轮询的特点 5 什么是临界区 如何解决冲突 什么叫临界资源 6
  • JDBC基础

    1 JDBC概述 在开发中我们使用的是java语言 那么势必要通过java语言操作数据库中的数据 1 1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称 Java DataBase Connectivity
  • 踏浪点神:新手该如何避免频繁重仓交易?

    期货市场中最忌讳的就是让情绪影响交易 但很多人却又很难避免这一点 其中表现最为突出的就是频繁操作了 自信地以为 多劳多得 近乎疯狂地买卖 满脑子的愤怒都急切地想要通过 自杀 的方式得以宣泄 这就是所谓的 交易失控 大多数人在事后冷静下来了都
  • K8S内容分发网络之集群,nginx,负载均衡,防火墙

    目录 第一章 实验架构需求 第二章 实验环境准备 2 1 节点准备 2 2 环境准备 2 3 在master node01 node02上操作安装docker 2 4 所有节点安装kubeadm kubelet和kubectl 2 5 部署
  • 使用dplyr包中的rename函数重命名R语言数据框中的指定列

    使用dplyr包中的rename函数重命名R语言数据框中的指定列 在R语言中 dplyr包提供了一组功能强大且易于使用的函数 用于对数据进行操作和转换 其中 rename函数可以用于重命名数据框中的指定列 本文将介绍如何使用dplyr包中的
  • DVWA(七) - 使用python脚本实现SQL盲注

    SQL Injection Blind sql盲注其实就是sql注入的一种 但是不会根据sql注入的攻击语句返回你想要知道的信息 盲注分为两种 布尔盲注以及时间盲注 布尔盲注 根据你的注入信息返回True和Fales 而返回的True和Fa
  • 【Java入门学习笔记】——第六天 import语句,类的访问控制权限问题,对象数组

    Q 怎样使用import语句 A import语句的作用如下 1 引入类库中的类 2 引入自定义包中的类 需要把程序使用的自定义的包名所形成的目录都放在同一文件夹中 Example01 所有包名形成的目录都要放在Example01中 stu
  • 职业素质学习心得

    名言 1 古之立大事者 不惟有超世之才 必有坚韧不拔之志 2 摒弃侥幸之念 必取百炼成刚 厚积分秒之功 始得一鸣惊人 一 心态决定一切 如果你有一个梦想 维护她 坚守她 实现她 企业招聘看重两个方面 心态 积极 能力 强大 公司待遇衡量标准
  • iOS反编译修改ipa的启动图

    启动图制作脚本点击此获取 步骤一 先创建一个iOS项目 并制作启动图 点击获取教程链接 步骤二 运行上述创建的项目 将会在Products目录得到一个xx app 右键选择 Show in Finder 再右键选择 显示包内容 取出Laun
  • C++11 之列表初始化

    在 c 98 03 中的对象初始化方法有很多种 请看下面的代码 初始化列表 int i arr 3 1 2 3 普通数组 struct A int x struct B int i int j b a 1 2 3 POD 类型即 plain
  • Memcache介绍及安装部署

    Memcache 官网 http memcached org 1 Memcache 的特性 1 可以通过做集群同步的方式 让各 memcache 服务器的数据进行同步 从而实现数据的一致性 2 memcached使用libevent库 能在
  • 国庆7天没休息,我用17张图画明白了SpringCloudAlibaba

    大家好 今天给大家介绍一个非常热门的技术 同时也是面试的时候面试官特别喜欢问的一个话题 那就是 SpringCloudAlibaba 的底层原理 现在大家都知道 SpringCloudAlibaba 风靡 Java 开发行业 各个公司都在用