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

news2024/11/17 9:27:44

基础概念

注册中心

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

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

在这里插入图片描述

主要功能

(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.coloradmin.cn/o/1242441.html

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

相关文章

群晖NAS搭建WebDav服务做文件共享,可随时随地远程访问

文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后,启动webdav服务,并勾选HTTP复选框 2. 局域网测试WebDav服务2.1 下载RaiDrive客户端2.2 打开RaiDrive,设置界面语言可以选择中文2.3 点击添加按钮,新建虚拟驱动区2…

碳化硅MOS/超结MOS在直流充电桩上的应用-REASUNOS瑞森半导体

一、前言 直流充电桩是新能源汽车直流充电桩的简称,一般也被叫做“快充”。直流充电桩一般与交流电网连接,可作为非车载电动汽车的动力补充,是一种直流工作电源的电源控制装置,可以提供充足的电量,输出电压和电流可以…

.symtab ELF符号表(转载)

1. 符号表(symbol table)介绍 ELF文件中的“符号表(symbol table)”包含的是程序中的符号信息 – 这些符号代表的或许是定义(例如定义全局变量时使用的变量名,或者定义函数时使用的函数名)&…

探索网络模型与协议:从OSI到HTTPs的原理解析

一、OSI网络模型 OSI(Open Systems Interconnection)七层网络参考模型和TCP/IP四层模型都是用于理解和设计计算机网络的框架,但它们之间存在一些差异。 1、七层 vs 四层 OSI七层网络参考模型: 物理层(Physical Laye…

博士研究生不会编程,也没有使用过Python,是否很失败

首先,对于博士研究生来说,虽然在学习和科研的过程中会涉猎到大量的专业知识,但是同样也会错过很多知识,对于非计算机相关专业的博士研究生来说,没有使用过Python,或者说编程能力比较弱也是比较正常的情况&a…

Linux CentOS+宝塔面板工具结合内网穿透实现网站发布至公网可访问

使用Typecho搭建个人博客网站,并内网穿透实现公网访问 文章目录 使用Typecho搭建个人博客网站,并内网穿透实现公网访问前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 …

「快学Docker」监控和日志记录容器的健康和性能

「快学Docker」监控和日志记录容器的健康和性能 1. 容器健康状态监控2. 性能监控3. 日志记录几种采集架构图 4. 监控工具和平台cAdvisor(Container Advisor)PrometheusGrafana 5. 自动化运维 1. 容器健康状态监控 方法1:需要实时监测容器的运…

医学检验(LIS)源码,实现检验结果审核自动化、检验无纸化、双向通讯

医学检验(LIS)管理系统 随着全自动生化分析仪、全自动免疫分析仪和全自动血球计数器等仪器的使用,检验科的大多数项目实现了全自动化分析。全自动化分析引入后,组合化验增多,更好的满足了临床需要,也使检验科的工作量和检验数据成…

centos7中通过minikube安装Kubernetes

minikube是一款开源的Kubernetes集群管理器,它可以帮助您在本地计算机上轻松部署和管理Kubernetes集群。以下是minikube的安装和使用步骤: 安装Docker:如果您还没有安装Docker,可以从Docker官方网站上下载并安装适合您操作系统的…

YOLOv5改进: Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 💡💡💡Yolov5/Yolov7魔术师,独家首发创新(原创),适用于…

Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现

目录 Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现 APP 加固方式 iOS APP加固代码实现 打开要处理的IPA文件 设置签名使用的证书和描述文件 开始ios ipa重签名 APP 加固方式 iOSAPP 加固是优化 iOS安全性的一种方法&…

三十分钟学会Shell(下)

Shell 3.1 运算符 3.1.1 算数运算符 在Shell脚本中,算术运算符用于执行基本的数学运算。Shell支持多种算术运算符,包括加、减、乘、除等。以下是关于Shell算术运算符的一些方法以及相应的示例说明: 加法: a10 b20 c$((a b)) …

Android WorldWind加载shapefile格式文件形成三维效果

目录 1 前言2 实现思路3 绘制Polygons4 读取shapefile文件5 加载立体模型6 问题1 前言 在项目中有时会加载shapefile格式的数据,要形成三维立体效果。但是查看worldwind NASA官网,在worldwind android的使用教程中并没用加载shapefile格式的教程,然后源码中也没有开发加载s…

windows事件查看器日志

Windows 事件查看器(Event Viewer)是 Windows 操作系统提供的一个内置工具,它用于管理和查看系统、应用程序和安全事件日志。在 Windows 系统中,各种活动和错误都会被记录到事件日志中,包括系统启动、应用程序崩溃、安…

永久免费!N个excel表一键合并成一个表(excel表格合并技巧)

您是否还在用手工复制粘贴来将多个EXCEL或表的数据合并到一个表里?那就太麻烦,效率太低了,用金鸣表格文字识别的“表格合并”功能,可免费将N个excel文件或N个excel表一键合并到一个表里面,而且这个功能永久免费&#x…

栈回溯--在栈里挑出返回地址

GNU Arm Embedded Toolchain project files : GNU Arm Embedded Toolchain arm-none-eabi-addr2line -e F103_Moduel.axf -a -f 08000350 08001d94 0800260c 汇编中: ;HardFault_Handler ; PROC ; EXPORT HardFault_Handler …

PTA-用天平找小球

三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。 输入格式: 输入在一行中给出3个正整数,顺序对应球A、B、C的重量。 输出格式: 在一行中输出唯一的那个不一样的球。 输入样例&#xff…

Docker部署Vue+Springboot项目

一、部署Springboot项目 1.1先将本地的java项目打成jar包。 再右上角进行maven操作。 1.2将jar包上传到服务器当中。 先再目录/home 下创建一个文件夹(classRoom)用于存放后端打镜像时需要的文件。 如果是服务器的话可以直接将文件拖拽到想要转移的地方…

设计师不能忽视的几个宝藏图标设计工具

在这个快速变化的时代,设计师对创新和实用工具的需求越来越大。这就要求我们及时跟上潮流,不断探索和尝试最新、最有价值的图标设计工具。只有这样,我们才能在竞争激烈的设计市场中脱颖而出。以下是我们精心挑选的2024年值得一试的图标设计工…

2015年1月12日 Go生态洞察:Go语言中错误也是值

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…