Eureka 注册中心——服务的注册与发现

news2024/12/25 12:53:20

在这里插入图片描述

文章目录

  • 1.Eureka的结构和作用
  • 2.搭建eureka-server
      • 2.1.创建eureka-server服务
      • 2.2.引入eureka依赖
      • 2.3.编写启动类
      • 2.4.编写配置文件
      • 2.5.启动服务
  • 3.服务注册
      • 3.1.引入依赖
      • 3.2 配置文件
      • 3.3启动多个user-service实例
    • 4.服务发现
      • 4.1引入依赖
      • 4.2 配置文件
      • 4.3 服务拉取和负载均衡
  • 最后说一句

1.Eureka的结构和作用

这些问题都需要利用SpringCloud中的注册中心来解决,其中十分流行的注册中心就是Eureka,其结构如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJV8fXUi-1682045966784)(新建 Markdown.assets/image-20210713220104956.png)]

回答之前的各个问题。

问题1:order-service如何得知user-service实例地址?

获取地址信息的流程如下:

  • user-service服务实例启动后,将自己的信息注册到eureka-server(Eureka服务端)。这个叫服务注册
  • eureka-server保存服务名称到服务实例地址列表的映射关系
  • order-service根据服务名称,拉取实例地址列表。这个叫服务发现或服务拉取

问题2:order-service如何从多个user-service实例中选择具体的实例?

  • order-service从实例列表中利用负载均衡算法选中一个实例地址
  • 向该实例地址发起远程调用

问题3:order-service如何得知某个user-service实例是否依然健康,是不是已经宕机?

  • user-service会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
  • 当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除
  • order-service拉取服务时,就能将故障实例排除了

注意:一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端

因此,步骤包括:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TAMqXIrm-1682045966785)(新建 Markdown.assets/image-20210713220509769.png)]

2.搭建eureka-server

首先大家注册中心服务端:eureka-server,这必须是一个独立的微服务

2.1.创建eureka-server服务

在cloud-demo父工程下,创建一个子模块:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UXeUZ5Xo-1682045966785)(新建 Markdown.assets/image-20210713220605881.png)]

填写模块信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1yIAn2tk-1682045966786)(新建 Markdown.assets/image-20210713220857396.png)]

然后填写服务信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iSszDArO-1682045966786)(新建 Markdown.assets/image-20210713221339022.png)]

2.2.引入eureka依赖

引入SpringCloud为eureka提供的starter依赖:

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

2.3.编写启动类

给eureka-server服务编写一个启动类,一定要添加一个@EnableEurekaServer注解,开启eureka的注册中心功能:

package cn.itcast.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

2.4.编写配置文件

编写一个application.yml文件,内容如下:

server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka

2.5.启动服务

启动微服务,然后在浏览器访问:http://127.0.0.1:10086

看到下面结果应该是成功了:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S4SbtbpG-1682045966787)(新建 Markdown.assets/image-20210713222157190.png)]

3.服务注册

下面,我们将user-service注册到eureka-server中去。

3.1.引入依赖

在user-service的pom文件中,引入下面的eureka-client依赖:

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

3.2 配置文件

在user-service中,修改application.yml文件,添加服务名称、eureka地址:

spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

3.3启动多个user-service实例

为了演示一个服务有多个实例的场景,我们添加一个SpringBoot的启动配置,再启动一个user-service。

首先,复制原来的user-service启动配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cl73hguZ-1682045966787)(新建 Markdown.assets/image-20210713222656562.png)]

然后,在弹出的窗口中,填写信息:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2s8RMdae-1682045966788)(新建 Markdown.assets/image-20210713222757702.png)]

现在,SpringBoot窗口会出现两个user-service启动配置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWtIYNCB-1682045966788)(新建 Markdown.assets/image-20210713222841951.png)]

不过,第一个是8081端口,第二个是8082端口。

启动两个user-service实例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MCjn4S5X-1682045966788)(新建 Markdown.assets/image-20210713223041491.png)]

查看eureka-server管理页面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hCQV4g5V-1682045966789)(新建 Markdown.assets/image-20210713223150650.png)]

4.服务发现

下面,我们将order-service的逻辑修改:向eureka-server拉取user-service的信息,实现服务发现。

4.1引入依赖

之前说过,服务发现、服务注册统一都封装在eureka-client依赖,因此这一步与服务注册时一致。

在order-service的pom文件中,引入下面的eureka-client依赖:

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

4.2 配置文件

服务发现也需要知道eureka地址,因此第二步与服务注册一致,都是配置eureka信息:

在order-service中,修改application.yml文件,添加服务名称、eureka地址:

spring:
  application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

4.3 服务拉取和负载均衡

最后,我们要去eureka-server中拉取user-service服务的实例列表,并且实现负载均衡。

不过这些动作不用我们去做,只需要添加一些注解即可。

在order-service的OrderApplication中,给RestTemplate这个Bean添加一个@LoadBalanced注解:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kwzym963-1682045966789)(新建 Markdown.assets/image-20210713224049419.png)]

修改order-service服务中的cn.itcast.order.service包下的OrderService类中的queryOrderById方法。修改访问的url路径,用服务名代替ip、端口:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4vgToR3t-1682045966789)(新建 Markdown.assets/image-20210713224245731.png)]

spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。

最后说一句

感谢大家的阅读,文章通过网络资源与自己的学习过程整理出来,希望能帮助到大家。

才疏学浅,难免会有纰漏,如果你发现了错误的地方,可以提出来,我会对其加以修改。

在这里插入图片描述

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

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

相关文章

flowable流程图绘制工具flowable-ui的安装和使用

一.简介 记录绘制flowable图的过程。 二.下载安装 1.下载 我这边是windows的&#xff0c;下载的版本是6.8.0&#xff0c;zip那个就可以&#xff0c;tar.gz是linux的 下载地址&#xff1a;https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0 下载截…

PyCharm-2023安装教程

访问JetBrains的官方网站&#xff0c;下载PyCharm最新版本的安装程序。 双击下载的安装程序&#xff0c;在弹出的安装向导中点击“下一步”。 阅读许可协议&#xff0c;并同意协议条款。 选择安装路径。默认情况下&#xff0c;PyCharm会安装在C:\Program Files\JetBrain…

STL——Lambad表达式

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&…

【C语言】输入输出、字符串操作、内存操作、文件操作函数

三对基本输入输出函数 1.gets()&#xff0c;puts() gets()从标准输入中获取一个字符串&#xff0c;到str&#xff08;自己创建的char型数组&#xff09;中&#xff0c;读到换行或输入末尾结束获取r&#xff1b; 成功返回str&#xff0c;失败返回空。 char *gets(char *str)…

ARM汇编第一次上机(顺序、分支、单重循环)【嵌入式系统】

ARM汇编第一次上机&#xff08;顺序、分支、单重循环&#xff09;【嵌入式系统】 前言推荐说明ARM汇编第一次上机&#xff08;顺序、分支、单重循环&#xff09;内容1 sum1流程图代码编写结果分析 2 sum2流程图代码编写结果分析 3 numbers流程图代码编写结果分析 最后 前言 20…

Python统计学:配对样本t检验~均值差的检验

配对样本 t检验 用于两个不同条件下&#xff0c;对同一对象进行测量所得的两个样本均值的区别。 比如吃药前和吃药后体温是否有变化&#xff0c;大鱼钩和小鱼钩钓的鱼的体长是否有差异等。 配对样本是什么&#xff1f; 配对样本需要满足两个基本条件&#xff1a; 1. 样本间存…

Java版本工程管理系统软件源码 自主研发,工程行业适用

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

【Java 数据结构】PriorityQueue(堆)的使用及源码分析

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

ES配置与使用

一、单机版安装 地址&#xff1a;www.elastic.co 下载tar格式&#xff0c;或者复制链接&#xff0c;wget url下载 启动&#xff1a; ./bin/elasticsearch 二、插件 解决页面问题&#xff0c;GitHub下载&#xff1a;elasticsearch-head 需要node环境。node -v检查node版本…

TryHackMe-Jack(boot2root)

Jack 破坏运行Wordpress的Web服务器&#xff0c;获得低特权用户&#xff0c;并使用Python模块将您的权限升级到root。 端口扫描 循例nmap web枚举 robots.txt wpscan枚举user wpscan直接爆 得到wendy的密码 直接登后台 根据题目提示&#xff0c;利用user role editor帮助我们…

使用chatgpt写一个划词翻译的浏览器插件

最近在网上流行的chatgpt&#xff0c;实在是太火了&#xff0c;好多人在使用&#xff0c;而且它的用处实在是太丰富了&#xff0c;能帮助我们解决很多问题&#xff0c;就比如说&#xff1a;编程&#xff0c;生成图片&#xff0c;翻译等。太丰富了。我看网上很多人都在说&#x…

江苏三年制专转本本法学类考纲配套课程及复习资料

法学类专业课内容比较多&#xff0c;需要背的也很多&#xff0c;今天我来给大家看一下我们应该如何学习法学类&#xff1f;01&#xff1a;考试科目考试科目&#xff1a;大学语文专业课基础理论考试课程A &#xff1a;法理学约 15%课程B&#xff1a;宪法学 约 15%课程C &#xf…

第九讲 常用数据结构之列表-2

列表的方法 列表类型的变量拥有很多方法可以帮助我们操作一个列表&#xff0c;假设我们有名为foos的列表&#xff0c;列表有名为bar的方法&#xff0c;那么使用列表方法的语法是&#xff1a;foos.bar()&#xff0c;这是一种通过对象引用调用对象方法的语法。后面我们讲面向对象…

接口自动化【三】(接口依赖之上传图片;Template 模块用法)

前言 一、后台上传图片接口 二、用postman来做这种有依赖的接口 三、使用 Template 模块进行字符串的替换 四、使用 Template 模块进行字符串的替换&#xff08;针对于Excel表格中的数据&#xff09; 总结 前言 本章中&#xff0c;对接口的依赖做了阐述&#xff0c;后台上…

怎么用Elai智能数字人来直播带货?

随着直播带货的火爆&#xff0c;越来越多的商家和品牌想要借助这一新兴的营销方式来提升销量和品牌影响力。但是&#xff0c;直播带货也面临着一些挑战&#xff0c;比如真人主播的成本高、稳定性差、风险大等。那么&#xff0c;有没有一种更好的解决方案呢&#xff1f;Elai智能…

leetcode重点题目分类别记录(三)动态规划深入

文章目录 动态规划背包问题01背包抽象出求解目标尝试进程子问题拆分基本情况根据拆分过程定义dp数组与转移方程遍历顺序与状态压缩模板归纳题目应用变种提升组合问题多维01背包有特殊限制的01背包 完全背包尝试进行子问题拆分转移方程题目应用变种提升-求组合/排列数 打家劫舍变…

【案例教程】CMIP6数据处理方法与典型案例分析实践技术

气候变化关系到农业、生态系统、社会经济和人类生存与发展&#xff0c;是当今世界关注的重点问题之一。IPCC&#xff08;Intergovernmental Panel on Climate Change&#xff09;第6次评估报告指出&#xff0c;自 20 世纪 50 年代以来&#xff0c;从全球平均气温和海温升高、大…

LightGBM^v^

LightGBM LightGBM&#xff08;Light Gradient Boosting Machine&#xff09;是一个基于梯度提升决策树&#xff08;GBDT&#xff09;的高效机器学习框架。它是由微软公司开发的&#xff0c;旨在提供更快、更高效的训练和预测性能。LightGBM在许多数据科学竞赛中都表现出色&am…

什么品牌的蓝牙耳机通话音质最好?通话音质好的蓝牙耳机

使用蓝牙耳机&#xff0c;无需取下耳机即可接听电话&#xff0c;来电时只需按一个按钮即可开始讲话&#xff0c;可以说是十分方便&#xff0c;为了帮助您找到可以帮助您拨打和接听电话的耳机&#xff0c;我们收集了适合通话的蓝牙耳机。 一、南卡小音舱Lite2蓝牙耳机 动圈单元…

亚马逊巴西站对中国商家正式开放试运营,如何快速提升销量

近日&#xff0c;亚马逊全球开店宣布&#xff0c;亚马逊巴西站对中国商家正式开放试运营&#xff0c;在亚马逊巴西站试运营期间&#xff0c;亚马逊卖家是能获得很多扶持的&#xff0c;比如说大量额外引流资源支持&#xff0c;营销方面&#xff0c;巴西卖家是可以使用优惠券&…