快速认识并上手Eureka注册中心

news2024/11/15 6:00:46

文章目录

  • 一、初识Eureka
    • 1.1 EurekaServer
    • 1.2 EurekaClient
      • 1.2.1 EurekaClient中的角色
  • 二、EurekaServer
    • 2.1 搭建EurekaServer
      • 2.1.1 依赖引入
      • 2.1.2 添加注解
      • 2.1.3 配置eureka地址
      • 2.1.4 验证
    • 2.2 注册EurekaClient
      • 2.2.1 引入客户端依赖
      • 2.2.2 配置eureka地址
      • 2.2.3 验证
    • 2.3 服务发现

一、初识Eureka

  Eureka是Netflix开源的一个服务发现框架,用于管理分布式系统中的各个服务实例,使得服务消费者可以方便地发现和调用服务提供者。Eureka架构由两个组件构成,一个是服务注册中心(EurekaServer),另一个是服务提供者(EurekaClient)。
在这里插入图片描述

  EurekaServerEurekaClient之间的通信使用的是基于REST的协议,使得服务消费者可以轻松地与服务提供者通信。

1.1 EurekaServer

在这里插入图片描述

  EurekaServer是一个集中式的组件,用于管理服务实例的注册和注销。当一个服务启动时,它会向EurekaServer注册自己的信息,包括服务名称、IP地址、端口号等。EurekaServer会将这些信息保存在一个注册表中,以便服务消费者可以查询到可用的服务实例。服务实例会定期向EurekaServer发送心跳包,以便EurekaServer可以了解服务实例的运行状况,如果某个服务实例长时间没有发送心跳包,EurekaServer就会将其从注册表中删除。

1.2 EurekaClient

  EurekaClient是一个服务提供者,当服务提供者启动时,它会向EurekaServer注册自己提供的服务。同时,EurekaClient还会定期从EurekaServer获取可用的服务实例列表,并缓存这些实例的信息。当服务消费者需要调用服务时,它会向EurekaServer发送一个服务请求,并得到可用的服务实例列表。然后服务消费者根据负载均衡算法选择一个服务实例进行调用。
在这里插入图片描述

1.2.1 EurekaClient中的角色

  在Eureka架构中,服务提供者使用EurekaClient向服务注册中心(EurekaServer)注册自己提供的服务,并且将自己的服务实例信息保存到注册表中。服务消费者也使用EurekaClient从服务注册中心获取可用的服务实例列表,并根据负载均衡算法选择一个服务实例进行调用。

  服务提供者和服务消费者可以分别被称为EurekaClient的providerconsumer
在这里插入图片描述

  作为provider,服务提供者需要在启动时向EurekaServer注册自己提供的服务,并且将自己的服务实例信息保存到注册表中。EurekaClient提供了一些配置选项,使得服务提供者可以轻松地完成这些操作。服务提供者还需要提供API接口来响应服务调用请求。

  作为consumer,服务消费者需要使用EurekaClient从服务注册中心获取可用的服务实例列表,并根据负载均衡算法选择一个服务实例进行调用。EurekaClient提供了一些负载均衡策略,例如随机、轮询、加权轮询等。服务消费者还需要根据具体业务需求,调用相应的API接口来完成服务调用。

  需要注意的是,EurekaClient的provider和consumer不是指具体的服务提供者和服务消费者,而是指向EurekaServer注册服务和从EurekaServer获取服务实例列表的客户端。实际上,一个服务既可以是provider,也可以是consumer,它可以向EurekaServer注册自己提供的服务,并且使用EurekaClient从其他服务提供者获取可用的服务实例列表。

二、EurekaServer

2.1 搭建EurekaServer

2.1.1 依赖引入

在pom.xml文件中引入对应依赖:

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

2.1.2 添加注解

创建一个@EnableEurekaServer注释的Spring Boot配置类,以启用Eureka Server。

package com.caterpillar.eureka;

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

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

2.1.3 配置eureka地址

在配置文件夹创建一个yml文件:

server:
  port: 8888
spring:
  application:
    name: eurekaserver
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka

2.1.4 验证

启动服务后可以通过访问地址进行查阅,例如:

(访问http://localhost:8888)
在这里插入图片描述
显示此页面表示成功搭建。

2.2 注册EurekaClient

2.2.1 引入客户端依赖

在pom.xml文件中引入对应依赖:

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

2.2.2 配置eureka地址

在yml配置中添加eureka地址:

spring:
  application:
    name: userserver
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8888/eureka

2.2.3 验证

启动服务后可以通过访问地址进行查阅,例如:

(访问http://localhost:8888)
在这里插入图片描述
可以看到userservice注册成功。

2.3 服务发现

  1. 实现服务发现,需要搭建服务注册中心并让服务提供方进行注册(2.1、2.2)配置。

  2. 添加@LoadBalanced(负载均衡)注解:

@Bean
@LoadBalanced
public RestTemplate restTemplate(){
	return new RestTemplate();
}
  1. 通过注册的名称进行服务发现并使用:
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;

public Order queryOrderById(Long orderId) {
	// 1.查询订单
	Order order = orderMapper.findById(orderId);
	//利用RestTemplate发起http请求,使用userservice
	String url = "http://userservice/user/" + order.getUserId();
	User user = restTemplate.getForObject(url,User.class);
	order.setUser(user);
	// 4.返回
	return order;
}

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

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

相关文章

【C++】多态---下(多态的原理)

前言&#xff1a; 在多态---上中我们了解了什么是多态&#xff0c;以及多态的使用条件等。本章将进行更深入的学习&#xff0c;我们详细理解多态的原理。 目录 &#xff08;一&#xff09;虚函数表 &#xff08;1&#xff09;虚函数表的引入 &#xff08;2&#xff09;虚表…

RHCE——时间服务器(ntp)

1.配置ntp时间服务器&#xff0c;确保客户端主机能和服务主机同步时间 2.配置ssh免密登陆&#xff0c;能够通过客户端主机通过redhat用户和服务端主机基于公钥验证方式进行远程连接 一.配置ntp时间服务器&#xff0c;确保客户端主机能和服务主机同步时间 1、软件安装 [rootl…

宝可梦朱紫太晶化效果小记

首先&#xff0c;不得不吐槽一下&#xff0c;switch上这么多代宝可梦下来&#xff0c;好玩是好玩&#xff0c;但是整体效果和优化不能说糟烂&#xff0c;只能说稀碎。 看这个朱紫的截帧都给我看吐了&#xff0c;上点心啊老任 回到效果&#xff0c;首先是实现方式 主要有俩点 …

3.Earth Engine语法Javascript版(基本属性2)

1.地图MAp 1. Map.add(item)这个方法通常是在地图展示区加入各种ui使用&#xff0c;如ui.Label 2.Map.centerObject(object, zoom)设置地图居中位置&#xff0c;参数object是矢量数据或者影响数据&#xff1b;zoom是缩放级别。 3.Map.addLayer(ee.Object, visParams, name, …

树莓派利用python-opencv使用CSI摄像头调用监控视频

目录 一、安装python-opencv。 二、使用工具Xshell7和MobaXterm 三、连接并打开CSI摄像头 3.1连线如图所示&#xff1a; 3.2打开摄像头 四、编写摄像头代码调用摄像头 一、安装python-opencv。 一定要选择配置好的安装python-opencv&#xff0c;不要去配置安装&#xff0c…

012 - C++指针

本期我们将学习 C 中的指针。 指针是一个令很多人都很痛苦的内容&#xff0c;然而指针其实没有大家想象中的那么复杂。另外我先要说明本期我们要讨论的是原始的指针&#xff0c;还有一种常用的指针叫智能指针&#xff0c;这个我们在之后的内容中会接触学习。 计算机处理内存&…

LeetCode_二叉搜索树_中等_236.二叉搜索树的最近公共祖先

目录1.题目2.思路3.代码实现&#xff08;Java&#xff09;1.题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 …

jQuery讲解|这一章就够了|(超详细|保姆级)

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;老茶icon &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;计…

【设计模式】生产者消费者模型

带你轻松理解生产者消费者模型&#xff01;生产者消费者模型可以说是同步与互斥最典型的应用场景了&#xff01;文末附有模型简单实现的代码&#xff0c;若有疑问可私信一起讨论。 文章目录一&#xff1a;为什么要使用生产者消费者模型&#xff1f;二&#xff1a;生产者消费者模…

JDK 17:Java 17 中的新特性简介

Java 开发工具包 (JDK) 17 将是一个长期支持 (LTS) 版本&#xff0c;预计来自 Oracle 的扩展支持将持续数年。该功能集定于 6 月 10 日冻结&#xff0c;届时 JDK 17 将进入初始阶段。作为 OpenJDK JDK 17 的一部分提交的功能包括&#xff1a; 特定于上下文的反序列化过滤器允许…

计算机网络 实验一

⭐计网实验专栏&#xff0c;欢迎订阅与关注&#xff01; ★观前提示&#xff1a;本篇内容为计算机网络实验。内容可能会不符合每个人实验的要求&#xff0c;因此以下内容建议仅做思路参考。 一、实验目的 掌握在Packet Tracer软件中搭建实验平台&#xff0c;配置基本的网络参数…

8D和A3报告

8D和3A报告&#xff0c;他们都不仅仅是记录问题的一种文书&#xff0c;而是解决问题的工具。 A3发展于TPS &#xff08;Toyota Production system&#xff09;&#xff0c;可以用来解决问题&#xff0c;沟通&#xff0c;记录&#xff0c;是一种流程&#xff0c;当人们在使用A3…

MySQL中添加新字段

© Ptw-cwl 要在MySQL中添加新字段&#xff0c;您可以使用ALTER TABLE语句。 以下是添加新字段的基本语法&#xff1a; ALTER TABLE table_name ADD column_name datatype;其中&#xff1a; table_name 是您要在其中添加新字段的表的名称。column_name 是新字段的名称。…

Linux安装Anaconda

目录1.下载Anaconda的安装包2.安装Anaconda3.用conda创建虚拟环境4.安装项目依赖包1.下载Anaconda的安装包 首先需要在官网上选择需要安装的版本。 官网地址&#xff1a;https://repo.anaconda.com/archive/&#xff0c;如选择当前最新版本进行安装&#xff1a; https://repo.…

TWIST阅读笔记

目录TWIST: Two-Way Inter-label Self-Training for Semi-supervised 3D Instance Segmentation摘要本文方法语义引导的实例提议生成提议纠正基于提议的伪标签更新TWIST: Two-Way Inter-label Self-Training for Semi-supervised 3D Instance Segmentation 摘要 利用无标签数…

浙大版《C语言程序设计实验与习题指导(第3版)》题目集实验2合集

实验2-1-1 计算摄氏温度 本题要求编写程序&#xff0c;计算华氏温度100F对应的摄氏温度。计算公式&#xff1a;C5(F−32)/9&#xff0c;式中&#xff1a;C表示摄氏温度&#xff0c;F表示华氏温度&#xff0c;输出数据要求为整型。 输入格式:本题目没有输入。 输出格式:按照下…

Java每日一练(20230413)

目录 1. 子集 II &#x1f31f;&#x1f31f; 2. 快乐数 ※ 3. 整数反转 ※ &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 子集 II 给你一个整数数组 nums &#xff0c;其中可能…

【pip换源操作】解决用pip下载Python第三方库慢问题

python自带的第三方库使用pip安装速度会很慢&#xff0c;还有可能会报错。 常见的报错信息有&#xff1a; check_hostname requires server_hostname raise ValueError(“check_hostname requires server_hostname”) ValueError: check_hostname requires server_hostname EO…

波尔模型的实验验证之类氢粒子光谱类实验

光谱产生的原因&#xff1a;原子中电子在轨道上跃迁产生&#xff0c;如莱曼系为电子从n2,3,4等轨道跃迁到n1的基态轨道产生。 中心的原点为原子核&#xff0c;中心最接接近原子核的圆为n1的电子轨道。 r_na_0n^2&#xff0c;轨道大小正比于n的平方 根据电子轨道图即可以获得…

AE开发之图层渲染20210603

AE开发之图层渲染比例符号化地图的整饰唯一值符号的符号化过程点符号设置&#xff0c;线符号设置标注图层&#xff0c;&#xff08;写得不好&#xff0c;不推荐看) 唯一值符号化&#xff0c;字段进行设置&#xff0c;这里用到了UniqueValueRenderer接口&#xff0c;这里面有一…