注册中心ZK、nameServer、eureka、Nacos介绍与对比

前言

注册中心的由来

微服务架构是存在着很多跨服务调用,每个服务都存在着多个节点,如果有多个提供者和消费者,当提供者增加/减少或者消费者增加/减少,双方都需要感知发现。所以诞生了注册中心这个中间件。

市面上有很多注册中心,如 Zookeeper、NameServer、Eureka、Nacos,下面我来讲一下它们的特点、应用和区别。

Zookeeper

Zookeeper的存储结构是树形结构,它有四种节点,分别是:

  • 持久节点:除非自己删除,否则一直存在。
  • 持久顺序节点:加了编号,按添加时间排序。
  • 临时节点:Zookeeper会维护一个跟客户端的session,通过心跳存续,如果客户端失去心跳,一段时间后节点的session到期,就会删除节点。
  • 临时顺序节点。

特点

  • Watch监听器:当客户端向某个节点添加监听,当节点发生变化,Zookeeper会实时通知客户端。
  • 节点的名字唯一,不允许重复创建。

强一致性

Zookeeper多节点部署,只要集群中存在超过一半的节点能够正常工作,那么整个集群就能够正常对外服务。

Zookeeper围绕着ZAB协议保障数据的一致性。

ZAB协议里规定,Zookeeper集群中只有一个主节点,其余都是从节点。

所有的写请求都必须先走主节点,主节点写入后,同步给从节点,超过半数的节点返回成功,则返回客户端成功,没有超过一半,则返回客户端失败。

为了提升读的性能,读请求不要求必须请求主节点,从节点也可以读。

如果主节点挂了,那么会进行主节点选举,ZAB协议为了保障一致性,选举期间服务是不可用的,牺牲了一些可用性(CP)。

当主节点挂了,就会开始选举,持有消息最新的节点有资格参加竞选,当最终投票超过半数就会被选为主节点,并通知其他节点。

应用

利用上述这些特点,Zookeeper有用广泛的应用。

Dubbo中的注册中心

当Dubbo provider启动时,会在Zookeeper上的 /dubbo/{serviceName}/providers 节点上添加一个临时节点。

当consumer启动时,会在Zookeeper上的 /dubbo/{serviceName}/consumers 节点下添加一个临时节点,同时添加watcher监听providers节点。

当新增provider节点,consumer通过watcher机制能够马上会收到并本地缓存。

当provider挂了,心跳断开连接时,等临时节点的会话到期会触发节点删除,consumer会收到并本地缓存。

通过watcher机制,当consumer发生了变化,provider能够及时感应到。

Zookeeper

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

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

相关文章

【Tomcat Servlet】如何在idea上部署一个maven项目?

目录 1.创建项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署项目 7.验证程序 什么是Tomcat和Servlet? 以idea2019为例: 1.创建项目 1.1 首先创建maven项目 1.2 项目名称 2.引入依赖 2.1 网址输入mvnrepository.com进入maven中央仓库->地址…

2.4G合封芯片 XL2422,集成M0核MCU,高性能 低功耗

XL2422芯片是一款高性能低功耗的SOC集成无线收发芯片,集成M0核MCU,工作在2.400~2.483GHz世界通用ISM频段。该芯片集成了射频接收器、射频发射器、频率综合器、GFSK调制器、GFSK解调器等功能模块,并且支持一对多线网和带ACK的通信模式。发射输…

【Windows-软件-OS】(01)Windows操作系统配置环境变量,快速上手

前言 "Windows"操作系统配置环境变量,快速上手; 实操 【实操一】 环境 Windows 11 专业版(22621.2428); 图片 (1) (2) (3) &#x…

HTTP和HTTPS本质区别——SSL证书

HTTP和HTTPS是两种广泛使用的协议,尽管它们看起来很相似,但是它们在网站数据传输的安全性上有着本质上的区别。 HTTP是明文传输协议,意味着通过HTTP发送的数据是未经加密的,容易受到拦截、窃听和篡改的风险。而HTTPS通过使用SSL或…

【vtk学习笔记4】基本数据类型

一、可视化数据的基本特点 可视化数据有以下特点: 离散型 计算机处理的数据是对无限、连续的空间进行采样,生成的有限采样点数据。在某些离散点上有精确的值,但点与点之间值不可知,只有通过插值方式获取数据具有规则或不规则的结…

由QTableView/QTableWidget显示进度条和按钮,理解qt代理delegate用法

背景: 我的最初应用场景,就是要在表格上用进度条显示数据,以及放一个按钮。 qt-creator中有自带的delegate示例可以参考,但终归自己动手还是需要理解细节,否则不能随心所欲。 自认没那个天赋,于是记录下…

基于springboot实现疫情防控期间外出务工人员信息管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot疫情防控期间外出务工人员信息管理系统 摘要 网络的广泛应用给生活带来了十分的便利。所以把疫情防控期间某村外出务工人员信息管理与现在网络相结合,利用java技术建设疫情防控期间某村外出务工人员信息管理系统,实现疫情防控期间某村外出…

Linux编译器vim的使用

文章目录 vim基本概念vim的常用三种模式vim三种模式的相互转换 vim命令模式下的命令集移动光标删除文字剪切/删除复制替换撤销和恢复跳转至指定行 vim底行模式下的命令集 vim基本概念 vim是Linux下的一个多模式的编译器 简单来说就是写代码的工具 不提供编译调试等功能 有语法…

0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)

大纲 mapreduce完整代码参考资料 在《0基础学习PyFlink——个数滚动窗口(Tumbling Count Windows)》一文中,我们发现如果窗口内元素个数没有达到窗口大小时,计算个数的函数是不会被调用的。如下图中红色部分 那么有没有办法让上图中(B,2&…

Prometheus接入AlterManager配置钉钉告警(基于K8S环境部署)

文章目录 一、钉钉群创建报警机器人二、安装Webhook-dingtalk插件三、配置Webhook-dingtalk插件对接钉钉群四、配置AlterManager告警发送至Webhook-dingtalk五、Prometheus接入AlterManager配置六、部署PrometheusAlterManager(放到一个Pod中)七、测试告警 注意:请基…

Redis安装-常用命令及操作

目录 一.Redis简介 二.redis安装 1.1安装Linux版本 1.2安装 windows版本 三.redis的常用命令 Redis哈希(Hash) 一.Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队…

SpringCloud(三) Ribbon负载均衡

SpringCloud(二) Eureka注册中心的使用-CSDN博客 在SpringCloud(二)中学习了如何通过Eureka实现服务的注册和发送,从而通过RestTemplate实现不同微服务之间的调用,加上LoadBalance注解之后实现负载均衡,那负载均衡的原理是什么呢? 目录 一, 负载均衡 1.1 负载均衡原理 1.2 源…

数据可视化篇——pyecharts模块

在之前的文章中我们已经介绍过爬虫采集到的数据用途之一就是用作可视化报表,而pyecharts作为Python中可视化工具的一大神器必然就受到广大程序员的喜爱。 一、什么是Echarts? ECharts 官方网站 : https://echarts.apache.org/zh/index.html ECharts 是…

UI动效的都可以用哪些工作来制作

随着UI设计的不断发展,UI动效越来越多地应用于现实生活中。手机,iPad、计算机、网页和其他设备被广泛使用,所以问题来了,为什么UI动态效果越来越被广泛使用?它的优点是什么?哪些软件可以设计UI动态效果&…

Apache ECharts简介和相关操作

文章目录 一、Apache ECharts介绍二、快速入门1.下载echarts.js文件2.新建index.html文件3.准备一个DOM容器用于显示图表4.完整代码展示5.相关配置 三、演示效果四、总结 一、Apache ECharts介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观…

3 — NLP 中的标记化:分解文本数据的艺术

一、说明 这是一个系列文章的第三篇文章, 文章前半部分分别是: 1 、NLP 的文本预处理技术 2、NLP文本预处理技术:词干提取和词形还原 在本文中,我们将介绍标记化主题。在开始之前,我建议您阅读我之前介绍的关…

最新版一媒体7.3、星媒体、皮皮剪辑,视频MD ,安卓手机剪辑去重神器+搬运脚本+去视频重软件工具

最新版一媒体app安卓版介绍: 这是一款功能强大的视频搬运工具,内置海量视频编辑工具,支持一键智能化处理、混剪、搬运、还能快速解析和去水印等等,超多实用功能等着您来体验! 老牌手机剪辑去重神器,用过的…

【Linux】安装使用Nginx负载均衡,并且部署前端项目

目录 一、Nginx概述 1. 什么 2. 背景 3. 作用 二、Nginx负载均衡 1. 讲述 2. 使用 1. 下载 2. 安装 3. 负载均衡 三、前端部署 1. 准备 2. 部署 一、Nginx概述 1. 什么 Nginx是一个高性能的开源Web服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗的…

c++设计模式二:原型模式

使用场景:当需要构建多个相同的类对象时,而且该类对象结构较为复杂,如果每个都重新组织构建会很麻烦。 其实,就是写一个拷贝构造函数,或者写一个拷贝每个成员变量的clone()方法。 举例说明:比如一个相亲网站…

通过条件竞争实现内核提权

条件竞争漏洞(Race Condition Vulnerability)是一种在多线程或多进程并发执行时可能导致不正确行为或数据损坏的安全问题。这种漏洞通常发生在多个线程或进程试图访问和修改共享资源(如内存、文件、网络连接等)时,由于…