Consul学习笔记之-初识Consul

news2024/10/2 10:39:13

文章目录

  • 1. What is consul?
  • 2. Consul能干什么
  • 3. Consul的架构
    • 3.1 概念
  • 4. Consul VS Eureka
    • 4.1 CAP
    • 4.2 对比

1. What is consul?

根据官方文档的定义:

HashiCorp Consul is a service networking solution that enables teams to manage secure network connectivity between services and across on-prem and multi-cloud environments and runtimes. Consul offers service discovery, service mesh, traffic management, and automated updates to network infrastructure device. You can use these features individually or together in a single Consul deployment.

HashiCorp Consul 是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接。Consul 提供服务发现、服务网格、流量管理和网络基础设施设备的自动更新。您可以在单个 Consul 部署中单独或一起使用这些功能。

2. Consul能干什么

  • 服务发现:Consul的客户端可以注册一个服务,其他客户端可以使用Consul来发现特定服务的提供者。使用DNS或HTTP,应用程序可以很容易地找到他们所依赖的服务。
  • 健康检查 : Consul客户端可以提供任何数量的健康检查,要么与给定的服务相关联(如: “webserver是否返回200 OK”),要么与本地节点相关联(如: “内存利用率是否低于90%”)。这些信息可以运维人员用来监控集群的健康状况,并被服务发现组件来路由流量(比如: 仅路由到健康节点)
  • KV存储 : 应用程序可以利用Consul的层级K/V存储来实现任何目的,包括动态配置、功能标记、协调、领导者选举等。Consul提供了HTTP API,使其非常简单以用。
  • 安全服务通信: Consul可以为服务生成和分发TLS( 传输层安全性协议)证书,以建立相互的TLS连接。可以使用Intention来定义哪些服务被允许进行通信。服务隔离可以通过可以实时更改Intention策略轻松管理,而不是使用复杂的网络拓扑结构和静态防火墙规则。
  • 多数据中心: Consul支持开箱即用的多数据中心。这意味着Consul的用户不必担心建立额外的抽象层来发展到多个区域。

3. Consul的架构

Consul提供了一个控制平面,用来让你注册,接入和保护你部署在网络的中应用安全。这个控制平面是网络基础设施的一部分,它维护一个中心注册表来追踪各个服务及其对应的IP地址。
当使用Consul的服务网格能力时,Consul动态的在请求路径中配置sidecar和网关代理,这样让你授权服务到服务之间的连接,路由请求到健康的服务实例上,并且强制使用mTls加密却不需要你更改你的代码。这个确保服务之间的通信是高性能且可靠的。

在这里插入图片描述
上图是Consul的基本架构图
service mesh architecture
上图是用Consul实现service mesh的架构图

3.1 概念

  • node:节点,运行 consul 服务,可以指定名字和 ID
  • agent:consul 中的核心程序,以守护进程的方式在各个节点运行,有 client 和 server 启动模式。每个 agent 维护一套服务和注册发现以及健康信息。
  • client:agent 以 client 模式启动的节点。不保存数据,直接把请求向 server 转发。
  • server:agent 以 server 模式启动的节点,负责 Raft、维护会员信息、注册服务、健康检查等功能。
  • server leader:服务器 server 的领导者。一旦 leader 宕机,会从剩下的 server 中选举一个新的 leader。

4. Consul VS Eureka

4.1 CAP

CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

  • 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

  • 可用性(A):保证每个请求不管成功或者失败都有响应。

  • 分区容忍性(P):系统中任意信息的丢失或失败不会影响系统的继续运作。

CAP原则的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。如果在某个分布式系统中数据无副本, 那么系统必然满足强一致性条件, 因为只有独一数据,不会出现数据不一致的情况,此时C和P两要素具备,但是如果系统发生了网络分区状况或者宕机,必然导致某些数据不可以访问,此时可用性条件就不能被满足,即在此情况下获得了CP系统,但是CAP不可同时满足。

4.2 对比

consul提供了一致性和分区容忍性(CP),服务注册相比Eureka会稍慢一些。因为Consul的raft协议要求必须过半数的节点都写入成功才认为注册成功,Leader挂掉时,重新选举期间整个consul不可用。保证了强一致性但牺牲了可用性。

eureka保障了高可用性和最终一致性(AC),优点是注册速度很快,不管同步到其他节点时是否有问题,只要服务注册到主节点既代表注册成功。当数据出现不一致时,虽然A, B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息时如果请求A查不到,但请求B就能查到。如此保证了可用性但牺牲了一致性。

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

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

相关文章

无涯教程-JavaScript - CONVERT函数

描述 CONVERT功能将数字从一种测量系统转换为另一种。 如,CONVERT可以将以英里为单位的距离表转换为以公里为单位的距离表。 语法 CONVERT (number,from_unit,to_unit)争论 Argument描述Required/OptionalNumberThe value in from_units to convert.RequiredFrom_unitThe …

无涯教程-JavaScript - WEEKNUM函数

描述 WEEKNUM函数返回特定日期的星期数。数字代表一年中数字所在的星期。 有两个系统用于此功能- 系统1 -包含1月1日的一周是一年的第一周,并编号为第1周。 系统2 -包含一年中第一个星期四的那一周是一年中的第一周,并编号为第1周。此系统是ISO 8601中指定的方法,这就是欧洲…

云原生Kubernetes:Yaml文件编写

目录 一、理论 1.Kubernetes与yaml文件 二、实验 1.Kubernetes与yaml文件 三、问题 1.kubectl create 和 kubectl apply区别 四、总结 一、理论 1.​​​​​​​Kubernetes与yaml文件 (1)Kubernetes支持管理资源对象的文件格式 Kubernetes支持…

RabbitMQ:work结构

> 只需要在消费者端,添加Qos能力以及更改为手动ack即可让消费者,根据自己的能力去消费指定的消息,而不是默认情况下由RabbitMQ平均分配了,生产者不变,正常发布消息到默认的exchange > 消费者指定Qoa和手动ack …

图床项目详解

文章目录 一、图床项目介绍二、图床项目架构三、图床功能实现3.1 注册功能3.2 登录功能3.3 用户文件列表3.4 上传文件3.5 上传文件之秒传3.6 获取共享文件列表或下载榜3.7 分享/ 删除文件/ 更新下载数3.8 取消分享/ 转存/ 更新下载计数3.9 图床分享图片 一、图床项目介绍 实现…

感应型静电消除器的组成和工作原理

感应型静电消除器是一种常用于消除物体表面静电的设备。它通过感测周围环境的静电电荷变化,并采取相应的措施来中和或消除这些电荷,以防止静电造成的问题。 感测型静电消除器通常由以下几个关键组件组成: 1. 静电感测器:用于检测…

CUDA相关知识科普

显卡 显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。就像电脑联网需要网卡,主机里的数据要显示在屏幕上就需要显卡。因此,显卡是电脑进…

ChatGPT是如何辅助高效撰写论文及使用ChatGPT注意事项

ChatGPT发布近1年,各大高校对它的态度也发生了极大转变,今年3月发布ChatGPT禁令的牛剑等世界顶级名校也在近期解除了ChatGPT禁令,发布了生成式人工智能使用指南。 ChatGPT一定程度上可以解放科研人员的劳动力,与其直接禁止不如教…

【深入理解Linux内核锁】六、信号量

我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1、信号量介绍2、信号量的API3、API实现3.1 semaphore3.2 sema_init3.3 down…

口袋参谋:高流量权重标题,都是利用了这套工具玩法!

​近来无事,与几位电商大佬们一起喝茶聊天。在谈到提升宝贝流量最直接的方式,大家异口同声的说到:“搜索流量!” 根据我近十年的电商经验,一个好的标题,不仅要契合宝贝核心关键词,同时也要契合…

网络技术十:交换机端口安全技术

交换机端口安全技术 802.1X 定义 起源于WLAN协议802.11,解决局域网终端的接入认证问题 认证方式 本地认证:由设备端内置本地服务器对客户端进行认证 远程集中认证:由远程的认证服务器对客户端进行认证 端口接入控制方式 基于端口认证…

配电房智能化系统

配电房智能化系统依托电易云-智慧电力物联网,综合利用现代先进技术,通过对配电房的监控、数据采集、自动控制和管理,实现对配电房的安全、可靠、高效、节能和环保监控的综合管理系统。 配电房智能化系统功能: 1.运行状态实时监测…

【C++漂流记】简易理解引用的基本语法和使用及其注意实现

引用是C中的一种数据类型,它允许我们使用一个已经存在的变量来创建一个新的名称或别名,以便可以通过这个别名来访问和修改原始变量的值。引用的本质是一个别名或者一个变量的别名。 文章目录 基本语法引用的注意事项引用做函数参数引用的本质常量引用 基…

04 卷积神经网络搭建

一、数据集 MNIST数据集是从NIST的两个手写数字数据集:Special Database 3 和Special Database 1中分别取出部分图像,并经过一些图像处理后得到的[参考]。 MNIST数据集共有70000张图像,其中训练集60000张,测试集10000张。所有图…

vue表格不显示列号123456

我在网上找了半天,都是如何添加列号123456的,没有找到不显示列号的参考,现在把这个解决了,特此记录一下。 没有加右边的就会显示,加上右边的就隐藏了

python+django协同过滤算法的音乐推荐系统研究vue

本系统提供给管理员对用户、音乐分类、歌手、热门歌曲等诸多功能进行管理。本系统对于用户输入的任何信息都进行了一定的验证,为管理员操作提高了效率,也使其数据安全性得到了保障。本音乐推荐研究以Django作为框架,B/S模式以及MySql作为后台…

QtCreator CMakeLists.txt添加模块(Modules)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql) target_link_libraries(HookeViscometer PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Sql) 蓝色部分为添加的Q…

13分钟聊聊并发包中常用同步组件并手写一个自定义同步组件

本篇文章通过AQS自己来实现一个同步组件,并从源码级别聊聊JUC并发包中的常用同步组件 本篇文章需要的前置知识就是AQS,阅读本篇文章大概需要13分钟 自定义同步组件 为了更容易理解其他同步组件,我们先来使用AQS自己来实现一个常用的可重入…

(数字图像处理MATLAB+Python)第十二章图像编码-第三、四节:有损编码和JPEG

文章目录 一:有损编码(1)预测编码A:概述B:DM编码C:最优预测器 (2)变换编码A:概述B:实现变换编码的主要问题 二:JPEG 一:有损编码 &am…

Kafka3.0.0版本——消费者(消费者总体工作流程图解)

一、消费者总体工作流程图解 角色划分:生产者、zookeeper、kafka集群、消费者、消费者组。如下图所示: 生产者发送消息给leader,followerr主动从leader同步数据,一个消费者可以消费某一个分区数据或者一个消费者可以消费多个分区数据。如下图…