资料介绍
zetcd是一款架在ZooKeeper与etcd之间的代理程序,它可以将ZooKeeper客户端的请求消息转换成etcd要求的格式,并转发给etcd,然后将响应消息转换后返回给客户端。本文介绍了zetcd的使用方法、工作原理以及性能评测。以下是译文。
分布式系统需要依赖分布式一致性来协调工作。通常情况下,提供分布式一致性担保信息的系统会接收到按顺序投递过来的消息,这样就不会产生脑裂冲突(split-brain conflicts,译者注:本来一个大脑的两个半球是互相配合的,但是现在分裂变成了两个独立的大脑,并且都认为对方已死。此时,双方都会去尝试接管集群资源,这样就可能会造成冲突,产生严重的后果)。这类系统的用途是显而易见的。像chubby、ZooKeeper、etcd、consul这些项目,尽管它们的原理和协议各不相同,但它们都侧重于为分布式一致性提供类似的基本键值原语。为了让etcd成为分布式系统中最具吸引力的项目,etcd团队开发了一款新的代理服务器程序:zetcd,使用这款软件,etcd集群无需修改即可处理ZooKeeper客户端的请求。
ZooKeeper是这方面第一个流行起来的开源软件,它是很多分布式系统的首选后端软件。这些系统理论上也可以搭配etcd一起运行,但是由于历史原因,实际上根本实现不了。etcd集群不支持ZooKeeper,因为etcd的数据模型和客户端协议与ZooKeeper应用程序不兼容。ZooKeeper应用程序也不是原生的支持etcd;如果系统已经在稳定运行了,那么没有必要去为了适应新的后端软件而让系统更加复杂。幸运的是,etcd的第三版API相当的牛逼,它可以通过一个普通的代理来模拟ZooKeeper客户端的数据模型,这就是zetcd,一个由etcd团队开发的新的开源项目。今天,zetcd发布了第一个测试版,v0.0.1版,这为在生产系统中管理和部署zetcd打下了基础。
zetcd代理位于etcd集群的前端,它提供了一个模拟ZooKeeper客户端的端口,让原版的ZooKeeper应用程序可以运行在etcd上。其基本原理是,zetcd将ZooKeeper客户端的请求转换为适合于etcd数据模型和API要求的消息,将发送给etcd,然后将etcd的响应消息转换后返回给客户端。该代理的性能可以与ZooKeeper相媲美,利用etcd的特性和工具可以简化ZooKeeper集群管理。下文将展示zetcd的使用方法和工作原理,并分享一些性能评测数据。
zetcd入门
让zetcd运行起来需要三样东西:一个Go编译器、一个能够获取源代码的互联网连接,以及一个可以运行etcd的系统。下面的示例展示了如何用源代码编译生成zetcd,并对它运行ZooKeeper命令。当我们需要部署正式环境的时候,我们并不建议从开发分支来获取源代码并编译etcd和zetcd,但是如果只是试用一下的话,这是最简单的方法。
首先,获取源代码并编译etcd和zetcd的二进制文件:
接下来,运行etcd,并将zetcd连接到etcd的客户端接入点:
试用zetcd,启动查看并创建一个key:
这个例子展示了在一个独立的etcd实例上部署了一个zetcd代理层:
一个简单的zetcd服务器拓扑
那么这个zetcd代理层是做什么的呢?
ZooKeeper接入etcd3
在底层,zetcd将ZooKeeper的数据模型转换为适合的etcd API的数据。对于key的查找,zetcd将ZooKeeper的分级目录转换为etcd的普通二进制keyspace。对于元数据的管理,zetcd利用事务内存安全地和原子地将ZooKeeper znode信息更新到etcd后端。
ZooKeeper是按目录列出所有的key(getChildren),而etcd是按区间(Range)列出所有的key。下图说明了zetcd是如何在etcd中对key进行编码以便可以快速地列出目录中的key。所有zetcd的key都有一个包括目录深度的前缀(例如,“/”和“/abc/”分别具有0和1的深度)。要列出一个目录,zetcd会给出前缀范围,这个前缀以目录的深度和路径来匹配相应的key(例如,前缀范围[“/zk/key/002/abc/”,“/zk/key/002/abc0”]用于列出/abc/)。这里的目录深度是为了限制目录本身被当作key。如果zetcd将路径当作是没有深度的前缀,那么目录下的所有key,而不是只有其直接子节点,会由etcd返回并被代理抛弃。
- 电路常识性入门概念分享 0次下载
- 《Python编程入门》.pdf 0次下载
- MATLAB使用教程-初步入门大全.PPT 0次下载
- Wireshark从入门到精通之网络抓包协议分析必备 9次下载
- 《51单片机C语言编程入门》(中科大编著) 0次下载
- GitHub入门与实践 0次下载
- Verilog HDL入门教程.pdf 108次下载
- 电子电路从入门到精通电子版下载 0次下载
- Kicad5.1.5中文入门教程电子版下载 0次下载
- 松下PLC入门基础培训课件下载 105次下载
- MATLAB入门教程电子版下载 0次下载
- 深度学习入门:基于Python的理论与实现电子书 30次下载
- Simplify3D-4.0.1汉化版入门教程 0次下载
- PSIM仿真入门学习-课件下载 184次下载
- Linux操作系统下C语言编程入门.pdf 92次下载
- 讲解MATLAB/Simulink HDL使用入门 539次阅读
- 入门级微波电路(MMIC)的笔记-S 参数 361次阅读
- Vitis IDE Git集成快速入门 569次阅读
- 电子工程师必知的几个入门级电路 1842次阅读
- Python的Anaconda入门指南 2304次阅读
- dfrobotmicro:bit造物粒子入门套件简介 3687次阅读
- fireflyFace-RK3399主板Android入门 1244次阅读
- 51、stm32单片机入门的一些经验 3028次阅读
- 什么是DCS系统?DCS系统基础知识入门 4.3w次阅读
- PLC入门需要多久_PLC入门需要看哪些书籍 1.6w次阅读
- c语言入门书籍推荐 2.6w次阅读
- java入门经典书籍推荐 1.8w次阅读
- MySQL 超级入门教程以及MySQL 资源大全的分享 6744次阅读
- 黑客Dos命令大全_入门dos命令教程 3.2w次阅读
- FPGA快速入门经验谈(part2) 956次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1491次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 95次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 11次下载 | 免费
- 6100W短波放大电路图
- 0.05 MB | 4次下载 | 3 积分
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB | 4次下载 | 免费
- 8基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537793次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多