服务注册中心

服务注册中心

注册中心与CAP理论介绍
1.注册中心
  • 服务注册中心是微服务架构中的一个关键组件,它的主要作用是管理服务实例的注册、维护和发现。

  • 是一个中心化的组件来分散的微服务实例的位置和状态。

  • 注册中心有三种角色构成:

    • 服务提供者:是注册中心中的主动方,负责将自己的服务实例信息注册到注册中心。
    • 服务消费者:是注册中心中的被动方,负责从注册中心获取服务实例信息,并建立与这些服务实例的连接。
    • 注册中心:注册中心是服务提供者和服务消费者之间的中介,负责维护服务实例的注册信息,并支持服务发现功能。

    在这里插入图片描述

2.注册中心基本功能
  • 服务注册管理:管理服务提供者注册的服务信息,包括服务的地址、端口、API等。
  • 服务发现:响应对服务消费者的查询请求,提供可用服务实例的列表。
  • 服务发现:响应对服务消费者的查询请求,提供可用服务实例的列表。
  • 健康检查:定期对服务实例进行健康检查,移除不可用的服务实例。
  • 负载均衡:支持负载均衡策略,将请求分发到不同的服务实例。
  • 服务治理:提供服务治理功能,如服务版本控制、服务依赖关系管理等。
  • 高可用性:保证自己的高可用性,防止单点故障影响整个微服务架构。
  • 动态伸缩:支持服务实例的动态增加和减少。
  • 数据一致性:保证服务信息的一致性,防止数据不一致导致的服务调用错误。
  • 安全性:实现安全机制,保护服务信息不被未授权访问或篡改。
2. CAP理论
  • CAP理论是分布式系统设计中的一个重要概念,它描述了在分布式环境中,系统设计者在一致性、可用性和分区容错性三者之间的权衡关系。
  • 一致性(Consistency): 一致性指的是系统中的所有数据副本在任何时刻都保持同步。
  • 可用性(Availability): 可用性指的是系统对客户端的请求总是能够给出响应,无论这个响应是成功还是失败。
  • 分区容错性(Partition tolerance):系统在面对网络分区(如交换机失败、网络延迟或服务器宕机)时,仍然能够继续提供服务,并保证数据的一致性和可用性。
3. CAP不能全取的原因
  • 一致性与可用性
    • 一致性要求所有节点在同一时间的数据都是完全一致的,这通常需要时间同步和状态同步机制。
    • 在发生网络分区时,为了保证一致性,系统可能需要拒绝或延迟某些操作,这会影响系统的可用性。
    • 在面临分区时,系统必须在一致性和可用性之间做出选择。
  • 一致性与分区容错性
    • 一致性要求系统中的所有数据副本在任何时刻都保持同步。
    • 但在发生分区时,不同区域的数据可能会因为网络隔离而无法及时同步。
    • 为了保证一致性,系统可能会选择在分区解决之前拒绝或延迟操作,这会影响系统的分区容错性。
  • 可用性与分区容错性
    • 可用性要求系统对客户端的请求总是能够给出响应,但在发生分区时,系统可能无法访问所有数据副本或部分节点。
    • 为了保证可用性,系统可能会选择继续服务,但这可能会导致数据不一致,从而牺牲一致性。
4.三大类
  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。

  • CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。

  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

Eureka
1.基本介绍
  • Eureka Server是服务注册中心,提供服务的注册和发现功能。服务在启动时,会向Eureka Server注册自己的信息,如主机名、端口、健康指标URL等。属于CAP里面的AP分支。
  • Eureka包含两个组件:Eureka Server和Eureka Client。
    • Eureka Server提供服务注册服务,各个微服务节点通过配置启动后,会在Eureka Server中进行注册。这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。
    • Eureka Client是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除
2.自我保护机制
  • 某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存。
  • 此机制的触发条件是当某个微服务在一定时间内没有发送心跳时,Eureka不会立即清理该服务,而是继续保存其信息。
  • 这样做是为了防止服务在网络分区之后,因为查询不到服务而产生更多的服务故障。
3. Eureka特点
  • 高可用性:Eureka Server可以运行在多个实例上,并且它们之间可以相互复制注册表信息,这样即使一个实例宕机,其他实例仍然可以提供服务发现功能。 采用的是Peer to Peer 对等通信。这是一种去中心化的架构。
  • 服务注册与发现:Eureka允许服务提供者在启动时注册自己,并且客户端可以通过Eureka Server获取到已注册服务的位置信息。
  • 心跳检测:服务提供者需要定期向Eureka Server发送心跳,以表明服务仍然存活。如果Eureka Server在一定时间内没有收到服务提供者的心跳,它将会从注册列表中移除该服务。
  • 客户端负载均衡:Eureka Client通常与负载均衡器(如Ribbon)结合使用,可以在客户端进行负载均衡,选择最佳的服务实例进行调用。
4. Eureka工作流程
  • Server端启动成功后,进入等待服务端注册阶段。
  • 在启动过程中如果配置了集群,集群之间定 同步注册表,每个 Eureka Server 都存在独立完整的服务注册表信息。
  • Client端启动时根据配置的Server 地址去注册中心注册服务。会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常。Server 某周期内没有收到 Eureka Client 的心跳,注册中心则认为该节点失效,会注销该实例。
  • Client端定时全量或者增量从注册中心获取服务注册表,并且将获取到的信息缓存到本地。
  • Client 程序关闭时向Server 发送取消请求,Server 将实例从注册表中删除。
Zookeeper
1.基本介绍
  • zookeeper是一个分布式协调工具,可以实现注册中心功能。属于CAP里边的CP分支。
  • 它采用了一种称为ZAB的协议来保证数据的一致性,并采用主从节点复制的方式来实现数据的高可用性。
  • 主要用于管理和维护大型分布式系统中的配置信息、命名服务、状态同步等。
2.主要功能
  • 配置管理:可以用于存储和同步分布式系统的配置信息。当配置发生变化时,所有订阅了该配置的服务都会收到通知并自动更新。
  • 命名服务:提供了一个类似DNS的服务,允许分布式系统中的服务注册自己的名字,并可以通过这个名字被其他服务发现和访问。
  • 分布式锁:可以用于实现分布式锁,确保在分布式环境中对共享资源的访问是同步的,防止多个服务同时修改同一资源。
  • 队列管理:可以用于管理分布式队列,支持先进先出(FIFO)的队列操作,确保消息的顺序性和可靠性。
  • 集群管理:可以帮助管理分布式系统中的集群,包括服务器的加入、退出、健康状态监控等。
  • 数据一致性:使用ZAB协议来保证数据的一致性,确保所有节点上的数据最终是一致的。
  • 高可用性:集群中的数据是通过复制的方式在多个节点上保存的,即使部分节点宕机,系统仍然可以继续提供服务。
  • 负载均衡:可以与负载均衡器配合使用,如Ribbon,以实现客户端的负载均衡。
  • 服务发现:允许服务提供者在启动时注册自己,并且客户端可以通过查询和发现所需的服务。
3.工作流程
  • 服务提供者启动时,会将其服务名称,ip地址注册到配置中心。
  • 服务消费者在第一次调用服务时,会通过注册中心找到相应的服务的IP地址列表,并缓存到本地,以供后续使用。
  • 当消费者调用服务时,不会再去请求注册中心,而是直接通过负载均衡算法从IP列表中取一个服务提供者的服务器调用服务。
  • 不具有自我保护机制,当某项服务宕机后相应的ip会被移出注册中心。当其再次上线时会重新注册。
Consul
1.基本介绍
  • Consul 是一套开源的分布式服务发现和配置管理系统,用 Go 语言开发。属于CAP里边的CP分支。
  • 提供了微服务系统中的服务治理、配置中心、控制总线等功能。
  • 这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格。
2.功能
  • 服务发现:提供HTTP和DNS两种发现方式。
  • 健康监测:支持多种方式,HTTP、TCP、Docker、Shell脚本定制化监控。
  • KV存储:Key、Value的存储方式。
  • 多数据中心:Consul支持多数据中心。
  • 具有可视化Web界面。
3.工作流程
  • 服务注册:服务实例在启动时向Consul注册自己的信息,包括服务ID、名称、地址、端口和健康检查URL等。
  • 健康检查:Consul定期对注册的服务实例进行健康检查,通过HTTP GET请求访问健康检查URL。若检查失败,则标记服务实例为不健康。
  • 服务发现:服务消费者通过Consul查询健康的服务实例列表,并根据列表选择一个实例进行调用。
  • 负载均衡:Consul可与负载均衡器(如Ribbon)配合,实现客户端负载均衡。负载均衡器根据Consul提供的服务实例列表,选择一个实例进行调用。
  • 服务调用:服务消费者通过负载均衡器向选定的服务实例发送请求,服务实例处理请求并返回响应。
  • 服务注销:当服务实例不再可用时,向Consul发送注销请求。Consul从注册列表中移除该实例,并通知其他服务消费者。
管理工具异同点
1.相同点
  • 三者都提供了服务发现的功能,允许服务实例注册自己,并且可以被其他服务实例发现和调用。
  • 都可以对注册的服务实例进行健康检查,以确保只有健康的服务实例被其他服务调用。
  • 这三个系统都支持高可用性,可以通过集群部署来提高系统的可靠性。
  • 都可以应用负载均衡。
2.不同点
  • Eureka遵循CAP定理中的AP模型,即可用性和分区容错性,而不是强一致性。好死不如赖活着。
  • Zookeeper遵循CAP定理中的CP模型,即一致性和分区容错性,牺牲了可用性。
  • Consul也遵循CAP定理中的CP模型,但在某些情况下可以通过配置来实现近似于强一致性的行为。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每周一算法:倍增法求最近公共祖先(LCA)

最近公共祖先 最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 题目链接 祖孙询问 题目描述 给定一棵包含 n n n 个节点的有根无向树,节点…

知虾shopee数据:为卖家提供了丰富的数据分析工具

使用Shopee的卖家都知道,这个平台为卖家提供了丰富的数据分析工具,帮助他们更好地理解店铺运营状况和市场趋势。这些数据分析工具不仅能够提供数据总览,还包括买家分析、商品排名、分类排名、销售辅导、流量分析、销售结构、行销活动、聊天响…

SpringCloud Alibaba之Nacos配置中心配置详解

目录 Nacos配置中心数据模型Nacos配置文件加载Nacos配置 Nacos配置中心数据模型 Nacos 数据模型 Key 由三元组唯一确定,三元组分别是Namespace、Group、DataId,Namespace默认是公共命名空间(public),分组默认是 DEFAUL…

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化

聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化 目录 聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.聚类分析 | Matlab实现基于RIME-DBSCAN的数据聚类可视化(完整源码和数据) 2.多特征输入&…

HarmonyOS 应用开发学习笔记 状态管理概述

移动端开发,最重要的一点就是数据的处理,并且正确的显示渲染UI。 变量在页面和组件、组件和组件之间有时候并不能实时共享,而有时候,又不需要太多的作用域(节省资源),作用就需要根据不同场景&am…

MQ 发消息的4种姿势

微服务开发中经常会使用消息队列进行跨服务通信。在一个典型场景中,服务A执行一个业务逻辑,需要保存数据库,然后通知服务B执行相应的业务逻辑。在这种场景下,我们需要考虑如何发送消息。 1. 基础版 首先,我们可能会考虑将数据库操作和消息发送放在同一个事务中,以下是伪…

深度学习笔记

激活函数 激活函数可以让神经网引入非线性性质,去除线性相关特征映射,是网络捕获数据中的不同特征;relu max(0,x)输出为0到正无穷sigmod输出为0-1 形状为srelu 输出为-1-1 以0为中心,形状为s …

【STM32】STM32学习笔记-ADC模数转换器(21)

00. 目录 文章目录 00. 目录01. ADC简介02. ADC主要特征03. 逐次逼近型ADC04. ADC功能描述05. ADC基本结构06. 输入通道07. 转换模式08. 触发控制09. 数据对齐10. 转换时间11. 校准12. 硬件电路13. 附录 01. ADC简介 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F1…

再次拓宽信创生态版图,思迈特与统信软件完成产品兼容适配认证

近日,思迈特软件与统信软件科技有限公司(简称“统信软件”)完成产品兼容性适配互认证,加速国产信创生态化建设进程。 本次测试由商业智能与数据分析软件(简称:Smartbi Insight V11)产品与统信服…

AMEYA360分享:太阳诱电导电性高分子混合铝电解电容器

随着汽车电动化和电子控制化的进展,车载计算机和电气部件也在逐渐向大功率化的方向发展。而构成这些车载设备电源电路的电子元器件也必须随之进行技术革新。 太阳诱电集团携手全资子公司ELNA,开发并供应新型电容器“导电性高分子混合铝电解电容器”&…

农业银行RPA实践 3大典型案例分析

零接触开放金融服务在疫情之下被越来越多的银行和客户所认同,引起了更广泛的持续关注,各家银行纷纷开展产品服务创新,加速渠道迁移,同时通过远程办公、构建金融生态等方式积极推进零接触开放金融体系建设。 随着商业银行科技力量的…

JSP页面访问JDBC数据库的六个步骤

【例】创建exgample11_1.jsp页面&#xff0c;并在该页面中使用纯Java数据库驱动程序连接数据库test&#xff0c;并查询数据表goods中的数据。 <% page language"java" contentType"text/html;charsetUTF-8" pageEncoding"UTF-8"%> <% …

Flink窗口与WaterMark

本文目录 窗口的生命周期Window Assigners窗口函数&#xff08;Window Functions&#xff09;TriggersEvictorsAllowed Lateness 窗口 窗口&#xff08;Window&#xff09;是处理无界流的关键所在。窗口可以将数据流装入大小有限的“桶”中&#xff0c;再对每个“桶”加以处理。…

基于低代码的指尖遐想_3

低代码需要回答三个问题&#xff1a; 1、是否降低了门槛&#xff1f; 2、是否提高了效能&#xff1f; 3、使用者用户画像&#xff1f; 广义低代码&#xff0c;从项目全局维度&#xff08;项目启动、需求调研、方案设计、配置开发、系统验收、系统运营&#xff09;进行了解答。…

使用Termux+Hexo搭建个人博客结合内网穿透工具轻松实现公网访问内网博客

文章目录 前言 1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并结合…

【算法每日一练]-动态规划 (保姆级教程 篇15)#动物 #赶deadline #page #构造字符串

目录 今日知识点&#xff1a; 01背包的路径输出 计算位和的数位dp 不用管字符串&#xff0c;只需要看好约束dp转移的变量 动物 赶deadline page 构造字符串 动物 有某类动物&#xff0c;可以在农场待n天&#xff0c;每天最多增加一只动物&#xff0c;第i天到来的动物每…

Android开发,jni,ndk开发,调用fmod音频库,音效引擎库

文章目录 Android开发&#xff0c;jni&#xff0c;ndk开发&#xff0c;调用fmod音频库&#xff0c;音效引擎库1.fmod介绍2.cmake3.C代码实践 Android开发&#xff0c;jni&#xff0c;ndk开发&#xff0c;调用fmod音频库&#xff0c;音效引擎库 1.fmod介绍 https://www.fmod.c…

前端常用的几种算法的特征、复杂度、分类及用法示例演示

算法&#xff08;Algorithm&#xff09;可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤&#xff0c;或者看成按照要求设计好的有限的确切的计算序列&#xff0c;并且这样的步骤和序列可以解决一类问题。算法代表着用系统的方法描述解决问题的策略机制&#xff0c…

两整数之和 -- 位运算

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 力扣&#xff08;LeetCode&#xff09; 输入描述 输入两个要相加的数&#xff0c;a和b 输出描述 返回a和b的和&#xff0c;这里其实直接return ab; 直接就过了&#xff0c;但是人题目要求还是给点面子~ 算法…

mariadb实现主从同步

准备两台服务器 Mariadb-Master&#xff1a;192.168.44.150 Mariadb-Backup&#xff1a;192.168.44.148 安装mariadb&#xff1a; https://blog.csdn.net/qq_50247813/article/details/135402502?spm1001.2014.3001.5502 组从复制原理如下 修改主数据库配置如下 vi /etc/my.…