Eureka和Nacos

Spring Cloud提供了多种服务注册和发现的解决方案,Eureka和Nacos是其中两个非常流行的选项。下面,我们将深入探索这两种注册中心的工作原理、配置和使用方法。

Eureka

Eureka是Netflix开发的服务发现框架,它包括两个部分:Eureka Server(服务端)和Eureka Client(客户端)。

Eureka Server

Eureka Server作为服务注册的中心节点,各个服务实例启动时会向它注册自己,并定期发送心跳以保持注册状态。

在Spring Boot中创建Eureka Server的代码如下:

package com.example.eurekaserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}
}

application.propertiesapplication.yml中,你可以进行一些配置,例如:

server:port: 8761eureka:client:registerWithEureka: falsefetchRegistry: falseserver:enableSelfPreservation: false # 关闭自我保护模式以应对服务实例不稳定的网络条件

Eureka Client

Eureka Client会向Eureka Server注册,并且从Server中发现其他服务的信息。

在Spring Boot中创建Eureka Client的代码如下:

package com.example.productservice;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@EnableEurekaClient
public class ProductServiceApplication {public static void main(String[] args) {SpringApplication.run(ProductServiceApplication.class, args);}
}

application.propertiesapplication.yml中,对于Eureka Client的配置,需要指定Eureka Server的地址:

eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka/instance:preferIpAddress: true # 使用IP地址而不是hostname注册服务实例

Nacos

Nacos是阿里巴巴开源的一个更具动态性的服务发现和配置管理平台,支持DNS和HTTP协议。

Nacos Server

使用Nacos之前,你需要部署Nacos Server,它可以运行在单机模式或集群模式。

Nacos Client

在Spring Boot应用中,你可以通过包含spring-cloud-starter-alibaba-nacos-discovery依赖并使用@EnableDiscoveryClient注解来启用Nacos Client。

package com.example.productservice;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ProductServiceApplication {public static void main(String[] args) {SpringApplication.run(ProductServiceApplication.class, args);}
}

application.propertiesapplication.yml中配置Nacos的地址:

spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848

源码解析

Spring Cloud对服务注册和发现做了高级抽象,使得源码级别的深入解析超出了一般使用的范围。不过,我们可以理解一些关键类和接口。

Eureka Client

Eureka Client的工作流程是由com.netflix.discovery.DiscoveryClient类实现的,它负责将服务信息注册到Eureka Server,并且定期发送心跳来维持其在注册表中的状态。当你需要发现其他服务时,同样是通过此类来查询Eureka Server获取服务信息。

Nacos Client

Nacos Client的功能是由com.alibaba.nacos.api.naming.NamingService接口和其实现类来提供的。它负责与Nacos Server进行交互,包括服务注册、服务发现、健康检查等。

注意事项

  • Eureka已经进入维护模式,Spring Cloud在Greenwich版本后不再主动更新对Eureka的支持。
  • Nacos除了服务注册和发现以外,还提供了配置管理的功能,可以替代Spring Cloud Config。
  • 无论是使用Eureka还是Nacos,都应该确保注册中心自身的高可用性和稳定性。
  • 服务注册与发现还涉及到网络安全、服务权限控制等复杂问题,在公有云环境或者大规模部署中尤其重要。

最终的实现细节和配置可能因实际需求和部署环境的差异而有所不同。在实际的生产环境中,通常还会涉及到更多的运维配置和安全措施。

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

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

相关文章

2942. 查找包含给定字符的单词【简单】

2942. 查找包含给定字符的单词【简单】 题目描述: 给你一个下标从 0 开始的字符串数组 words 和一个字符 x 。 请你返回一个 下标数组 ,表示下标在数组中对应的单词包含字符 x 。 注意:返回的数组可以是 任意 顺序 示例 1: 输…

vue3 Element Plus 基于webstorm练习

提要 vue是前端框架,Elemen是组件库。前端框架和组件库的区别与联系 nodejs 脚本语言需要一个解析器才能运行,JavaScript是脚本语言,在不同的位置有不一样的解析器,如写入html的js语言,浏览器是它的解析器角色。而对…

python in Vscode

背景 对于后端的语言选择: python,java,JavaScript备选。 选择Python 原因:可能是非IT专业的人中,会Python的人比较多。 目的 之前使用的IDE是VSCODE,在WSL的环境下使用。现在需要在在WSL的VSCODE下使…

【Java程序员面试专栏 Java领域】Java Spring框架 核心面试指引

关于Java Spring框架部分的核心知识进行一网打尽,主要包括Spring框架中的重点概念IOC和AOP,以及SpringBoot的自动装配机制,SpringMVC的核心执行流程,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 基础概念 Spring框架的基本概念,S…

浅谈语义分割、图像分类与目标检测中的TP、TN、FP、FN

语义分割 TP:正确地预测出了正类,即原本是正类,识别的也是正类 TN:正确地预测出了负类,即原本是负类,识别的也是负类 FP:错误地预测为了正类,即原本是负类,识别的是正类…

秒懂百科,C++如此简单丨第二十一天:栈和队列

目录 前言 Everyday English 栈(Stack) 图文解释 实现添加删除元素 实现查看清空栈 完整代码 运行示例 栈的选择题 队列(Queue) 图文解释 队列的基本用法 完整代码 运行结果 队列的好处 结尾 前言 今天我们将…

java 培训班预定管理系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 培训班预定管理系统是一套完善的java web信息管理系统 采用serlvetdaobean,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xf…

139.单词拆分【leetcode】/动态规划

139.单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s “leetco…

【SpringBoot3】从重构HelloWorld看Spring的作用

在我们学习一门新技术的时候,总是先运行出一个基本的程序来输出“Hello World”,如果成功了, 说明我们的开发环境基本就绪了,我们也像婴儿走路一样,能走第一步了。接下来我们就逐步改造一个最基本的HelloWorld来一步步分析Spring到底帮助我们做 了什么。 目录 第一步:输…

CCF编程能力等级认证GESP—C++4级—20231209

CCF编程能力等级认证GESP—C4级—20231209 单选题(每题 2 分,共 30 分)判断题(每题 2 分,共 20 分)编程题 (每题 25 分,共 50 分)小杨的字典田忌赛马 参考答案单选题判断题编程题1编程题2 单选题…

近几年计算机毕设之论文参考文献(Java参考文献、MySQL参考文献、jsp参考文献、Python参考文献、微信小程序参考文献、外文参考文献)(10个一组)

目录 1、Java参考文献 2、JavaWeb参考文献 3、MySQL参考文献 4、Python参考文献 5、微信小程序参考文献 6、Jsp参考文献 7、SpringBoot参考文献 8、vue参考文献 9.ASP.NET参考文献 10、外文参考文献 1、Java参考文献 [1] 丁玉青;孙逸飞;朱敏.基于JAVA的共享蓝牙耳机小…

智能扭矩系统——SunTorque

随着工业自动化的不断发展,智能扭矩系统作为一种新型的扭矩控制技术,逐渐受到广泛关注。智能扭矩系统是一种基于传感器技术和计算机控制的扭矩管理系统,它能够实时监测和调整设备的扭矩输出,以确保生产过程中的稳定性和安全性。 搭…

国产计算机的种类和应用

国产计算机的种类和应用 国产计算机的种类繁多,根据不同的应用场景和需求,可以分为个人计算机、服务器、工业控制计算机、嵌入式计算机等。 个人计算机是国产计算机中最常见的类型,包括台式机、笔记本电脑、平板电脑等。这些计算机广泛应用于…

采用文件路径安装库到不同的python环境

C:\Users\Administrator>pip3 install --targetD:\PycharmProjects\pythonProject3\venv\Lib\site-packages configparser

Aquarius Fantasy Series Orcs

使用标准管道创建。目前不支持URP或HDRP。 - 如果想将其转换为URP或类似材质。90%的材质可以完美转换。但是树叶材质和岩石顶盖材质无法转换,除非有自己的材质,无论是自己制作的,还是其他资源包。布料也是如此,每块布料都是单面的,使用简单的材质来达到双面效果。所有其他…

IOC理解总结

IOC 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI&#xff09…

21种matlab信号分解方法汇总

21中信号分解方法汇总 CEEMD(互补集合经验模态分解)CEEMDAN(自适应噪声完备集合经验模态分解) EEMD(集合经验模态分解)EMD(经验模态分解)ESMD(极点对称模态分解)EWT(经验小波变换分解)FEEMD(快速EEMD分解)ICEEMDAN(改进自适应噪声完备集合经验模态分解)L…

非关系型数据库(NOSQL)和关系型数据库(SQL)区别详解

前言: 在我们的日常开发中,关系型数据库和非关系型数据库的使用已经是一个成熟的软件产品开发过程中必不可却的存储数据的工具了。那么用了这么久的关系数据库和非关系型数据库你们都知道他们之间的区别了吗?下面我们来详细的介绍一下。 关系…

阿里云第七代云服务器ECS计算c7、通用g7和内存r7配置如何选择?

阿里云服务器配置怎么选择合适?CPU内存、公网带宽和ECS实例规格怎么选择合适?阿里云服务器网aliyunfuwuqi.com建议根据实际使用场景选择,例如企业网站后台、自建数据库、企业OA、ERP等办公系统、线下IDC直接映射、高性能计算和大游戏并发&…

BuildAdmin - 免费开源可商用!基于 ThinkPHP8 和 Vue3 等流行技术栈打造的商业级后台管理系统

一款包含 PHP 服务端和 Vue 前端代码的 admin 管理系统,实用性很强,推荐给大家。 BuildAdmin 是一个成熟的后台管理系统,后端服务采用 ThinkPHP8 ,数据库使用 Mysql,前端部分则使用当前流行的 Vue3 / TypeScript / Vi…