常用服务注册中心与发现(Eurake、zookeeper、Nacos)笔记(一)基础概念

基础概念

注册中心

在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号、版本号、通信协议等一些附加信息告知注册中心,注册中心按照服务名分类组织服务清单,服务注册中心还需要以心跳的方式去监控清单中的服务是否可用,若不可用需要从服务清单中剔除,达到排除故障服务的效果。

服务注册中心的作用就是服务注册与服务发现。注册中心解决的是服务管理和服务的依赖关系管理,为了解耦服务提供者和服务消费者。其架构图如下:

在这里插入图片描述

主要功能

(1)服务注册:服务提供方将自身路由信息发布到注册中心,供消费方获取由于提供方建立连接并发起调用

  • 路由信息: 注册服务节点ip、监听端口等路由信息;
  • 服务信息:序列化协议、路由规则、节点权重;

(2) 服务发现: 服务消费方通过访问注册中心获取服务提供方节点路由信息;

  • 启动拉取:服务消费方启动后,从注册中心提取提供方节点列表,建立连接,进行RPC调用。
  • 通知回调:接受注册中心变更通知,重新获取数据,更新节点列表;
  • 轮询拉取:服务消费方运行过程中定时拉取服务提供方节点列表,用来更新本地数据;

(3)健康检查:确保已注册节点健康度,能够及时准确剔除失效节点,保证服务发现正确性

  • 失效原因:部署重启,服务假死,异常终止
  • 解决方案:上报心跳,服务探测

(4)变更通知:当服务提供方节点发生变更时,注册中心应该能够第一时间把变更事件或变更后的数据推送到服务订阅方;

  • 注册中心内为每个服务提供方建立订阅列表,当服务方节点变更时通知所有订阅该服务的消费方节点

(5)服务治理:注册中心除了实现服务注册与发现,还可以用来实现服务治理相关功能

  • 服务扩容/缩容, 机器迁移,权重,灰度流量

设计要点

(1)数据可靠性:数据冗余存储,确保不会因为单节点故障导致数据丢失

(2)数据一致性:各节点间数据同步,保证数据一致性。采用什么协议来保证各个节点数据是一致的。我们可以采用Gossip 协议

  • Gossip协议基本思想就是:一个节点想要分享一些信息给网络中的其他的一些节点。于是,它周期性的随机选择一些节点,并把信息传递给这些节点。这些收到信息的节点接下来会做同样的事情,即把这些信息传递给其他一些随机选择的节点。一般而言,信息会周期性的传递给N个目标节点,而不只是一个;
  • 主要特点就是:周期性散播消息、随机选择N个节点散播、散播不重复不回传

(3)服务可用性:多节点对等的对外提供服务,由数据可靠性和一致性保证了服务的可用性。

CAP理论

CAP理论是分布式架构中重要理论;

  • 一致性(Consistency):所有节点在同一时间具有相同的数据;
  • 可用性(Availability): 保证每个请求不管成功或者失败都有响应;
  • 分隔容忍(Partition tolerance): 系统中任意信息的丢失或失败不会影响系统的继续运作。

在一个分布式系统中,强一致性(C)、高可用性(A)、分区容错(P)三个因素之间只能满足两个,不能同时满足三个。

AP: Availability(可用性)-Partition tolerance(分区容错性)系统,简单来说,AP系统是指在面对网络分区或失败的情况下,系统能够保证可用性,但不保证数据一致性;

CP:Consistency(一致性)-Partition tolerance(分区容错性)系统是指在面对网络分区或失败的情况下,系统能够保证数据一致性,但不保证可用性。

CAP 不可都取,只能取其中2个的原因如下:

(1)如果C是第一需求的话,那么会影响A的性能,因为要数据同步,不然请求结果会有差异,但是数据同步会消耗时间,期间可用性就会降低。

(2)如果A是第一需求,那么只要有一个服务在,就能正常接受请求,但是对于返回结果变不能保证,原因是,在分布式部署的时候,数据一致的过程不可能像切线路那么快。

(3)如果同时满足一致性和可用性,那么分区容错就很难保证了,也就是单点,也是分布式的基本核心。

AP 和 CP 系统的选择取决于我们的应用场景和需求。如果应用需要保证数据的一致性,那么我们应该选择 CP系统;如果应用需要保证可用性,并且可以容忍数据的不一致性,那么我们可以选择 AP 系统。

注册中心客户端组件功能

(1) 服务发现: 从注册中心查询可用provider实例清单;

(2)实例缓存: 将从注册中心查询到provider 实例清单缓存到本地,不需要在每次使用时都去注册中心临时获取。

服务发现

由于在服务治理框架下运行,服务间的调用不再通过指定具体的实例地址来实现,而是通过向服务名发起请求调用实现。

远程客户端组件

远程客户端组件与微服务提供者之间一般使用某种RPC 通信机制来进行服务消费,常见的RPC通信方式是Rest API, 底层为Http传输协议。远程客户端组件则通常以模块组件的方式完成REST API的远程调用。

微服务提供者provider

微服务提供者通常以Web服务的方式提供REST API接口。

微服务提供者的主要功能如下:

(1) 服务注册:Provider微服务实例在启动时将自己的信息注册到注册中心上的过程。

(2) 心跳续约:Provider实例会定时向服务注册中心提供“心跳”,以表明自己还处于可用的状态。当一个Provider实例停止心跳一段时间后,注册中心会认为该服务实例不可用了,就会将该服务实例从服务注册列表中剔除。如果被剔除的Provider实例过一段时间后继续向注册中心提供心跳,那么服务注册中心会将该Provider实例重新加入服务注册表中。

(3)健康状况查询:Provider实例能提供健康状况查看的API,注册中心或者其他的微服务Provider能够获取其健康状况。

微服务提供者的服务注册和心跳续约一般都会通过注册中心客户端组件来完成。。

注册中心、微服务提供者、远程客户端组件之间的关系大致如下:
在这里插入图片描述

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

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

相关文章

OpenGL之Mesa3D编译for Ubuntu20.04(三十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

vue3中的Fragment、Teleport、Suspense新组件

Fragment组件 在Vue2中: 组件必须有一个根标签 在Vue3中: 组件可以没有根标签, 内部会将多个标签包含在一个Fragment虚拟元素中 好处: 减少标签层级, 减小内存占用 <template><div style"font-size: 14px;"><p> 组件可以没有根标签</p&g…

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训 在当今数字化时代&#xff0c;大数据技术的迅猛发展带来了前所未有的数据增长&#xff0c;同时也催生了对数据安全和网络安全的更为迫切的需求。本篇博客将聚焦于大数据技术背景下的数据安全与网络安全&#xff…

Cascader 级联选择器动态加载数据的回显

如果后端没有只返回第三级的id,而是同时把第三级的名字一起返回了&#xff0c;那么就可以通过下面的方法来实现 1.在级联选择器里面加上这句代码 placeholder"请选择" 2.注册一个字符串 pleasett:"" 3.赋值 如过后端返回的有第三级的选项名 直接进行赋…

解密Kafka主题的分区策略:提升实时数据处理的关键

目录 一、Kafka主题的分区策略概述1.1 什么是Kafka主题的分区策略&#xff1f;1.2 为什么分区策略重要&#xff1f; 二、Kafka默认分区策略2.1 Round-Robin分区策略 三、自定义分区策略3.1 编写自定义分区器3.2 最佳实践&#xff1a;如何选择分区策略 四、分区策略的性能考量4.…

【JS Promise, Promise.all 与 async/await用法详解】

目录 PromisePromise基本使用Promise可进行连续回调Promise回调可接受入参1.工作原理 async/await总结参考文档&#xff1a; 异步 let a 0setTimeout(() > {a 1}, 1000)console.log(a) // 0此时这个延迟就成为异步执行的了&#xff0c;a值还没有变1就被使用输出&#xff0…

element table滚动到底部加载数据(vue3)

效果图 使用插件el-table-infinite-scroll npm install --save el-table-infinite-scroll局部导入 <template><div class"projectTableClass"><el-table v-el-table-infinite-scroll"load"></el-table></div> </temp…

C#,《小白学程序》第二十七课:大数四则运算之“运算符重载”的算法及源程序

1 文本格式 using System; using System.Text; using System.Collections; using System.Collections.Generic; /// <summary> /// 大数的四则&#xff08;加减乘除&#xff09;运算 /// 及其运算符重载&#xff08;取余数&#xff09; /// </summary> public cl…

海外热门:香港服务器和美国服务器的成本较量

​  提到 2023 年海外热门服务器&#xff0c;在整个 IDC 站长圈中&#xff0c;要数香港服务器和美国服务器的关注度一直居高不下。其实也正常&#xff0c;毕竟这两种海外服务器相较成熟。不过&#xff0c;在实际使用中&#xff0c;两者也会被拿来对比&#xff0c;最显而易见的…

WordPress安装AWS插件实现文本转语音功能

适用于 WordPress 的 AWS 插件示例演示了内容创建者如何轻松地为所有书面内容添加文本转语音功能。随着语音搜索的不断增加&#xff0c;以音频格式提供更多网站内容变得至关重要。通过添加语音功能&#xff0c;网站访客可以通过在线音频播放器和播客应用程序等新渠道使用您的内…

Dubbo3使用Zookeeper作为注册中心的方案讨论!详解DubboAdmin与PrettyZoo来监控服务的优劣!

文章目录 一&#xff1a;Dubbo注册中心的基本使用 二&#xff1a;Zookeeper注册中心的使用 1&#xff1a;依赖引入 2&#xff1a;实际开发 三&#xff1a;Zookeeper作为注册中心的使用展示 1&#xff1a;启动注册Zookeeper服务 2&#xff1a;引入注册中心 (一)&#xf…

【开源】基于JAVA的天然气工程运维系统

项目编号&#xff1a; S 022 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S022&#xff0c;文末获取源码。} 项目编号&#xff1a;S022&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程…

ESP32-Web-Server编程- 使用SSE 实时更新设备信息

ESP32-Web-Server编程- 使用SSE 实时更新设备信息 概述 如前所述&#xff0c;传统 HTTP 通信协议基于 Request-Apply&#xff08;请求-响应&#xff09;机制&#xff0c;浏览器&#xff08;客户端&#xff09;只能单向地向服务器发起请求&#xff0c;服务器无法主动向浏览器推…

2023亚太杯数学建模A题思路分析 - 采果机器人的图像识别技术

1 赛题 问题A 采果机器人的图像识别技术 中国是世界上最大的苹果生产国&#xff0c;年产量约为3500万吨。与此同时&#xff0c;中国也是世 界上最大的苹果出口国&#xff0c;全球每两个苹果中就有一个&#xff0c;全球超过六分之一的苹果出口 自中国。中国提出了一带一路倡议…

智安网络|发现未知风险,探索渗透测试的奥秘与技巧

在当今信息时代&#xff0c;网络安全已成为组织和个人面临的重大挑战。为了保护网络系统的安全&#xff0c;渗透测试成为一种重要的手段。 一、渗透测试的基本原理 渗透测试是通过模拟黑客攻击的方式&#xff0c;对目标系统进行安全评估。其基本原理是模拟真实攻击者的思维和行…

稳定的音频来了 — 使用人工智能创作音乐(for free)

今天&#xff0c;以稳定扩散&#xff08;Stable Diffusion&#xff09;和StableLM等开源AI工具和模型而闻名的Stability AI公司推出了其首个音乐和声音生成AI产品——StableAudio。音乐产业以其难以打入而闻名。即使您拥有才华和动力&#xff0c;您仍然需要创作和制作音乐所需的…

ESP32单片机案例

工具&#xff1a;VScode PlatformIO IDE 注&#xff1a;B站视频学习笔记。 1、继电器 1&#xff09;硬件电路 2&#xff09;程序 #include <Arduino.h> #define RELAY_PIN 15//初始化定时器 hw_timer_t *timer NULL;void timer_interrupt(){digitalWrite(RELAY_PIN…

C++设计模式——原型 (克隆)模式

一、什么是原型模式 Prototype模式说简单点&#xff0c;就是提供了一个clone, 通过已存在对象进行新对象创建。clone&#xff08;&#xff09;实现和具体的实现语言相关&#xff0c;在C中我们通过拷贝构造函数实现。 那为啥要写clone的接口来实现这个目的呢&#xff1f;直接使…

如何在本地安装部署WinSCP,并实现公网远程本地服务器

可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器 文章目录 可视化文件编辑与SSH传输神器WinSCP如何公网远程本地服务器1. 简介2. 软件下载安装&#xff1a;3. SSH链接服务器4. WinSCP使用公网TCP地址链接本地服务器5. WinSCP使用固定公网TCP地址访问服务器 1. 简介 …

【刷题笔记】分糖果||数组||暴力通过||符合思维方式||多案例分析

分发糖果 文章目录 分发糖果1 题目描述2 题目分析2.1 寻找波峰波谷2.2 从波底往波峰攀爬&#xff01;2.2 计算糖果 3 代码附录1 1 题目描述 https://leetcode.cn/problems/candy/ n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&…