Eureka详解

news2024/11/23 11:57:01

Eureka概述和架构

Eureka

Spring Cloud Eureka 是Netflix 开发的注册发现组件,本身是一个基于 REST 的服务。提供注册与发现,同时还提供了负载均衡、故障转移等能力

Eureka3个角色

服务中心,服务提供者,服务消费者

Eureka Server:服务器端。它提供服务的注册和发现功能,即实现服务的治理。

Service Provider:服务提供者。它将自身服务注册到Eureka Server中,以便“服务消费者”能够通过服务器端提供的服务清单(注册服务列表)来调用它。

Service Consumer:服务消费者。它从 Eureka 获取“已注册的服务列表”,从而消费服务

springcloud架构

Eureka微服务信息完善

默认

SpringCloud体系里服务实体向eureka注册时注册名默认是

IP名:应用名:应用端口名

Actuator依赖

<!-- actuator -->

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

修改application.yml

eureka:            

  instance:

  #根据需要自己起名字,SpringCloud体系里服务实体向eureka注册时注册名

   instance-id: springcloud-dept-8001   

Eureka服务自保与剔除

服务剔除服务自保的选择

服务剔除/服务自保,注册中心在同一时刻,只能用一种

在实际应用里,并不是所有无心跳的服务都不可用,也许因为短暂的网络抖动等原因,导致服务节点与注册中心之间续约不上,但服务节点之间的调用还是属于可用状态,这时如果强行剔除服务节点,可能会造成大范围的业务停滞

服务剔除

服务剔除把服务节点果断剔除,即使你的续约请求晚了一步也毫不留情

服务自保默认开启

服务自保把当前所有节点保留

服务自保模式往往是为了应对短暂的网络环境问题,在理想情况下服务节点的续约成功率应该接近100%,如果突然发生网络问题,比如一部分机房无法连接到注册中心,这时候续约成功率有可能大幅降低。但考虑到Eureka采用客户端的服务发现模式,客户端手里有所有节点的地址,如果服务节点只是因为网络原因无法续约但其自身服务是可用的,那么客户端仍然可以成功发起调用请求。这样避免了被服务剔除给错杀

服务自保修改application.yml

这是服务自保的总闸,以下配置将强制关闭服务自保,即便上面的自动开关被触发,也不能开启自保功能

# 参数来关闭保护机制,以确保注册中心可以将不可用的实例正确剔除,默认为true。

eureka.server.enable-self-preservation=false;

Eureka服务发现

服务发现接口

@Autowired
private DiscoveryClient discoveryClient;

获取所有服务

@GetMapping("/discovery")
public Object testDiscoveryClient(){
    //获取所有服务列表清单
    List<String> services = discoveryClient.getServices();
    for (String service : services) {
        System.out.println(service);
    }
    return this.discoveryClient;
}

获取服务生产者实例及信息

//服务生产者名字
String hostName="CLOUD-PAYMENT-PROVIDER";
//1.服务发信中获取所有服务生产者的实例
List<ServiceInstance> instances = discoveryClient.getInstances(hostName);
//2.获取具体实例  服务生产者的实例
ServiceInstance serviceInstance = instances.get(0);
System.out.println(serviceInstance.getUri());
System.out.println(serviceInstance.getPort());
System.out.println(serviceInstance.getHost());
System.out.println(serviceInstance.getServiceId());
System.out.println("=========================");

Eureka服务发现

RestTemplate

RestTemplate 是从 Spring3.0 开始支持的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版:例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute

配置类

我们会将RestTemplate注入到容器当中,是为了让他保持单例,当我们哪个类要使用的时候直接从容器里面获取即可。这样可以避免每调用一次创建一个RestTemplate对象

/**
 * RestTemplate放入容器中
 */
@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

@LoadBalanced暂时不要用

在配置类中的restTemplate添加@LoadBalanced注解

这个注解会 给这个组件 有负载均衡的功能

使用

@GetMapping("/index")
public String index() {
    //服务生产者名字
    String hostName ="CLOUD-PAYMENT-PROVIDER";//Application底下
    //远程调用方法具体URL(接口路径)
    String url = "/payment/index";
    //1.服务发信中获取所有服务生产者的实例
    List<ServiceInstance> instances = discoveryClient.getInstances(hostName);
    //2.获取具体实例  服务生产者的实例
    ServiceInstance serviceInstance = instances.get(0);
    //3.发起远程调用(url/接口方法返回类型)
    String rest = restTemplate.getForObject(serviceInstance.getUri()+url, String.class);
    return rest;
}

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

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

相关文章

Win11的两个实用技巧系列之蓝屏死循环解决办法、调高进程的优先级方法

Win11蓝屏死循环怎么办?Win11蓝屏死循环解决办法 有用户安装Win11系统的时候&#xff0c;重新启动电脑的时候&#xff0c;会一直进入蓝屏的错误循环中&#xff0c;本文就为大家带来详细的解决方法&#xff0c;需要的朋友一起看看吧 Win11蓝屏死循环解决办法分享。有用户安装W…

Ubuntu18.04系统及相关软件安装恢复过程

Ubuntu18.04系统及相关软件安装恢复过程 一、常用软件安装1. [系统安装](https://blog.csdn.net/qq_43309940/article/details/116656810)2. [显卡驱动安装](https://blog.csdn.net/qq_43309940/article/details/126898929)3. [ROS Melodic安装](https://ismango.blog.csdn.net…

[Python]爬虫基础——urllib库

urllib目录 一、简介二、发送请求1、urlopen()函数2、Request()函数 三、异常处理四、解析URL五、分析Robots协议 一、简介 urllib库是Python内置的标准库。包含以下四个模块&#xff1a; 1、request&#xff1a;模拟发送HTTP请求&#xff1b; 2、error&#xff1a;处理HTTP请…

实验六 UML建模工具应用

一、实验目的 1.掌握面向对象开发思想及实现机制 2.理解并掌握UML常用图&#xff08;重点&#xff1a;类、对象图、用例图&#xff09; 3.掌握并常见UML建模工具&#xff0c;并绘制UML各种图 二、实验准备与要求 1.StarUML(简称SU)&#xff0c;是一种创建UML类图&#xff0c…

洛谷P8597 [蓝桥杯 2013 省 B] 翻硬币C语言/C++

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面&#xff0c;用 o 表示反面&#xff08;是小写字母&#xff0c;不是零&#xff09;&#xff0c;比如可能情形是 **oo***oooo&#xff0c;如果…

ideaSSM医院挂号管理系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 SSM医院挂号管理系统是一套完善的完整医院类型系统&#xff0c;结合SSM框架和bootstrap完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式 开发&#xff09;&#xff0c;系统具有完整的源代…

leetcode 1143. 最长公共子序列

1. dp 数组的定义 下标&#xff1a; 以 i - 1 和 j - 1 为结尾的子序列 值&#xff1a;以 i - 1 和 j - 1 为结尾的最长公共子序列的长度 2. 递推公式 if(text1[i - 1] text2[j - 1]) // 相等 dp[i][j] dp[i - 1][j - 1] 1 ; elsedp[i][j] max(dp[i - 1][j],…

【问题记录】flask开发blog

文章目录 小知识点问题1. 文章标签显示错误2. 文章状态无法回显&#xff08;open)3. 用户管理页面&#xff0c;图标无法显示4. BuildError5. 用户管理添加用户&#xff0c;使用重复的用户名会报错(open)6. 添加用户&#xff0c;不上传头像会报错(open)7. 部分标签删除时报错&am…

设计模式 Template Method Pattern(Inheritance) vs Strategy Pattern(Delegation)

Template Method Pattern 和 Strategy Pattern 是两种常用的行为设计模式。他们分别用了继承inheritance和委托delegation两种不同的实现方法&#xff0c;因为上篇文章讲过了UML图&#xff0c;所以这篇顺便可以把两种不同模式的UML图都带出来一起说明。 Template Method Patte…

Mybatis的PageHepler用法

分页原理 分页在使用时的分类 物理分页: 在操作数据库中的表时,sql语句中使用了limit ?,?,此时sql语句返回的结果是分页结果 逻辑分页: 依赖程序的代码,其原理为:通过sql语句将数据库表中的所有数据都查询出,之后将数据保存在内存中,最终要显示的数据若涉及到分页,到内存中…

Java企业级信息系统开发01—采用spring配置文件管理bean

文章目录 一、Web开发技术二、spring框架&#xff08;一&#xff09;spring官网&#xff08;二&#xff09;spring框架优点&#xff08;三&#xff09;Spring框架核心概念1、IoC&#xff08;Inversion of Control&#xff09;和容器2、AOP&#xff08;Aspect-Oriented Programm…

Golang 包使用注意事项

1&#xff09;在给一个文件打包时&#xff0c;该包对应一个文件夹&#xff0c;比如这里的utils文件夹对应的包名就是utils&#xff0c;文件的包名通常和文件所在的文件夹名一致&#xff0c;一般为小写字母。 2&#xff09;当一个文件要使用其它包函数或变量时&#xff0c;需要…

【AI聊天 | GPT4教学】 —— 微软 New Bing GPT4 申请与使用保姆级教程(免魔法)

目录 认识 New Bing 1. 下载 Microsoft Edge 浏览器 2. 注册并登录 Microsoft 账号 3. 如何免科学上网使用 New Bing&#xff1f; 4. 加入 WaitList 候补名单 5. 使用 New Bing&#xff01; 6. 使用 Skype 免科学上网访问 New Bing&#xff01; 7. 在 Chrome 浏览器中使…

gpt人工智能详细介绍

chatgpt人工智能怎么下载 OpenAI ChatGPT不是一款普通的软件&#xff0c;它是由OpenAI开发的一款基于人工智能技术的自然语言生成器。因此&#xff0c;它并不需要像普通软件一样下载和安装在您的计算机上。 作为一个云端服务&#xff0c;OpenAI ChatGPT可以通过您的浏览器直接…

HBASE入门 基本shell命令(一)

一、登录连接shell $HBASE_HOME/bin/hbase shell二、基本命令 2.1help命令 help创建命名空间 create_namespace bigdata;查看命名空间 list_namespace命名空间default和habase是系统自带的 三、DDL 3.1创建表 create bigdata:student, {NAME > name, VERSIONS> 5}…

每日学术速递5.6

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.AG3D: Learning to Generate 3D Avatars from 2D Image Collections 标题&#xff1a;AG3D&#xff1a;学习从 2D 图像集合生成 3D 头像 作者&#xff1a;Zijian Dong, Xu Chen, …

Amper Music:AI创意音乐工具

【产品介绍】 Amper Music 是一家位于美国纽约的人工智能音乐技术公司&#xff0c;成立于2014年。 Amper Music是一个AI创意音乐工具&#xff0c;能让任何人为自己的内容制作原创音乐。无论你需要为视频、播客或互动内容配乐&#xff0c;Amper Music都能提供一个简单而强大的解…

【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制

源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/87637177 PHP在线定制商城网站源码&#xff0c;免费开源、免费下载。本商城基于mycncart开发。安装成功后即可浏览&#xff0c;你可以在后台->安装扩展功能上传安装插件&#xff0c;在代码调整中点击刷…

【边缘设备】yolov5训练与rknn模型导出并在RK3588部署(亲测有效)

保姆级教程&#xff0c;看这一篇就够用了 环境准备 将宿主机和开发板接入同一个局域网&#xff0c;方便开发。 宿主机 PC电脑&#xff0c;x86_64, 带显卡, 配置不表, 能训练和开发即可。系统&#xff1a; ubuntu 22.04 LTS 版本( ubuntu 18.04 LTS 以上)自带的远程软件&…

windeployqt工具打包C++ QT项目

目录 前言方法TIP 前言 使用VS编写好QT项目后&#xff0c;有时需要发送给他人进行测试。在此情况下&#xff0c;发送所有项目文件显然不可取&#xff0c;因为exe文件不能独立运行&#xff0c;故在测试前需要先配置项目环境&#xff0c;以确保运行所需的库文件能够完全。 因此&…