服务注册中心

服务注册中心

注册中心与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模型,但在某些情况下可以通过配置来实现近似于强一致性的行为。

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

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

相关文章

SSM框架注解大全

先赞后看,养成习惯!!!❤️ ❤️ ❤️ 文章码字不易,如果喜欢可以关注我哦! ​如果本篇内容对你有所启发,欢迎访问我的个人博客了解更多内容:链接地址 SSM框架注解大全 三大框架注解…

Huffman树实现文件压缩

【问题描述】给定一个文件,文件由n个字符组成,但他们出现的频度不相同。要求对该文件中的字符集构造哈夫曼树,并计算编码后的文件长度。 【输入形式】 输入的第1行有1个数字n,表示文件中总的字符个数。接下来1行中有n个数字&…

跨境电商竞品分析:洞察市场,赢得先机的关键策略

在全球化日益加速的今天,跨境电商已经成为了企业拓展市场、提高销售额的重要手段。然而,跨境电商市场的竞争也日趋激烈,如何在众多竞争对手中脱颖而出,成为每个企业都面临的挑战;想要做到这点,了解竞品情况…

Apache Doris (六十一): Spark Doris Connector - (1)-源码编译

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. Spark Doris Connector…

vue3中状态管理库pinia的安装和使用方法介绍及和vuex的区别

Pinia 与 Vuex 一样,是作为 Vue 的“状态存储库”,用来实现 跨页面/组件 形式的数据状态共享。它允许你跨组件或页面共享状态。如果你熟悉组合式 API 的话,你可能会认为可以通过一行简单的 export const state reactive({}) 来共享一个全局状…

【Python】开始你的Python之旅(Anaconda、Pycharm、Jupyter)

Python工具准备 下载安装AnacondaPycharmJupyter Notebook 启动使用AnacondaPycharmJupyter Notebook 引言: 信息时代,计算机引领。人工智能,Python是基础。信息时代学习好Python乃是在人工智能时代的立足之本。 本文: 做好Pyth…

开发者必备的 Github 加速工具(截至2024年01月)

开始闲聊前,我要感谢大神小青龍总结的博文:作为程序员不得不知道的几款Github加速神器,给我们介绍了常用(较为合规😄)的加速方法。毕竟 github 是开发者绕不过的宝库。 背景 我用 Github 将近12年&#x…

JS鼠标事件总结学习

首先我们先简单过一遍鼠标MouseEvent事件: click: 当鼠标单击元素时触发。dblclick: 当鼠标双击元素时触发。mousedown: 当按下鼠标按钮时触发。mouseup: 当释放鼠标按钮时触发。mousemove: 当鼠标指针在元素上移动时触发。mouseover: 当鼠标指针移动到元素上方时触…

C++精进之路之路(九)内存模型和名称空间

C鼓励程序员在开发程序时使用多个文件。一种有效的组织策略是,使用头文件来定义用户类型,为操纵用户类型的两数提供两数原型:并将两数定义放在一个独立的源代码文件中。头文件和源代码文代一起定义和实现了用户定义的类型及其使用方式。最后&…

初步认识架构分层

一般初创软件,为快速上线,几乎不考虑分层。但随业务越发复杂,就会导致逻辑复杂、模块相互依赖、代码扩展性差等各种问题。 架构分层迫在眉睫。 1 什么是架构分层? 软件工程中常见的设计方式,将整体系统拆分成N个层次,…

C#进制--2进制、10进制、16进制(Modbus通讯部分)详解

引言:最近接触了一些通讯方面信息,写个小结记录一下,即时更新 1.二进制数: 是计算技术中经常采用的一种数制。二进制数据是由0和1两个基本数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是…

软件测试错题集(黑盒、白盒测试)

所有判断题第二个选项是正确答案 1.[判断题] 不存在质量很高但可靠性很差的产品。 错 对 2.[判断题] 软件测试按照测试过程分类为黑盒、白盒测试。 对 错 3.[判断题] 从软件开发者的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑用户是否可接受该产品。 …

3D空间漫游技术的日趋成熟,让博物馆数字化大放异彩!

随着科技的飞速发展,互联网已经成为人们生活中不可或缺的一部分。在这个数字化时代,博物馆也紧跟时代潮流,将传统的实体博物馆与现代科技相结合,诞生了一种全新的博物馆形式——3D线上博物馆。这种新型博物馆凭借其独特的魅力&…

Flutter 三点三:Dart Stream

Stream Stream用于接收异步事件Stream 可以接收多个异步事件Stream.listen()方法返回StreamSubscription 可用于取消事件订阅,取消后,不再接收事件 基本使用 Stream.fromFutures([Future.delayed(Duration(seconds: 1),(){return "事件1";})…

SemCms外贸网站商城系统 SQL注入漏洞复现(CVE-2023-50563)

0x01 产品简介 SemCms是国内团队打造的专门针对外贸网站的开源CMS,主要用于外贸企业,兼容IE,Firefox等主流浏览器。建设商城性质的外贸网站,多语言(小语种)网站。 0x02 漏洞概述 SemCms外贸网站商城系统SEMCMS_Function.php 中的 AID 参数存在SQL注入漏洞,未经身份认…

数据库:基础SQL知识+SQL实验2

(1)基础知识: 1.JOIN(连接): 连接操作用于根据指定的条件将两个或多个表中的数据行合并在一起。JOIN 可以根据不同的条件和方式执行,包括等值连接、不等值连接等。 (1&#xff09…

自制Java镜像发布到dockerhub公网使用

文章目录 问题现象解决制作Java镜像发布使用 问题现象 书接上回,上周处理了一个docker问题,写了篇博客:自定义docker镜像,ubuntu安装命令并导出我们使用谷歌的jib插件打包,详情可以参考这篇文章:Spring Bo…

联想M7400加粉后如何清零

联想M7400黑白激光多功能打印一体机加粉后清零方法: 吴中函 加粉后,确保硒鼓已经被正确安装并且机器已经通电。 1、打开前盖,以便进行后续的操作。 2、按下“清除/返回”键,这会触发一个屏幕提示:提示内容为“更换…

ros2 ubuntu 20.04 安装 foxy

设置区域设置 确保您有一个支持UTF-8. 如果您处于最小环境(例如 docker 容器)中,则区域设置可能是最小的,例如POSIX. 我们使用以下设置进行测试。但是,如果您使用不同的 UTF-8 支持的区域设置,应该没问题。…

VM安装虚拟机及初始化操作

一、VM下载及暗转 虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,在实体计算机中能够完成的工作在虚拟机中都能够实现。VMware 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的…