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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: go语言并发实战——日志收集系统(七) etcd的介绍与简单使用

什么是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,打开服务端
  • 打开命令行,将客户端与服务端连接起来,输入键值对:

    查询键值对:


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
2月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
106 2
|
2月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
198 1
|
4月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
394 0
|
4月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
259 0
|
4月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
229 0
|
4月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
331 0
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
3745 31
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
7月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
823 54
|
12月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
363 9