当前位置: 首页 > news >正文

浅谈Spring Cloud:认识微服务

SpringCloud就是分布式微服务架构的一站式解决方案,是微服务架构落地的多种技术的集合。

目录

微服务远程调用

Eureka注册中心

搭建Eureka Server

注册组件

服务拉取


当各种各样的服务越来越多,拆分的也越来越细,此时就会出现一个服务集群。

但是这么多服务,只靠人来管理是不现实的,所以引入了注册中心。

但是每个微服务都需要有不同的配置,我们就需要一个配置中心来管理每个服务的配置文件。

但是还需要管理用户的id,访问之类的事情,就需要一个服务网关。

光有了这些,还需要存储数据的数据库,并且还需要搭配分布式的缓存和搜索。

还需要消息队列来管理服务集群之间的通信。

一直到最后,才完成了整个微服务的整体架构。

微服务远程调用

现在我们有两个微服务(此处看做是两个springboot项目,各自有各自的端口和配置,数据库不是公用的,通过父子关系把一些配置公有化了)。我们需要在一个微服务中,把另一个微服务的接口调用到,该怎么做?

这里是有两个数据库,每个微服务只能查询到自己数据库的内容。我们通过Order模块里面的内容是无法查询到User中的信息的。

对于User服务,在Mapper中有一个GetMapper方法,只需要给它发送请求,它就会返回一个信息出来。于是我们就可以在Order中,也给它发送一个这个请求来获得数据库的信息。并且这个请求是解耦的,并不依赖于某个模块。

注册RestTemplate

一般来说,配置类是Controller,此处的Application也可以作为配置类。我们就直接把RestTemplate注册到Spring中。

在Order中,订单查询功能,是没有用户信息的。用户信息在另一个数据库中,此处查询不到。但是,Order中有用户的ID,通过这个ID可以在另一个数据库中查询到我们想要的结果。

通过restTemplate就能直接给另一个接口发送信息,接收到信息后再整合进原来的order中。

Eureka注册中心

在上述的例子中,远程调用的时候,我们的URL是写死的。当更换机器,或者新增机器的时候,这个URL就需要跟着变更。这样就需要通知所有的相关服务去修改。各个项目的配置文件反复更新,各个项目部署非常频繁。

引入Eureka注册中心,就可以帮助我们完成这一系列的操作。

  • EurekaServer:作为注册中心Server端,向微服务应用程序提供服务注册,发现,健康检查等能力。
  • EurekaClient:服务提供者,服务启动时,会向EurekaServer注册自己的信息(IP,端口,服务信息等),Eureka Server 会存储这些信息。

搭建Eureka Server

新建一个模块,并且选择好Maven

在eureka的pom文件中,配置好相关的信息。

        <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency>

给该项目编写⼀个启动类,并在启动类上添加服务@EnableEurekaServer 注解,开启eureka注册中心。

配置好相关的配置文件。

启动服务,并且可以访问到eureka的网页。红框框就是被注册的组件。

注册组件

针对user-service,我们注册这个组件到Eureka有两个步骤:

引入pom依赖

修改yml配置文件

注意,这里的配置文件修改极其容易出错,请严格注意格式!

对于order-dervice,步骤是一样的。重启服务,在Eureka的网页中就可以看到两个组件被注册成功。

服务拉取

刚刚是两个组件的情况,如果我们想要开两个服务,可以直接在IDEA里面添加。添加完成后,就会有两个只有端口不同的服务在一起。

现在我们通过order-service完成服务拉取,拉取的内容是user-service中的。

 

  1. 修改OrderService的代码,修改访问的url路径,用服务名称代替ip和端口
    String url = "http://userservice/user/" + order.getUserId();
  2. 在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注释

这样子,刚刚我们启动的两个UserApplication,会在收到请求的时候通过负载均衡,动态的控制服务器响应给OrderService。

在地址栏快速的访问127.0.0.1:8080/order/101 和 127.0.0.1:8080/order/102  可以发现这两次请求是在不同的实例上完成的。

搭建 Eureka Server

  1. 引入 eureka-server 依赖。
  2. 添加 @EnableEurekaServer 注解。
  3. 在 application.yml 中配置 Eureka 地址。

服务注册

  1. 引入 eureka-client 依赖。
  2. 在 application.yml 中配置 Eureka 地址。

服务发现

  1. 引入 eureka-client 依赖。
  2. 在 application.yml 中配置 Eureka 地址。
  3. 给 RestTemplate 添加 @LoadBalanced 注解。
  4. 用服务提供者的服务名称远程调用。

这就是通过Eureka注册中心完成服务注册的流程了。只有同一个服务多个实例才能做负载均衡。那么具体讲到负载均衡,我们下一章节再详细说~

相关文章:

浅谈Spring Cloud:认识微服务

SpringCloud就是分布式微服务架构的一站式解决方案&#xff0c;是微服务架构落地的多种技术的集合。 目录 微服务远程调用 Eureka注册中心 搭建Eureka Server 注册组件 服务拉取 当各种各样的服务越来越多&#xff0c;拆分的也越来越细&#xff0c;此时就会出现一个服务集…...

mac命令行分卷压缩与合并

对当前目录内的文件压缩的同时分卷 //语法:zip -r -s 1m 压缩文件名.zip 当前路径 zip -r -s 1m split.zip . //解压 zip -s 0 split.zip --out unsplit.zip unzip unsplit.zip 将一个zip文件进行分卷 一个900k的压缩包名为hello.zip,将其分割为每500K一个zip zip - hello.…...

在 Linux (aarch64) 编译 OpenJDK 8

环境信息 操作系统&#xff1a;Rocky Linux 9.4 (aarch64)Open JDK&#xff1a;OpenJDK 8u422Boot JDK&#xff1a;jdk8u421-linux-aarch64 编译 OpenJDK 需要有一个 JDK。 解压后当前目录结构如下&#xff1a; /opt/ ├── jdk1.8.0_421 │ ├── COPYRIGHT │ ├──…...

如何有效检测住宅IP真伪?

在当今的互联网时代&#xff0c;住宅IP&#xff08;即家庭用户通过宽带服务提供商获得的IP地址&#xff09;在跨境电商、广告投放、网络安全等多个领域扮演着重要角色。然而&#xff0c;随着网络环境的复杂化和欺诈行为的增多&#xff0c;如何有效检测和辨别住宅IP的真伪成为了…...

springboot acuturator

SpringBoot使用Actuator - 基础使用步骤 Spring Boot 监控端点 Actuator 入门 - 系统学习 Spring Boot Admin入门 - 基础学习 Spring Boot 监控工具 Admin 入门 - 进阶学习 Spring Boot 监控平台 Prometheus Grafana 入门 Spring Boot 链路追踪 SkyWalking 入门...

什么是SaaS软件?有哪些常用的SaaS软件?

SaaS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;是一种通过互联网提供软件的模式&#xff0c;用户无需安装和维护任何复杂的基础设施&#xff0c;只需通过网络连接即可使用软件。SaaS 供应商负责软件的维护、升级和可用性&#xff0c;用户则通过订阅…...

QT Layout布局,隐藏其中的某些部件后,不影响原来的布局

最近在工作时&#xff0c;被要求&#xff0c;需要将布局中的某些部件隐藏后&#xff0c;但不能影响原来的布局。 现在记录解决方案&#xff01; 一、水平布局&#xff08;垂直布局一样&#xff09; ui中的布局 效果&#xff1a; 按钮可以任意隐藏&#xff0c;都不影响其中布…...

WPF自定义Dialog模板,内容用不同的Page填充

因为审美的不同&#xff0c;就总有些奇奇怪怪的需求&#xff0c;使用框架自带的对话框已经无法满足了&#xff0c;这里记录一下我这边初步设计的对话框。别问为啥要用模板嵌套Page来做对话框&#xff0c;问就是不想写太多的窗体。。。。 模板窗体&#xff08;XAML&#xff09;…...

[数据集][目标检测]智慧养殖场肉鸡健康状态检测数据集VOC+YOLO格式4657张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4657 标注数量(xml文件个数)&#xff1a;4657 标注数量(txt文件个数)&#xff1a;4657 标注…...

Linux 应用安全

1 怎样使用 nmcli 创建新连接&#xff0c;并为其配置静态 IP 地址等参数&#xff1f; # nmcli connection add con-name "连接名" ifname "接口名" type ethernet # nmcli connection modify "连接名" ipv4.method manual ipv4.address "…...

优化内存工具 | RAM Saver Pro v24.9 便携版

RAM Saver是一款专业的RAM优化工具&#xff0c;旨在提高计算机的性能和运行速度。它通过多种优化技术&#xff0c;如内存碎片整理、CPU和主板缓存效率提升、恢复内存等&#xff0c;为应用程序提供更多的内存资源&#xff0c;从而使系统运行更加流畅。适合所有需要优化内存使用和…...

后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)

十三、文章分类页面 - [element-plus 表格] Git仓库&#xff1a;https://gitee.com/msyycn/vue3-hei-ma.git 基本架子 - PageContainer 功能需求说明&#xff1a; 基本架子-PageContainer封装文章分类渲染 & loading处理文章分类添加编辑[element-plus弹层]文章分类删除…...

众数信科AI智能体政务服务解决方案——寻知智能笔录系统

政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内…...

OpenCV特征检测(4)检测图像中的角点函数cornerHarris()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 Harris 角点检测器。 该函数在图像上运行 Harris 角点检测器。类似于 cornerMinEigenVal 和 cornerEigenValsAndVecs&#xff0c;对于每个像素 (…...

Apache Doris 2.1.6 版本正式发布

亲爱的社区小伙伴们&#xff0c;Apache Doris 2.1.6 版本已于 2024 年 9 月 10 日正式发布。2.1.6 版本在 Lakehouse、异步物化视图、半结构化数据管理持续升级改进&#xff0c;同时在查询优化器、执行引擎、存储管理、数据导入与导出以及权限管理等方面完成了若干修复。欢迎大…...

一些常用的 Docker 命令

一些常用的 Docker 命令 涵盖了查看镜像、启动镜像等基本操作&#xff1a; 1. 查看 Docker 镜像 列出所有本地存储的镜像&#xff1a; docker images这会显示所有已经下载到本地的镜像&#xff0c;包括仓库名、标签、镜像 ID、创建时间和大小。 2. 拉取 Docker 镜像 从 Dock…...

【机器学习】--- 自然语言推理(NLI)

引言 随着自然语言处理&#xff08;NLP&#xff09;的迅速发展&#xff0c;**自然语言推理&#xff08;Natural Language Inference, NLI&#xff09;**已成为一项重要的研究任务。它的目标是判断两个文本片段之间的逻辑关系。这一任务广泛应用于机器阅读理解、问答系统、对话…...

大话C++:第11篇 类的定义与封装

1 类的定义 在C中&#xff0c;类的定义通常使用class关键字开始&#xff0c;后面紧跟类的名称。类可以包含数据成员&#xff08;变量&#xff09;和成员函数&#xff08;方法&#xff09;。 在C中&#xff0c;类可以更加详细地展开&#xff0c;包括数据成员&#xff08;变量&…...

六种主流ETL工具的比较与Kettle的实践练习指南--MySQL、hive、hdfs等之间的数据迁移

在数据集成和数据仓库建设中&#xff0c;ETL&#xff08;Extract, Transform, Load&#xff09;工具扮演着至关重要的角色。本文将对六种主流ETL工具进行比较&#xff0c;并深入探讨Kettle的实践应用。 一、六种主流ETL工具比较 1. DataPipeline 设计及架构&#xff1a;专为…...

一天一道算法题day07

找出字符中第一个匹配的下标 题目描述 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 示例 1&#…...

OpenClaw压力测试:nanobot持续运行72小时稳定性

OpenClaw压力测试&#xff1a;nanobot持续运行72小时稳定性 1. 测试背景与目标 最近在本地部署了基于OpenClaw的nanobot项目&#xff0c;这是一个超轻量级的自动化助手框架。它内置了vllm部署的Qwen3-4B-Instruct-2507模型&#xff0c;通过chainlit提供推理界面。在实际使用中…...

ArcPy 脚本:批量生成郑州市 1990-2019 年空间分析结果(核密度、热点、平均中心、标准差椭圆)

ArcPy 脚本&#xff1a;批量生成郑州市 1990-2019 年空间分析结果&#xff08;核密度、热点、平均中心、标准差椭圆&#xff09;背景介绍在城市研究中&#xff0c;我们常常需要分析多年数据的空间分布模式&#xff0c;比如建筑物高度在郑州市的聚集情况、热点区域变化、整体中心…...

IndexTTS-2-LLM新手教程:从部署到生成,完整流程详解

IndexTTS-2-LLM新手教程&#xff1a;从部署到生成&#xff0c;完整流程详解 1. 快速了解IndexTTS-2-LLM IndexTTS-2-LLM是一款基于大语言模型的智能语音合成系统&#xff0c;能够将文字转换为自然流畅的语音。相比传统语音合成技术&#xff0c;它具有以下特点&#xff1a; 声…...

贝叶斯分位数回归:超越均值的数据分析方法

贝叶斯分位数回归&#xff1a;超越均值的数据分析方法 【免费下载链接】pymc Python 中的贝叶斯建模和概率编程。 项目地址: https://gitcode.com/GitHub_Trending/py/pymc 问题-方案-验证-应用四象限框架 问题&#xff1a;均值回归的业务痛点 在数据分析实践中&#…...

别再只会用滑动平均了!用Python从零实现数字陷波器,精准滤除50Hz工频干扰

从零构建Python数字陷波器&#xff1a;精准滤除50Hz工频干扰的工程实践 当你在深夜调试一个心爱的传感器项目时&#xff0c;突然发现采集到的数据波形上叠加了一个顽固的50Hz正弦波——这种经历想必不少硬件开发者都深有体会。工频干扰就像电子世界中的背景噪音&#xff0c;无…...

深入解析Waybackpack核心架构:Asset、Pack和Session三大组件

深入解析Waybackpack核心架构&#xff1a;Asset、Pack和Session三大组件 【免费下载链接】waybackpack Download the entire Wayback Machine archive for a given URL. 项目地址: https://gitcode.com/gh_mirrors/wa/waybackpack Waybackpack是一个强大的Python命令行工…...

从CPU指令到C++代码:拆解 std::atomic fetch_add 在 x86 和 ARM 平台上的底层实现与性能差异

从CPU指令到C代码&#xff1a;拆解 std::atomic fetch_add 在 x86 和 ARM 平台上的底层实现与性能差异 在现代高性能并发编程中&#xff0c;原子操作是构建无锁数据结构和线程安全代码的基石。std::atomic 的 fetch_add 操作看似简单&#xff0c;但其底层实现却因硬件架构差异而…...

FatFileSystem:面向资源受限MCU的轻量级FAT文件系统

1. FatFileSystem 嵌入式 FAT 文件系统库深度解析FatFileSystem 是一个轻量级、可移植的嵌入式 FAT 文件系统实现&#xff0c;专为资源受限的微控制器环境设计。它并非完整重写的 FAT32 标准栈&#xff08;如 FatFs&#xff09;&#xff0c;而是对经典开源 FAT 实现的精简裁剪与…...

Zotero插件生态:从翻译到效率提升的进阶配置指南

1. Zotero插件生态全景&#xff1a;从翻译到全流程优化 第一次接触Zotero时&#xff0c;我和大多数人一样&#xff0c;只是把它当作一个简单的文献管理工具。直到某天深夜赶论文&#xff0c;连续手动整理了47篇参考文献后&#xff0c;手指酸痛的我突然意识到&#xff1a;这绝对…...

告别混乱!YOLOv8检测结果自动归档:按日期+编号整理图片和标签(附完整Python脚本)

YOLOv8检测结果智能归档系统&#xff1a;打造高效可追溯的计算机视觉工作流 计算机视觉项目管理的痛点与解决方案 在计算机视觉项目的日常开发中&#xff0c;YOLOv8作为当前最先进的实时目标检测框架之一&#xff0c;被广泛应用于从安防监控到工业质检的各个领域。然而&#xf…...