Consul学习笔记之-初识Consul
文章目录
- 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的基本架构图
上图是用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就能查到。如此保证了可用性但牺牲了一致性。
相关文章:

Consul学习笔记之-初识Consul
文章目录 1. What is consul?2. Consul能干什么3. Consul的架构3.1 概念 4. Consul VS Eureka4.1 CAP4.2 对比 1. What is consul? 根据官方文档的定义: HashiCorp Consul is a service networking solution that enables teams to manage secure network connec…...

python实现读取并显示图片的两种方法
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片。 本人偏爱 matpoltlib,因为它的语法更像 matlab。 👇 👇 👇 更多精彩机密、教程&…...
Spring Boot 整合 MyBatis
🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,…...

2023高教社杯数学建模A题B题C题D题E题思路模型 国赛建模思路分享
文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...

手机木马远程控制复现
目录 目录 前言 系列文章列表 渗透测试基础之永恒之蓝漏洞复现http://t.csdn.cn/EsMu2 思维导图 1,实验涉及复现环境 2,Android模拟器环境配置 2.1,首先从官网上下载雷电模拟器 2.2,安装雷电模拟器 2.3, 对模拟器网络进行配置 2.3.1,为什么要进行配置…...

linux 安装Docker
# 1、yum 包更新到最新 yum update # 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 yum-config-manager --add-repo h…...
Java中的值传递与引用传递 含面试题
面试题分享 点我直达 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 史上最全文档…...
SQL中CONVERT()函数用法详解
SQL中CONVERT函数格式: CONVERT(data_type,expression[,style]) 参数说明: expression 是任何有效的 Microsoft SQL Server™ 表达式。。 data_type 目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。 length nchar、nva…...

借助各大模型的优点生成原创视频(真人人声)Plus
【技术背景】 众所周知,组成视频的3大元素,即文本语音图片。接着小编逐一介绍生成原创视频的过程。 【文本生成】 天工AI搜索(thttp://iangong.cn) 直接手机短信验证就可以使用,该大模型已经接入互联网,…...

技能大赛物联网赛项参赛软件建设方案
一、概述 信息与通信技术的目标已经从任何时间、任何地点连接任何人,发展到连接任何物品的阶段,而万物的连接就形成了物联网。物联网的主要特征是通过条码识读设备、射频识别 (RFID)装置、红外感应器、全球定位系统、激光扫描器等信息传感设备…...
蓝桥杯官网练习题(凯撒加密)
题目描述 给定一个单词,请使用凯撒密码将这个单词加密。 凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移 3 位后被替换成密文。即 a 变为 d,b 变为 e,⋯⋯,w 变为z,x 变为 a&#x…...
JavaScript 数组中常用的方法
添加 push:数组末尾添加unshift:数组首位添加splice(1, 0, ‘新增内容’):再指定位置插入,第二参数为0,表示新增;大于0,表示修改 删除 pop:删除末尾shift:删除首位slice(…...

YOLOV7改进-添加基于注意力机制的目标检测头(DYHEAD)
DYHEAD 复制到这: 1、models下新建文件 2、yolo.py中import一下 3、改IDetect这里 4、论文中说6的效果最好,但参数量不少,做一下工作量 5、在进入IDetect之前,会对RepConv做卷积 5、因为DYHEAD需要三个层输入的特征层一致&am…...

爬虫爬取mp3文件例子
相信训练模型时数据集的获取也是一个很头疼的事情,搞cv领域的可以扛着摄像头架起三脚架拍摄获取(以前干过),但是如果是nlp领域的呢,特别是chatgpt等大模型出来后对这类文本等数据的需求更大,如果没有现成的…...
说说什么是间隙锁
分析&回答 间隙锁为了解决RR(可重复读)级别下当前读导致的幻读问题,锁的对象是索引叶子节点的next指针。 快照读 在RR隔离级别下:快照读有可能读到数据的历史版本,也有可能读到数据的当前版本。所以快照读无需用…...
python小题库(三)
大家好呀,今天继续更新python小题库。 题11:实现学生成绩排序 # 问题:实现学生成绩排序 # 如学生的成绩是字典形式 students [{"sno": 101, "sname": "小张", "sgrade": 88},{"sno": 10…...
【前端设计模式】之单例模式
在前端开发中,单例模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供全局访问点。在实现单例模式时,有一些最佳实践和高级技巧可以帮助我们编写更优雅和可维护的代码。 1. 使用闭包 使用闭包是实现单例模式的一种常见…...
Linux——(第六章)常用指令(一)
目录 一、帮助指令 1.man获取帮助信息 2.help指令 3.常用快捷键 二、文件和目录相关指令 1.pwd 指令 2.ls 指令 3.cd 指令 4.mkdir 指令 5.rmdir指令 6.touch指令 7.cp 指令 8.rm 指令 9.mv 指令 10.cat 指令 11.more 指令 12.less 指令 13.echo 指令 14.he…...

第19章_瑞萨MCU零基础入门系列教程之RTC
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...

6、Spring之依赖注入源码解析(上)
依赖注入底层原理流程图: Spring中Bean的依赖注入原理| ProcessOn免费在线作图,在线流程图,在线思维导图 Spring中到底有几种依赖注入的方式? 首先分两种: 手动注入自动注入手动注入 在XML中定义Bean时,就是手动注入,因为是程序员手动给某个属性指定了值。 <bean n…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...