注册中心 Eureka Nacos

文章目录

目录

文章目录

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.rhkb.cn/news/416314.html

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

相关文章

【Qt窗口】—— 对话框

目录 &#xff08;一&#xff09; 对话框介绍 &#xff08;二&#xff09;对话框的分类 2.1 模态对话框 2.2 非模态对话框 2.3 混合属性对话框 &#xff08;三&#xff09;内置对话框 消息对话框 QMessageBox 颜色对话框 QColorDialog 字体对话框 QFontDialog 输入对…

Scrapy入门学习

文章目录 Scrapy一. Scrapy简介二. Scrapy的安装1. 进入项目所在目录2. 安装软件包Scrapy3. 验证是否安装成功 三. Scrapy的基础使用1. 创建项目2. 在tutorial/spiders目录下创建保存爬虫代码的项目文件3.运行爬虫4.利用css选择器Scrapy Shell提取数据例如: Scrapy 一. Scrapy…

glsl着色器学习(十)缩放

对二维图形进行缩放&#xff0c;需要用到顶点着色器&#xff0c;顶点着色器经过矩阵变换&#xff0c;会将模型空间最终转换成裁剪空间。下面就来操作矩阵 这里需要用到一个库glMatrix。 首先修改顶点着色器 <script id"vertex-shader-2d" type"x-shader/x-…

Win32创建虚拟打印机

最近有个需求需要对报告打印进行统一的管理&#xff0c;最终实现方案如下&#xff1a; 1、安装Microsoft Print To PDF虚拟打印机&#xff0c;该打印机可以将所有打印数据转换为PDF 2、通过Microsoft Print To PDF虚拟机参数复制一台新的虚拟打印机 3、创建打印输出端口&…

服务器数据恢复—LeftHand存储中raid5阵列多块磁盘离线的数据恢复案例

LeftHand存储支持RAID5、RAID6、RAID10磁盘阵列&#xff0c;同时还支持卷快照&#xff0c;卷动态扩容等。下面简单聊一下LeftHand存储的结构和一个LeftHand p4500存储中磁盘阵列数据恢复案例。 服务端&#xff1a; 客户端&#xff1a; LeftHand存储结构&#xff1a; Lefthand存…

C语言指针详解-包过系列(一)目录版

C语言指针详解-包过系列&#xff08;一&#xff09;目录版 1.内存和地址1.1内存1.2 深入理解编址 2.指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指针变量和解引用操作符&#xff08;*&#xff09;2.2.1 指针变量2.2.2 指针变量各部分理解2.2.3 解引用操作…

Oracle 常用函数大全

文章目录 一、空校验1. NVL 空校验2. COALESCE 空校验 二、排序1. ORDER BY 排序2. ORDER BY DECODE 指定值排序 三、排名1. RANK 排名2. DENSE RANK 密集排名 四、限制条数1. ROWNUM 限制2. FETCH 限制 五、字符串处理1. TO_CHAR 字符串转换2. || 字符串拼接3. CONCAT 字符串拼…

【Qt】颜色对话框QColorDialog

颜色对话框QColorDialog 颜⾊对话框的功能是允许⽤⼾选择颜⾊。继承⾃ QDialog 类。 Qt QColorDialog 的功能就是内置了调色板&#xff0c;效果和上图画图板的调色板类似。 常用方法介绍&#xff1a; QColorDialog (QWidget *parent nullptr) //创建对象的同时设置⽗对象Q…

获取navicat已保存数据库连接的密码

打开connections.ncx&#xff0c;可以看到Passwordxxx,这是加密后的密码 解密 在线的运行工具https://tool.lu/coderunner 运行如下代码&#xff0c;代码中的密码改成你的密码&#xff0c;在倒数第二行位置 <?phpnamespace FatSmallTools;class NavicatPassword{protected…

draw.io图片保存路径如何设置

当在draw.io中画图时&#xff0c;对于图片的保存经常选择了但是后面打开了又不知道图片的位置在哪&#xff0c;如下图所示&#xff0c;选择的途径很多。 为了之后存储文件较为简单&#xff0c;今天小编从源头设置图片的存储位置&#xff0c;使用浏览器设置的保存文件的路径。 …

2024年9月4日嵌入式学习

内存泄漏&#xff1a; 内存泄漏&#xff08;Memory Leak&#xff09;是指程序中已动态分配的内存由于某种原因程序未释放或无法释放&#xff0c;导致系统内存的浪费&#xff0c;严重时会导致程序运行缓慢甚至崩溃。这种情况在长时间运行的程序或大型系统中尤为常见&#xff0c;…

A02、Java编程性能调优(02)

1、Stream如何提高遍历集合效率 1.1、什么是Stream 现在很多大数据量系统中都存在分表分库的情况。例如&#xff0c;电商系统中的订单表&#xff0c;常常使用用户 ID 的 Hash 值来实现分表分库&#xff0c;这样是为了减少单个表的数据量&#xff0c;优化用户查询订单的速度。 …

2024.9.3 作业

自己实现栈和队列 代码&#xff1a; /*******************************************/ 文件名&#xff1a;sq.h /*******************************************/ #ifndef SQ_H #define SQ_H #include <iostream> #include<cstring>using namespace std; class …

Matlab R2022b使用Camera Calibrator工具箱张正友标定法进行相机标定附带标定前后对比代码

打开Camera Calibrator 在这添加你拍摄的图片 根据你每个方块的实际边长填写&#xff0c;我是15mm。 通俗一点&#xff0c;要k3就选3 Coefficients&#xff0c;否则为0&#xff1b;要p1、p2就选Tangential Distortion。然后进行计算。 可以点击右侧误差高的选中图像进行移…

【C/C++】C语言实现蛇形矩阵

目录 题目描述输入描述:输出描述:示例思路代码 题目描述 给你一个整数n&#xff0c;输出n∗n的蛇形矩阵。 输入描述: 输入一行&#xff0c;包含一个整数n 输出描述: 输出n行&#xff0c;每行包含n个正整数&#xff0c;通过空格分隔。 1<n<1000 示例 输入 4输出 …

iOS18 beta版本怎么回退至iOS17正式版本?

截止目前&#xff0c;苹果最近的iOS18的beta测试版本已经发了8版了&#xff0c;有许多朋友们都已升级提前尝鲜了&#xff0c;升级体验后许多果粉朋友们觉得有许多功能还是不够稳定&#xff0c;有些许bug&#xff0c;就想要降级&#xff0c;回退到iOS17的正式版&#xff0c;但又…

2024数博会技术成果回顾 | KPaaS助力企业数智化转型

2024年8月28日至30日&#xff0c;中国国际大数据产业博览会&#xff08;简称“数博会”&#xff09;在贵州省贵阳市隆重举行。本届数博会以“数智共生&#xff1a;开创数字经济高质量发展新未来”为主题&#xff0c;吸引了来自全球各地的400多家企业和2.1万余名嘉宾参与&#x…

AI自动生成PPT哪个软件好?如何自动生成专业级PPT?

新学期伊始&#xff0c;准备开学演讲稿的你是否还在为制作PPT而烦恼&#xff1f;别担心&#xff0c;现在有了AI的帮助&#xff0c;生成专业且吸引人的PPT变得轻而易举。 本文将为你揭秘4种高效的AI自动生成PPT的方法&#xff0c;让你在新学期的演讲中脱颖而出。无论是简洁明了…

Python | Leetcode Python题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; class Solution:def isRectangleCover(self, rectangles: List[List[int]]) -> bool:area, minX, minY, maxX, maxY 0, rectangles[0][0], rectangles[0][1], rectangles[0][2], rectangles[0][3]cnt defaultdict(int)for rect in rec…

glsl着色器学习 (十二)平移

平移和旋转、缩放是一样的&#xff0c;替换成平移矩阵即可&#xff1b; // 创建一个单位矩阵 const translateYMatrix mat4.create();// 沿着Y轴向下平移1个单位 mat4.fromTranslation(translateYMatrix, [0, -1, 0]);// 设置矩阵 gl.uniformMatrix4fv(matrixUniformLocation…