微服务系列(2)--注册中心

news2024/10/2 12:18:42

在博文:微服务系列(1)里我们提到过注册中心的概念,简单来说微服务注册中心是一个用于存储和管理微服务实例信息的组件,它提供了服务注册、服务发现、服务健康检查等功能,以确保微服务之间的稳定通信。在微服务架构中,各个服务实例将自己的信息注册到注册中心,同时从中心获取其他服务的实例信息以进行通信。当一个服务实例发生故障或下线时,注册中心会自动将其从服务列表中移除,从而确保其他服务实例获取到的服务列表始终是可用的。

举个栗子:

有两个服务,consumer和provider,各自都采用了多副本部署。一般来说,consumer在调用provider时,会访问provider服务所暴露出来的负载均衡ip,一旦负载均衡ip改变了,开发者就不得不采用一些手段修改客户端服务的请求地址。
但如果我们引入了注册中心这个中间层,provider服务在每一次启动时,都会向注册中心注册自己的信息(名称、地址、端口、标签等matedata),这样,consumer侧就无需在意provider侧的ip变化,只需要每次向注册中心“拿”就可以了。

微服务的注册中心目前主流的有以下四种:

  • Zookeeper
  • Eureka
  • Consul
  • Kubernetes

(由于本人工作和consul打交道更多,这里我们主要聊consul)

consul

consul的介绍

Consul是由HashiCorp公司推出的一款开源工具,是一个分布式的、高可用的、高性能的服务注册与发现系统,它提供了服务注册、服务发现、健康检查、KV存储等功能。

consul的工作原理

概述

  1. 节点类型
    Consul主要由以下两种节点组成:
    Server节点:Server节点负责存储服务实例的注册信息、健康检查状态等元数据。一个Consul集群通常包含3个或5个Server节点,以实现高可用性。Server节点之间通过Raft协议进行数据同步和选举Leader。
    Client节点:Client节点负责转发服务注册、查询等请求到Server节点,并缓存部分数据以提高查询性能。Client节点通常部署在每台微服务所在的主机上,以实现服务实例与Consul的紧密集成。
    Agent:在Consul集群的每一个节点,都会运行一个Agent进程,agent分为client和server两种模式。以后细说。

  2. 服务注册
    微服务实例可以通过HTTP API或者配置文件的方式将自己的信息注册到Consul中。注册信息包括服务名称、地址、端口、标签等元数据。Client节点会将服务实例的注册信息转发到Server节点,并存储在内部的数据结构中。

  3. 服务发现
    当一个服务实例需要与另一个服务进行通信时,它可以通过查询Consul获取目标服务的实例信息。

  4. 健康检查
    Consul支持的健康检查类型包括http,tcp,script。
    HTTP检查:注册中心定期向服务实例的指定HTTP端点发送请求,根据HTTP响应状态码判断服务实例是否健康;
    TCP检查:注册中心定期尝试与服务实例的指定TCP端口建立连接,根据连接是否成功判断服务实例是否健康;
    命令行检查:定期执行命名(比如:ls/ifconfig),退出状态码为0表示服务实例健康。

  5. 数据同步
    Consul使用Raft协议确保Server节点之间的数据同步。通过Raft协议,Consul可以在多个Server节点之间复制数据,实现强一致性。此外,Raft协议还用于选举Leader节点,以确保集群中只有一个节点负责处理写请求。

  6. Gossip协议
    Gossip协议是一种基于UDP的轻量级通信协议,consul使用Gossip协议实现集群节点之间的成员关系管理和事件传播。

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

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

相关文章

火爆全网,Jmeter接口自动化-参数化CSV实战详解(超级详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 一般来说&#xf…

MachineLearningWu_16/P72-P77_Diagnostic

x.1 导数,计算图,大型网络 计算图就是根据链式法则求取偏导,大型网络就是多层网络堆叠而成。 x.2 Diagnostic 在我们对深度学习有了一些认知后,最重要的就是模型的诊断,以带有L1正则化的线性回归为例,我…

【Linux】系统内核中System.map中字段含义解释

可以通过命令行过来初始化内容 cat System.map-4.18.0-193.el8.x86_64 | grep pci | grep initcall "T":表示该符号是一个全局函数,可以被其他模块或文件访问。 "D":表示该符号是一个全局数据对象,可以被其…

玩转轻叶H5:批量功能上线,落地页创建更高效

在营销领域,落地页作为营销过程的最后一环,不仅要准确传达产品或服务的独特卖点,也要提升互动的友好度,完成承接用户和转化用户的价值作用。 为了满足营销人员的落地页自建需求,我们推出了轻叶H5制作工具,帮…

CVPR 2023 | 4D雷达场景流的跨模态监督学习

注1:本文系“计算成像最新论文速览”系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‐Science & Applications, Optica 等)。 本次介绍的论文是:CVPR 2023 | 4D雷…

请求转发和请求重定向

目录 1. 定义层面 2. 请求方层面 3. 数据共享层面 4. 最终 url 层面 5. 代码实现层面 请求转发 请求重定向 在Java中,跳转网页的方式有两种,一种是请求转发,另一种是请求重定向,而实际上,这两种方式是有着明显…

最小生成树——prim算法

prim算法详解 prim算法简介prim算法步骤prim复杂度prim样例题目公路修建题目描述输入格式输出格式样例样例输入样例输出 提示 prim样例代码 prim算法简介 P r i m Prim Prim算法是一种用于解决最小生成树问题的贪心算法。最小生成树是一个连通图的生成树,它的所有边…

Vue+SpringBoot项目开发:登录页面美化,登录功能实现(三)

写在开始:一个搬砖程序员的随缘记录上一章写了从零开始VueSpringBoot后台管理系统:Vue3TypeScript项目搭建 VueTypeScript的前端项目已经搭建完成了 这一章的内容是引入element-plus和axios实现页面的布局和前后端数据的串联,实现一个登陆的功能&#x…

LVGL学习笔记 28 - 键盘keyboard

目录 1. 设置关联文本框 2. 设置模式 2.1 LV_KEYBOARD_MODE_TEXT_LOWER 2.2 LV_KEYBOARD_MODE_TEXT_UPPER 2.3 LV_KEYBOARD_MODE_SPECIAL 2.4 LV_KEYBOARD_MODE_NUMBER 2.5 LV_KEYBOARD_MODE_USER_1 ~ LV_KEYBOARD_MODE_USER_4 3. 使能弹窗模式 4. 更改按键布局 5. 事…

uniapp----分包

系列文章目录 uniapp-----封装接口 uniapp-----分包 目录 系列文章目录 uniapp-----封装接口 uniapp-----分包 前言 二、使用步骤 1.创建文件 ​编辑 2.min.js的修改 2.1 subPackages 代码如下(示例): 2.2 preloadRule 代码如下&am…

第一次PR经历

第一次PR测试地址:https://github.com/firstcontributions/first-contributions说明文档: https://github.com/firstcontributions/first-contributions/blob/main/translations/README.zh-cn.md

SAP MM学习笔记17-在库品目评价中的标准原价 S 和移动平均价格 V

SAP中有2种价格,标准原价 S 和 移动平均价格 V。 1,标准原价 S 2,移动平均价格 V 在MM03 会计1 Tab中,现行评价区域中,有原价管理区分。 比如下面这个物料 100-100, 它的原价管理区分是 S。 它的合计额…

在Vue中动态引入图片为什么要用require

静态资源和动态资源 静态资源 动态的添加src 动态资源 我们通过网络请求从后端获取的资源 动态的添加src会被当成静态资源 动态的添加src最终会被打包成: 动态的添加图片最会会被编译成一个静态的字符串,然后再浏览器运行中会去项目中查找这个资源…

ucharts-地图

以唐山地图为例&#xff1a; 先去找需要的区域入下图&#xff0c;会得到一堆的经纬度&#xff0c;我把他它放到静态文件里&#xff0c;需要的是它的features <template><view class"charts-box"><qiun-data-charts type"map":opts"o…

Redis中的数据类型

Redis中的数据类型 Redis存储的是key-value结构的数据&#xff0c;其中key是字符串类型&#xff0c;value有5种常用的数据类型: 字符串string哈希hash列表list集合set有序集合sorted set

【24择校指南】温州大学计算机考研考情分析

温州大学(C) 考研难度&#xff08;☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分数人数统计&#xff09;、院校概况、23专业目录、23复试详情、各科目以及各专业考情分析。 正文1349字&#xff0c;预计阅读&#xff1a;3分钟。 2023考情概况 温州…

Tomcat的一些配置问题(server.xml/catalina.sh)

在同一机器中运行多个Tomcat时&#xff0c;如果不修改server.xml的端口参数&#xff0c;会出现端口冲突使得Tomcat异常&#xff1b;Tomcat默认配置中&#xff0c;JAVA_OPTS不会设置太大&#xff0c;一般需要在catalina.sh中增加一行配置来加大该参数值。 目录 1.Server.xml配置…

监控Kubernetes 控制面组件的关键指标

控制面组件的监控&#xff0c;包括 APIServer、Controller-manager&#xff08;简称 CM&#xff09;、Scheduler、etcd 四个组件。 1、APIServer APIServer 的核心职能是 Kubernetes 集群的 API 总入口&#xff0c;Kube-Proxy、Kubelet、Controller-Manager、Scheduler 等都需…

【Java 回忆录】Java全栈开发笔记文档

这里能学到什么&#xff1f; 实战代码文档一比一记录实战问题和解决方案涉及前端、后端、服务器、运维、测试各方面通过各方面的文档与代码&#xff0c;封装一套低代码开发平台直接开腾讯会议&#xff0c;实实在线一起分享技术问题核心以 Spring Boot 作为基础框架进行整合后期…

怎么学习AJAX相关技术? - 易智编译EaseEditing

学习AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;相关技术可以让你实现网页的异步数据交互&#xff0c;提升用户体验。以下是一些学习AJAX技术的步骤和资源&#xff1a; HTML、CSS和JavaScript基础&#xff1a; 首先&#xff0c;确保你已经掌握了基本的HTML…