注册中心 Eureka Nacos

devtools/2024/9/20 8:59:52/ 标签: spring cloud, eureka, spring

文章目录

目录

文章目录

1.  什么是注册中心?

2.常见的注册中心

3 . Eureka

4 . Nacos

5 . Nacos与Eureka的区别

总结


1.  什么是注册中心?

在最初的架构体系中, 集群的概念还不那么流行, 且机器数量也比较少, 此时直接使用DNS+Nginx就可以满足几乎所有服务的发现. 相关的注册信息直接配置在Nginx. 但是随着微服务的流行与流量的激增, 机器规模逐渐变大, 并且机器会有频繁的上下线行为, 这种时候需要运维手动地去维护这个配置信息是一个很麻烦的操作. 所以开发者们开始希望有这么一个东西, 它能维护一个服务列表, 哪个机器上线了, 哪个机器宕机了, 这些信息都会自动更新到服务列表上, 客户端拿到这个列表, 直接进行服务调用即可. 这个就是注册中心。

在注册中心中,通常涉及以下几个角色,每个角色在微服务架构中扮演着重要的角色:

  1. 服务提供者(Service Provider):负责向注册中心注册自己的服务实例。服务提供者在启动时将其服务信息(如服务名称、地址、端口等)注册到注册中心。

  2. 服务消费者(Service Consumer):需要调用其他服务的客户端或微服务。服务消费者通过注册中心查询可用的服务实例,以便进行服务调用。

  3. 注册中心(Registry):负责管理服务的注册和发现。注册中心维护一个服务列表,处理服务的注册、注销、健康检查等功能。

2.常见的注册中心

  1. Eureka

    • 描述:由Netflix开发的服务注册与发现工具,支持RESTful API,易于与Spring Cloud集成。
    • 特点:提供自我保护机制,支持客户端负载均衡。
  2. Zookeeper

    • 描述:Apache提供的分布式协调服务,常用于服务注册和发现。
    • 特点:提供高可用性和一致性,适合需要强一致性的场景。
  3. Nacos

    • 描述:阿里巴巴开源的服务发现和配置管理平台,支持动态服务发现和配置管理。
    • 特点:支持多种服务发现模式,易于与Spring Cloud集成。

3 . Eureka

Eureka是Netflix OSS套件中关于服务注册和发现的解决方案。Spring Cloud对Eureka进行了集成,并作为优先推荐方案进行宣传。虽然目前Eureka 2.0已经停止维护,新的微服务架构设计中,也不再建议使用,但是目前依然有大量公司的微服务系统使用Eureka作为注册中心。

构建项目 创建模块 order-server 和 product-server

在各自的pom文件中引入eureka依赖

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

接着创建eureka-server 作为eureka的服务端 接着在pom文件中引入依赖, 因为这里是服务端,所以一路的依赖是服务端的依赖,和上面的不太一样

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

 搞定之后,开始配置文件的编写,直接拷贝,都一样

服务端配置文件

server:port: 10010
spring:application:name: eureka-server
eureka:instance:hostname: localhostclient:fetch-registry: false # 表⽰是否从Eureka Server获取注册信息,默认为true.# 因为这是⼀个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,# 这⾥设置为falseregister-with-eureka: false # 表⽰是否将⾃⼰注册到Eureka Server,默认为true.由于当前应⽤就是Eureka Server,故⽽设置为false.service-url:# 设置 Eureka Server的地址,查询服务和注册服务都需要依赖这个地址.defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

客户端配置文件

spring:application:name: order-server #配置服务名称
#配置eureka地址
eureka:client:service-url:defaultZone: http://127.0.0.1:10010/eureka

 在ioc容器中注册RestTemplate对象来实现远程调用

可以直接在启动类中使用@Bean注解直接添加也可以通过配置类的方式

接着在方法中直接调用 

 

4 . Nacos

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高

Nacos是SpringCloudAlibaba的组件,而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说,并没有太大区别。

主要差异在于:

  • 依赖不同

  • 服务地址不同

引入依赖

在父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

然后在user-service和order-service中的pom文件中引入nacos-discovery依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> 

编写配置文件

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

集群配置

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称

环境隔离

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID 

5 . Nacos与Eureka的区别

 

Nacos的服务实例分为两种l类型:

  • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。

  • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

配置一个服务实例为永久实例:

spring:cloud:nacos:discovery:ephemeral: false # 设置为非临时实例

Nacos和Eureka整体结构类似,服务注册、服务拉取、心跳等待,但是也存在一些差异:

  • Nacos与eureka的共同点

    • 都支持服务注册和服务拉取

    • 都支持服务提供者心跳方式做健康检测

  • Nacos与Eureka的区别

    • Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

    • 临时实例心跳不正常会被剔除,非临时实例则不会被剔除

    • Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

    • Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式  


总结

以上就是这篇博客的主要内容了,大家多多理解,下一篇博客见!


http://www.ppmy.cn/devtools/106048.html

相关文章

详解Vector(1)

Vector(1) Vector是表示大小可以改变的数组的序列容器。&#xff08;其实就是一个顺序表&#xff09; Vector是一个标准的模版&#xff0c;第一个模版参数是它要存什么数据类型&#xff0c;第二个参数可以先不关心。 构造函数&#xff1a; 析构函数&#xff1a; 它会自动调用…

【Windows】Pycharm配置GitBash终端并运行conda命令

原文连接&#xff1a;https://discuss.codecademy.com/t/setting-up-conda-in-git-bash/534473 总结来说就是&#xff1a;需要把conda.sh的路径放到配置文件.bashrc中 echo ". ${PWD}/conda.sh" >> ~/.bashrc

GNU的编译工具链

文章目录 GNU的编译工具链 GNU的编译工具链 预编译器cpp 编译器 cc1 汇编器 as 链接器 ld 其中cpp和cc1属于gcc的一部分&#xff0c;as和ld属于binutils的一部分。

科技信贷业务怎么寻找客户?

在科技信贷业务领域&#xff0c;寻找客户的痛点主要集中在以下几个方面&#xff1a; 1.风险评估难题&#xff1a;科技型企业尤其是初创企业&#xff0c;往往缺乏足够的历史数据和抵押物&#xff0c;这使得金融机构在评估其信用风险时面临较大挑战。由于科技企业的研发周期长、…

系统演示视频正确的录制顺序

低效的录制 低效的录制有几个问题&#xff1a; 1&#xff09;视频演讲稿没有提前写 写稿子是挺麻烦&#xff0c;但写好稿子后&#xff0c;可以让领导先看。如果稿子要修改&#xff0c;视频重新制作、剪辑的概率很大。返工情况概率大。 2&#xff09;视频配音不是AI生成&…

深入探究 RocketMQ:分布式消息中间件的卓越之选》

《深入探究 RocketMQ&#xff1a;分布式消息中间件的卓越之选》 一、引言 在当今复杂的网络通讯环境中&#xff0c;传统的 Http 请求同步方式存在诸多弊端。当客户端与服务器进行通讯时&#xff0c;客户端必须等待服务端完成处理后返回结果才能继续执行&#xff0c;这种同步调…

如何把自动获取的ip地址固定

在大多数网络环境中&#xff0c;‌设备通常会自动从DHCP服务器获取IP地址。‌这种动态分配IP的方式虽然灵活方便&#xff0c;‌但在某些特定场景下&#xff0c;‌我们可能需要将设备的IP地址固定下来&#xff0c;‌以确保网络连接的稳定性和可访问性。‌本文将详细介绍如何把自…

C#财政票据查验接口示例、医疗票据查验接口状态码说明

财政票据查验接口是一种技术手段&#xff0c;用于验证财政电子票据的真实性和合法性。财政票据查验接口一般包含非税收入发票查验、医疗票据查验、公益事业捐票据查验等&#xff0c;接口集成的方式可以实现财政票据的批量验真&#xff0c;核验为真的结果还可返回全票面信息。 C…

使用 VS Code 正则表达式批量替换:将 `this.xxx` 改为 `xxx.value`

使用 VS Code 正则表达式批量替换&#xff1a;将 this.xxx 改为 xxx.value 文章目录 使用 VS Code 正则表达式批量替换&#xff1a;将 this.xxx 改为 xxx.value为什么要进行这种替换&#xff1f;步骤详解1. 打开 VS Code 并加载文件2. 打开查找和替换面板3. 启用正则表达式搜索…

在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的问答都完整的跑完整个transformer模型

目录 在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的问答都完整的跑完整个transformer模型 1. max_generate_tokens的作用 2. 退出机制与Transformer模型 3. 实际应用中的影响 4. 结论 在大语言模型中,生成文本的退出机制,受max_genera…

Linux虚拟机搭建K8S环境

文章目录 一、环境准备二、系统初始化三、部署master四、添加node节点五、部署网络六、部署dashboard七、登录dashboard面板 一、环境准备 首先在vmware上新建4台相同配置的虚拟机&#xff0c;除了IP和主机名外&#xff0c;其余配置相同。由于是搭建K8S初始环境&#xff0c;没…

记录游戏高光时刻!4款电脑录屏工具分享

虽然之前也录制过游戏&#xff0c;但是想来还是有不少朋友不知道如何录制一个高清游戏视频&#xff0c;我来和大家聊聊游戏直播和录屏的那些事儿。作为一个游戏主播&#xff0c;我尝试过很多录屏软件&#xff0c;今天就来分享一下我用过的四款录屏软件它们在录制游戏视频时的表…

探索Unity与C#的无限潜能:从新手到高手的编程之旅

在数字创意与技术创新交织的今天&#xff0c;Unity游戏引擎凭借其强大的跨平台能力和灵活的编程接口&#xff0c;成为了无数开发者心中的首选。而C#&#xff0c;作为Unity的官方脚本语言&#xff0c;更是以其面向对象的特性和丰富的库支持&#xff0c;为游戏开发注入了无限可能…

three.js 编辑器,动画,着色器, cesium 热力图,聚合点位,大量点线面, 图层,主题,文字,等众多案例中心

对于大多数的开发者来言&#xff0c;看了很多文档可能遇见不到什么有用的&#xff0c;就算有用从文档上看&#xff0c;把代码复制到自己的本地大多数也是不能用的&#xff0c;非常浪费时间和学习成本&#xff0c; 尤其是three.js &#xff0c; cesium.js 这种难度较高&#xff…

使用udp进行通信

UDP chat 头文件 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <time…

硬件工程师笔试面试知识器件篇——电容

目录 电容 2.1、基础 电容原理图 电容实物图 2.1.1、定义 2.1.2、原理 2.1.3、电容的类型 分类1&#xff1a; 分类2&#xff1a; 2.1.4、电容的应用 2.2、相关问题 2.2.1、电容器的电容值如何测量 2.2.2、不同类型的电容器在实际应用中有那些具体差异 2.2.3、如何…

区块链Hyperledger Fabric2.2 环境搭建

最新超详细的 Hyperledger Fabric2.2 环境搭建 部署_windows上fabric2.2环境搭建和测试网络-CSDN博客 Ubuntu系统下配置安装区块链Hyperledger Fabric(新手小白篇)-CSDN博客 注意 需要修改fabric/scripts(该目录是前文Fabric源码解压之后形成的目录&#xff0c;这里是一种简…

15chatGLM3半精度微调

1 模型准备 数据依然使用之前的数据&#xff0c;但是模型部分我们使用chatglb-3&#xff0c;该模型大小6B&#xff0c;如果微调的话需要24*4 96GB,硬件要求很高&#xff0c;那么我们使用半精度微调策略进行调试&#xff0c;半精度微调有很多坑啊&#xff0c;注意别踩到…

计算机毕业设计选题推荐-公司考勤管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

前端使用xlsx模板导出表格

前言 前端导出表格有很多种方案&#xff0c;但是表格样式一旦复杂了&#xff0c;那么就得用代码写excel的样式&#xff0c;还是比较麻烦的。每次样式不一样&#xff0c;就得重新写&#xff0c;这时使用表格模板的优势就体现出来了&#xff0c;想导出不同样式的表格直接修改表格…