分享

服务发现系统etcd

 技术的游戏 2023-05-23 发布于广东

etcd概述

一个分布式,可信赖的键值对存储,用于分布式系统的最重要数据。

etcd特点

  • 读取和写入数据使用标准的HTTP工具,比如curl

  • 将数据存储在分层组织的目录中,例如标准文件系统

  • 监听指定的键或者目录,并对值的变化做出相应的应对

  • 可以使用SSL客户端证书进行通讯

  • 基准测试可以在一秒内可以完成1000次写入

  • 可以通过TTL来设置键的过期时间

  • 使用Raft协议来保证一致性

安装使用

直接下载编译后的可执行文件进行安装

下载地址:https://github.com/etcd-io/etcd/releases

wget https://github.com/etcd-io/etcd/releases/download/v3.4.7/etcd-v3.4.7-linux-amd64.tar.gztar xzvf etcd-v3.4.7-linux-amd64.tar.gz && cd etcd-v3.4.7-linux-amd64./etcd --versio

使用apt安装包管理工具安装

apt install etcd-server

etcd命令行接口使用

设置一个key的value

curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello etcd" |jq .

改变一个key的value

curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello raft" |jq .

获取一个key的value

curl -s http://127.0.0.1:2379/v2/keys/message |jq .

删除一个key节点

curl -s http://127.0.0.1:2379/v2/keys/message -X DELETE |jq .

使用ttl设置key的生命周期,超过这个时间点该值没有被访问,就删除这个key

curl -s http://127.0.0.1:2379/v2/keys/foo -X PUT -d value=bar -d ttl=5 |jq .

应用场景一:服务发现(Service Discovery)

务发现要解决的也是分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。本质上来说,服务就是想要了解集群中是否有进程在监听udp或tcp端口,并且通过名字就可以查找和连接

应用场景二:消息发布与订阅

在分布式系统中,最适用的一种组件间通信方式就是消息发布与订阅。

即构建一个配置共享中心,数据提供者在这个配置中心发布消息,而消息使用者则订阅他们关心的主题,一旦主题有消息发布,就会实时通知订阅者。

通过这种方式可以做到分布式系统配置的集中式管理与动态更新。

应用场景三:分布式通知与协调

这里说到的分布式通知与协调,与消息发布和订阅有些相似。都用到了etcd中的Watcher机制,通过注册与异步通知机制,实现分布式环境下不同系统之间的通知与协调,从而对数据变更做到实时处理。


应用场景四:分布式锁

因为etcd使用Raft算法保持了数据的强一致性,某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁。锁服务有两种使用方式,一是保持独占,二是控制时序。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多