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

SpringCloud微服务技术栈的注册中心Eureka

文章目录

  • SpringCloud微服务技术栈的注册中心Eureka
    • 简介
    • Eureka特点
    • 操作步骤
      • 环境准备
      • 创建Eureka Server
      • 注册服务提供方
      • 调用服务消费方
    • 总结

SpringCloud微服务技术栈的注册中心Eureka

简介

在微服务架构中,服务的数量庞大,而且每个服务可能会有多个实例。此时,需要一个中心化的地方来管理和维护各个服务的相关信息,这就是微服务治理中很重要的一环:服务注册与发现。其中,服务注册是指将提供服务的应用实例注册到注册中心,而服务发现则是指从注册中心中获取服务实例列表并调用服务。本文将介绍SpringCloud微服务技术栈中的注册中心Eureka。

Eureka特点

Eureka是Netflix开源的一个基于REST的服务治理解决方案,主要包括服务注册与发现机制。Eureka的特点如下:

  1. 高可用:Eureka采用了Peer-to-Peer的复制方式,所有节点均可作为服务注册中心,这样就不会出现单点故障;同时,Eureka还支持使用Zookeeper、Consul等作为注册中心。
  2. 服务注册:服务提供方(Provider)通过HTTP方式向Eureka注册中心注册自己的服务实例,包括应用名、主机名、IP地址和端口等元数据。
  3. 服务发现:服务消费方(Consumer)通过Eureka注册中心获取对应服务的实例列表,并通过负载均衡算法选取其中一台实例进行调用。
  4. 心跳机制:Eureka利用心跳机制保证服务实例的可用性,即每隔30秒向注册中心发送一次心跳信号;同时,注册中心会定期清理没有心跳的服务实例。

操作步骤

环境准备

  • JDK 1.8
  • Spring Boot 2.0.3.RELEASE
  • Spring Cloud Finchley.RELEASE

创建Eureka Server

  1. 在Maven项目中添加以下依赖:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    
  2. 在启动类上添加@EnableEurekaServer注解:

    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}}
    
  3. 在配置文件中添加如下配置:

    server:port: 8761eureka:instance:hostname: localhostclient:register-with-eureka: falsefetch-registry: falseserver:enable-self-preservation: false
    
    • server.port:Eureka Server的端口号,默认为8761。
    • eureka.instance.hostname:当前Eureka Server的地址。
    • eureka.client.register-with-eureka:是否将当前应用注册到Eureka Server,默认为true。
    • eureka.client.fetch-registry:是否从Eureka Server获取服务注册信息,默认为true。
    • eureka.server.enable-self-preservation:是否启用自我保护机制,默认为true。
  4. 启动项目,访问http://localhost:8761/,即可看到Eureka Server的控制台界面。

注册服务提供方

  1. 在Maven项目中添加以下依赖:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
  2. 在配置文件中添加如下配置:

    spring:application:name: demo-serviceserver:port: 8080eureka:client:service-url:defaultZone: http://localhost:8761/eureka/
    
    • spring.application.name:当前应用的名称,用于注册到Eureka Server中。
    • server.port:当前应用的端口号。
    • eureka.client.service-url.defaultZone:Eureka Server的地址。
  3. 在启动类上添加@EnableDiscoveryClient注解:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}
    
  4. 编写一个RESTful服务接口作为演示:

    @RestController
    public class DemoController {@GetMapping("/hello")public String hello() {return "Hello, World!";}}
    
  5. 启动项目,可以看到服务已成功注册到Eureka Server中。

调用服务消费方

  1. 在Maven项目中添加以下依赖:

    <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    
  2. 在配置文件中添加如下配置:

    spring:application:name: demo-consumereureka:client:service-url:defaultZone: http://localhost:8761/eureka/
    
    • spring.application.name:当前应用的名称。
    • eureka.client.service-url.defaultZone:Eureka Server的地址。
  3. 在启动类上添加@EnableDiscoveryClient注解:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class DemoConsumerApplication {public static void main(String[] args) {SpringApplication.run(DemoConsumerApplication.class, args);}}
    
  4. 编写一个RESTful服务接口作为演示:

    @RestController
    public class DemoController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/hello")public String hello() {String url = "http://demo-service/hello";return restTemplate.getForObject(url, String.class);}}
    
  5. 启动项目,访问http://localhost:8080/hello,会看到返回结果Hello, World!

总结

本文介绍了SpringCloud微服务技术栈的注册中心Eureka,并以实际操作的方式进行了详细的说明。在实际使用中,Eureka的高可用、服务注册与发现、心跳机制等功能都能够有效地提升微服务架构的可用性和稳定性。

相关文章:

SpringCloud微服务技术栈的注册中心Eureka

文章目录SpringCloud微服务技术栈的注册中心Eureka简介Eureka特点操作步骤环境准备创建Eureka Server注册服务提供方调用服务消费方总结SpringCloud微服务技术栈的注册中心Eureka 简介 在微服务架构中&#xff0c;服务的数量庞大&#xff0c;而且每个服务可能会有多个实例。此…...

Unity最新热更新框架 hybridclr_addressable

GitHub:YMoonRiver/hybridclr_addressable: 开箱即用的商业游戏框架&#xff0c;集成了主流的开发工具。将主流的GameFramework修改&#xff0c;支持Addressable和AssetBundle&#xff0c;已完善打包工具和流程。 (github.com) # 新增GameFramework Addressables 开箱即用 # 新…...

【c语言】一维数组***特性、存储原理

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

[oeasy]python0133_[趣味拓展]好玩的unicode字符_另类字符_上下颠倒英文字符

另类字符 回忆上次内容 上次再次输出了大红心♥ 找到了红心对应的编码黑红梅方都对应有编码 原来的编码叫做 ascii️ \u这种新的编码方式叫unicode包括了 中日韩字符集等 各书写系统的字符集 除了这些常规字符之外 还有什么好玩的东西呢&#xff1f; 颠倒字符 这个网站可以…...

找凶手,定名次,字符串旋转,杨氏矩阵

1.找凶手问题&#xff1a; //题目名称&#xff1a; //猜凶手 //题目内容&#xff1a; //日本某地发生了一件谋杀案&#xff0c;警察通过排查确定凶手必为4个嫌疑犯的一个。 //以下为4个嫌疑犯的供词&#xff1a; //A说&#xff1a;不是我 //B说&#xff1a;是C //C说&#xff…...

Python 进阶指南(编程轻松进阶):十四、实践项目

原文&#xff1a;http://inventwithpython.com/beyond/chapter14.html 到目前为止&#xff0c;这本书已经教会了你编写可读的 Python 风格代码的技巧。让我们通过查看两个命令行游戏的源代码来实践这些技术&#xff1a;汉诺塔和四人一排。 这些项目很短&#xff0c;并且基于文…...

Redis的五种数据类型及应用场景

Redis是一个开源的key-value数据库。 五种数据类型 String&#xff0c;List&#xff0c; Set&#xff0c;SortedSet&#xff0c;Hash List类型可以存储多个String。 Set类型可以存储不同的String。 SortedSet可以存储String的排序。 Hash可以存储多个key-value对。 String …...

c++List的详细介绍

cList详细使用 write in front 作者&#xff1a; 不进大厂不改名 专栏&#xff1a; c 作者简介&#xff1a;大一学生 希望能向其他大佬和同学学习&#xff01; 本篇博客简介&#xff1a;本文主要讲述了一种新容器list的使用方法&#xff0c;相信你在学了后&#xff0c;能够加深…...

Heap堆的升序排序

在heap堆中&#xff0c;大根堆是一种特殊的堆&#xff0c;它满足下列性质&#xff1a;对于任意一个非叶子节点i&#xff0c;其左右子节点的值均小于等于它本身的值。 在大根堆中&#xff0c;堆顶元素永远是值最大的元素&#xff0c;所以将堆顶元素不断取出来&#xff0c;就相当…...

小程序开发收费价目表

小程序作为一种新兴应用形式&#xff0c;正在逐渐成为企业和个人推广、运营的重要手段。然而&#xff0c;小程序开发的价格因项目规模和复杂程度差异较大&#xff0c;令不少人望而却步。本文将从小程序开发的相关因素入手&#xff0c;探讨小程序开发的价格范围和算法。 一、小…...

Dubbo服务暴露步骤详解

文章目录Dubbo服务暴露步骤详解背景介绍理论知识讲解什么是服务暴露&#xff1f;Dubbo 服务暴露的基本原理操作步骤具体实现环境准备实现服务接口实现服务提供者配置 Dubbo 服务提供者启动服务提供者实现服务消费者配置 Dubbo 服务消费者测试总结Dubbo服务暴露步骤详解 背景介…...

第十四届蓝桥杯编程题部分代码题解

C. 冶炼金属 最大值就是取 a/ba / ba/b 的最小值&#xff0c;最小值就是二分找到满足 mid∗(bi1)≥aimid * (b_i 1) ≥ a_imid∗(bi​1)≥ai​ 的最小值 #include<bits/stdc.h> #define int long long #define x first #define y second using namespace std;void sol…...

统一结果封装异常处理

统一结果封装&异常处理2&#xff0c;统一结果封装2.1 表现层与前端数据传输协议定义2.2 表现层与前端数据传输协议实现2.2.1 环境准备2.2.2 结果封装步骤1:创建Result类步骤2:定义返回码Code类步骤3:修改Controller类的返回值步骤4:启动服务测试3&#xff0c;统一异常处理3…...

数字藏品平台的发展趋势是什么?

1、数字藏品平台具体内容生产模式将在PGC&#xff08;专业生产制造具体内容&#xff09;方式向PUGC&#xff08;技术专业用户生产内容&#xff09;方式变化。 目前&#xff0c;中国热门的数字藏品平台都在PGC模式中持续发展的&#xff0c;而国外流行NFT平台则比较多选用UGC&am…...

Vue3对话框(Dialog)

Vue2对话框&#xff08;Dialog&#xff09; 可自定义设置以下属性&#xff1a; 标题&#xff08;title&#xff09;&#xff0c;类型&#xff1a;string | slot&#xff0c;默认 提示 内容&#xff08;content&#xff09;&#xff0c;类型&#xff1a;string | slot&#xf…...

【深度强化学习】(5) DDPG 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下深度确定性策略梯度算法 (Deterministic Policy Gradient&#xff0c;DDPG)。并基于 OpenAI 的 gym 环境完成一个小游戏。完整代码在我的 GitHub 中获得&#xff1a; https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Mod…...

unity,Color.Lerp函数

介绍 Color.Lerp函数是Unity引擎中的一个静态函数&#xff0c;用于在两个颜色值之间进行线性插值&#xff0c;从而实现颜色渐变效果 方法 Color.Lerp函数是Unity引擎中的一个静态函数&#xff0c;用于在两个颜色值之间进行线性插值&#xff0c;从而实现颜色渐变效果。该函数的…...

洛谷P8799 [蓝桥杯 2022 国 B] 齿轮 C语言/C++

[蓝桥杯 2022 国 B] 齿轮 题目描述 这天&#xff0c;小明在组装齿轮。 他一共有 nnn 个齿轮&#xff0c;第 iii 个齿轮的半径为 rir_{i}ri​, 他需要把这 nnn 个齿轮按一定顺序从左到右组装起来&#xff0c;这样最左边的齿轮转起来之后&#xff0c;可以传递到最右边的齿轮&a…...

景区在线售票系统功能开发介绍

目前游客线上订票已经普及&#xff0c;景区开通线上购票渠道&#xff0c;方便游客购票&#xff0c;对于还没有开通线上购票的景区来说&#xff0c;需要提前了解一下景区线上售票系统的一些功能&#xff0c;下面给大家详细介绍一下景区在线售票需要哪些功能。 1、在线售票 包含门…...

webService的底层调用方式

webservice中采用协议Http&#xff0c;是指什么意思 WebService使用的是 SOAP (Simple Object Access Protocol)协议 Soap协议只是用来封装消息用的。封装后的消息你可以通过各种已有的协议来传输&#xff0c;比如http,tcp/ip,smtp,等等&#xff0c;你甚至还一次用自定义的协议…...

S3 文件操作进阶实践:从基础上传到完整性保障

1. S3文件操作的核心挑战与解决方案 第一次接触AWS S3时&#xff0c;很多人会觉得文件上传下载不就是调用几个API的事&#xff1f;但真正投入生产环境后&#xff0c;各种问题就会接踵而至。我见过最典型的案例是某电商平台在促销期间&#xff0c;因为文件上传没有做完整性校验…...

KiCanvas:浏览器中的KiCAD设计查看器,5分钟快速入门指南

KiCanvas&#xff1a;浏览器中的KiCAD设计查看器&#xff0c;5分钟快速入门指南 【免费下载链接】kicanvas The KiCAD web viewer 项目地址: https://gitcode.com/gh_mirrors/ki/kicanvas 想要在浏览器中直接查看KiCAD电路设计文件&#xff0c;无需安装任何软件&#xf…...

提升嵌入式代码注释质量的工具与技术方案

提升代码注释质量的实用工具与技术方案1. 代码注释工具概述1.1 代码注释的重要性在嵌入式系统开发中&#xff0c;良好的代码注释是保证项目可维护性的关键因素。专业的注释工具能够帮助开发者&#xff1a;创建可视化注释&#xff0c;提升代码可读性生成标准化的文档结构维护代码…...

OpenClaw性能调优:Qwen3-32B在RTX4090D上的参数配置

OpenClaw性能调优&#xff1a;Qwen3-32B在RTX4090D上的参数配置 1. 为什么需要性能调优 当我第一次在RTX4090D上部署Qwen3-32B模型时&#xff0c;本以为高端硬件能轻松应对所有任务。但实际使用OpenClaw执行自动化流程时&#xff0c;却发现响应时快时慢&#xff0c;有时甚至出…...

水库调度员必看:动态规划在月度发电计划中的5个避坑指南

水库调度员实战指南&#xff1a;动态规划在月度发电计划中的5个关键避坑策略 在水利工程领域&#xff0c;水库调度是一项集科学性、技术性和艺术性于一体的复杂工作。作为水库调度员&#xff0c;我们每天都在与时间、水量和电力需求进行着精妙的博弈。而动态规划作为一种强大的…...

XML Notepad:Windows平台XML文档编辑与转换的完整解决方案

XML Notepad&#xff1a;Windows平台XML文档编辑与转换的完整解决方案 【免费下载链接】XmlNotepad XML Notepad provides a simple intuitive User Interface for browsing and editing XML documents. 项目地址: https://gitcode.com/gh_mirrors/xm/XmlNotepad XML No…...

ai辅助开发comfyui:让快马ai成为你构建复杂工作流的智能编程伙伴

最近在折腾ComfyUI时&#xff0c;发现构建复杂工作流特别容易卡在细节问题上。比如想同时用Canny边缘检测和Openpose控制生成效果&#xff0c;光是调试节点连接和参数就花了大半天。后来尝试用InsCode(快马)平台的AI辅助功能&#xff0c;发现能省下不少重复劳动。这里分享下用A…...

嵌入式系统SOC验证与Linux实时补丁技术解析

嵌入式系统软件工程师面试技术要点解析 1. SOC原型验证技术体系 1.1 SOC验证工作内容与方法论 SOC原型验证是芯片设计流程中的关键环节&#xff0c;主要工作内容包括&#xff1a; 功能验证&#xff1a;确保设计符合规范要求 性能验证&#xff1a;评估系统吞吐量、延迟等指标…...

SAP资产主数据批量修改避坑大全:GGB1替代+AR31工作清单配置详解(含日期字段特殊处理)

SAP资产主数据批量修改实战指南&#xff1a;从GGB1替代到AR31工作清单全流程解析 当财务团队需要对上千条资产记录进行成本中心迁移时&#xff0c;手工修改不仅效率低下&#xff0c;还容易产生数据不一致。SAP系统提供的GGB1替代规则与AR31工作清单组合方案&#xff0c;正是解决…...

陶瓷淬火时“啪“一声裂开的瞬间,背后藏着相场模型里的连续损伤演化。今天咱们用Matlab玩个热应力场+相场断裂的耦合计算,看看脆性材料怎么被温度场玩坏

matlab相场热力耦合断裂问题&#xff0c;陶瓷淬火算例&#xff0c;paraview可视化先上主菜——相场控制方程。核心是温度场T与相场d的相爱相杀&#xff1a; % 热传导方程残差计算 function R_T calc_heat_residual(T, d, dt)kappa 1e-5; % 热扩散系数grad_T gradient(T);R_T…...