go语言并发实战——日志收集系统(七) etcd的介绍与简单使用

news2025/1/12 13:15:42

什么是etcd

etcd是基于Go语言开发的一个开源且高可用的分布式key-value存储系统,我们可以在上面实现配置共享与服务的注册与发现。
和它比较相似的还有我们之间所提到的Zookeeper以及consul.(注:后面我们学习微服务的时候etcd和consul会有广泛的使用)
etcd有以下几点特点:

  • 完全复制:集群中的每个节点都可以使用完整的存档
  • 高可用:Etcd可用于避免硬件的单点故障或网络问题
  • 一致性:每次读取都会返回跨多主机的最新写入
  • 简单:包含一个定义良好,面相用户的API(grpc)
  • 安全:实现了带有可选的客户端证书身份验证的自动化TLS
  • 可靠:使用raft算法实现了强一一致,高可用的服务存储目录

etcd应用场景

服务发现

服务发现是分布式系统中比较常见的问题之一,指的是在同一个分布式集群中的进程或服务如何找到彼此并建立连接,而从本质上来说,就是了解集群中是否有集群
在监听udp/tcp端口,并且通过名字就可以查找或连接。

配置中心

我们将一些配置信息发到etcd上进行集中管理,主要流程是应用在启动的时候主动从etcd中获取一次配置信息,同时我们在etcd上注册一个Watcher并等
待,每次配置更新时,etcd实时通知订阅者来获取最新配置消息。

分布式锁

因为etcd使用了raft算法来实现强一致性,所以某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁,而锁服务主要的使用方式有以下两种:

  • 保证获取锁的用户最后只有一个可以得到
  • 控制时序,所有想获得锁的用户都会被安排执行,但是获取锁的顺序是全局唯一的,这也决定了执行顺序

etcd结构图

在这里插入图片描述

  • Http Server:用于处理用户发送的API请求与其他etcd节点的同步与心跳信息请求
  • Raft:强一致散发的具体实现
  • Store:用于处理etcd支持的各种功能的事务,包括数据索引,节点状态变更,事件的助理与执行等等。
  • WAL:预写式日志,是etcd数据存储的方式。除了在内存存有数据的状态以及节点的索引外,都主要通过WAL做持久化存储,WAL中,所有数据在提交前都会事先
    记录日志,Snapshot是用于防止存储WAL中数据过多的状态快照,Entry表示存储具体日志。

etcd的下载与简单使用

etcd的下载地址

下载地址

简单使用

  • 打开服务端
    下载完后将压缩包解压,打开文件夹:
    在这里插入图片描述
    双击etcd.exe,打开服务端

  • 打开命令行,将客户端与服务端连接起来,输入键值对:
    在这里插入图片描述
    查询键值对:
    在这里插入图片描述

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

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

相关文章

napi —— linux 网卡驱动收包机制

linux 操作系统一般指 linux 内核。在 linux 上开发应用的时候,可以使用 linux 提供的系统调用。linux 内核管理着机器上的硬件资源:内存,磁盘,网卡等。开发应用的时候不能直接操作这些硬件,而只能通过系统调用来使用…

力扣HOT100 - 2. 两数相加

解题思路: 缺位的节点进行补零处理,如97323补充为973023 注意相加的进位问题 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode head null, tail null;int carry 0;while (l1 ! null || l2 ! null) {int n1 l…

Go语言并发赋值的安全性

struct并发赋值 type Test struct {X intY int }func main() {var g Testfor i : 0; i < 1000000; i {var wg sync.WaitGroup// 协程 1wg.Add(1)go func() {defer wg.Done()g Test{1, 2}}()// 协程 2wg.Add(1)go func() {defer wg.Done()g Test{3, 4}}()wg.Wait()// 赋值…

Photoshop 2024 25.4蓝猫版_支持参数滤波器和Ai神经滤镜

网盘下载 Photoshop 2024 (Beta) 蓝猫版v25.4.0(2426)全新功能&#xff1a;支持参数滤波器和AI神经滤镜。 最新的PS 25.4 Beta版新增了参数滤波器&#xff08;Parametric Filters&#xff09;功能&#xff0c;而正式版的PS 2024还没有这个功能&#xff0c;只有Beta版才有&…

基础SQL DQL语句

基础查询 select * from 表名; 查询所有字段 create table emp(id int comment 编号,workno varchar(10) comment 工号,name varchar(10) comment 姓名,gender char(1) comment 性别,age tinyint unsigned comment 年龄,idcard char(18) comment 身份证号,worka…

JRT1.5发布演示

JRT1.5演示视频 这是一次思想的解放&#xff0c;这是一次自我的挑战&#xff0c;这是一次涅槃重生。信创、安可、Linux、麒麟、UOS、King、PGSQL、ARM、Java围绕在我周围。JRT在DotNetCore的基础上完成了重生。对我而言&#xff0c;它不仅仅是一套框架那么简单&#xff1b;它更…

【MySQL】InnoDB存储引擎实现事务的原理及MVCC-实现原理

redo log 实现了事务的持久性 如果没有redo log&#xff0c;可能出现脏页现象&#xff0c;导致从缓冲池中更改后加载到硬盘的过程中出现脏页&#xff0c;无法保证持久性。 redo log会记录内存结构中缓冲区中的增删改变化&#xff0c;即时出现脏页&#xff0c;redo log把变化加…

使用keil uv5打开工程显示Device not include in Legacy Device Database怎么解决?

使用keil uv5打开工程显示Device not include in Legacy Device Database怎么解决&#xff1f; 案例&#xff1a;我从gigadevice下载了GD32F303的开发资料&#xff0c;解压后想打开里面的案例。 然后提示 开始我想到的是支持库没有装&#xff0c;就下载了&#xff1a;GigaDe…

Kotlin语法入门-访问和属性修饰符(5)

Kotlin语法入门-访问和属性修饰符(5) 文章目录 Kotlin语法入门-访问和属性修饰符(5)五、访问和属性修饰符1、kotlin修饰符2、internal3、默认修饰符4、open关键字开启继承并实现 五、访问和属性修饰符 1、kotlin修饰符 kotlin在常见的访问修饰符private&#xff0c;protected…

为什么代码签名证书都是“硬证书”?如何选择代码签名证书?

代码签名证书是一种给软件应用程序数字签名的数字证书&#xff0c;它可以确保软件代码的完整性和来源的可信性。代码签名证书可以分为OV代码签名证书和EV代码签名证书&#xff0c;自OV代码签名证书也升级为“硬证书”之后&#xff0c;代码签名证书全部采用“硬证书”。那么&…

Linux--内核移植(二)移植流程及驱动修改

本文来总结一下如何将 NXP 官方提供的 Linux 内核移植到正点原子的 I.MX6U-ALPHA 开发板上。 一、官方开发板内核测试 NXP 提供的 Linux 源码肯定是可以在自己的 I.MX6ULL EVK 开发板上运行下去的&#xff0c;所以我们肯定是以 I.MX6ULL EVK 开发板为参考&#xff0…

信息打点--公众号服务

微信公众号 获取微信公众号的途径https://weixin.sogou.com/ 微信公众号没有第三方服务 Github监控 人员&域名&邮箱 eg&#xff1a;xxx.cn password in:file https://gitee.com/ https://github.com/ https://www.huzhan.com/ 资源搜索 in:name test 仓库标题搜索含有…

sklearn【AUC-ROC】原理,以及绘制ROC曲线!

一、AUC-ROC 介绍 在分类任务中&#xff0c;特别是当数据集中的类别分布不平衡时&#xff0c;评估模型的性能变得尤为重要。AUC-ROC&#xff08;Area Under the Receiver Operating Characteristic Curve&#xff0c;受试者工作特征曲线下的面积&#xff09;是一种有效的评估指…

fawawf

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

Flume的安装及使用

Flume的安装及使用 文章目录 Flume的安装及使用Flume的安装1、上传至虚拟机&#xff0c;并解压2、重命名目录&#xff0c;并配置环境变量3、查看flume版本4、测试flume5、flume的使用 Flume的安装 1、上传至虚拟机&#xff0c;并解压 tar -zxvf apache-flume-1.9.0-bin.tar.g…

Datawhale ChatGPT基础科普

根据课程GitHub - datawhalechina/hugging-llm: HuggingLLM, Hugging Future. 摘写自己不懂得一些地方&#xff0c;具体可以再到以上项目地址 LM&#xff1a;这是ChatGPT的基石的基石。 Transformer&#xff1a;这是ChatGPT的基石&#xff0c;准确来说它的一部分是基石。 G…

UDS诊断故障码DTC

在汽车的各种零部件ECU设计中&#xff0c;开发人员会罗列出他能想到的这些零部件可能发生的所有故障。并且会为每一个故障分配一个代码、代号或数字。这个分配的数据就是DTC&#xff0c;DTC就是每个故障码的身份证号。 五位故障码属于OBD诊断协议。 五位故障码实际上只占用2个…

如何启用启用WordPress调试模式

最近我们的WordPress网站在访问时&#xff0c;经常出现打不开的现象&#xff0c;我们向主机提供商Hostease咨询后&#xff0c;他们提到这是由于WordPress的某个插件导致的问题&#xff0c;我们在将插件版本升级至最新后&#xff0c;这个问题就消失了。为了方便后续的检查&#…

【SpringBoot】-MyBatis详解+单表操作

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Framework】 主要内容&#xff1a;什么是MyBatis框架&#xff1f;MyBatis框架有什么用&#xff1f;MyBatis实现查询步骤详解。MyBatis实现单表的增删查改。MyBatis模糊查询&…

【智能算法】蜉蝣算法(MA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;K Zervoudakis等人受到自然界蜉蝣交配繁殖行为启发&#xff0c;提出了蜉蝣算法&#xff08;Mayfly Algorithm, MA&#xff09;。 2.算法原理 2.1算法思想 MA灵感来自蜉蝣交配…