阿小信大人的头像
做你说过的,说你能做的 阿小信大人

2019年记录的etcd相关调研2021-01-20 22:03

etcd 是什么?

键值存储仓库,用于配置共享和服务发现。

A highly-available key value store for shared configuration and service discovery.

使用 etcd 的场景默认处理的数据都是控制数据,对于应用数据,只推荐数据量很小,但是更新访问频繁的情况。

为什么不用zookeeper?

etcd 实现的这些功能, ZooKeeper都能实现。

ZooKeeper缺点:

  1. 复杂。ZooKeeper的部署维护复杂
  2. Java 编写。引入大量的依赖
  3. 发展缓慢

etcd优点:

  1. 简单。使用 Go 语言编写部署简单;使用 HTTP 作为接口使用简单;使用 Raft 算法保证强一致性让用户易于理解。
  2. 数据持久化。etcd 默认数据一更新就进行持久化。
  3. 安全。etcd 支持 SSL 客户端安全认证。

etcd gateway and proxy

https://github.com/etcd-io/etcd/issues/7439

v3的gateway主要用于远程客户端安装使所有请求都从他本地的gateway连接到客户端,这样一个机器只有一个gateway和服务端的集群进行交互

proxy才是服务端跑的服务,v2用的rest http方式proxy,v3使用的rpc方式grpcproxy

对于用户数增长连接变多的问题可以考虑搭建proxy集群收敛连接数

性能

watch的连接数量要受服务端机器内存的限制

https://etcd.io/docs/v3.4.0/benchmarks/etcd-3-watch-memory-benchmark/

https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/performance.md

proxy的好处是可以把多个client的watch合并为一个watch,限制是合并后的watch可能有延迟会和直连的结果不同步,另一个好处是可以合并多个客户端的租约为一个

安全

鉴权方式是基于User和Role

只读、只写、可读写三种权限,权限即对指定目录或key的读写权限。

安全问题有针对用户名密码的鉴权机制和TLS

v3的鉴权是针对连接的鉴权 rpc长连接; v2是针对rest请求的鉴权,每次请求都需要验证 性能上优先考虑使用v3

如果需要更加复杂的权限控制可能需要自己写一个proxy或者改官方提供的proxy

links

etcd官方文档 https://etcd.io/docs/v3.4.0/ https://github.com/etcd-io/etcd/tree/master/Documentation

中文版 https://doczhcn.gitbook.io/etcd/index

etcd:从应用场景到实现原理的全方位解读 https://www.infoq.cn/article/etcd-interpretation-application-scenario-implement-principle

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#数据库#  
分享到:
阅读[350]

下一篇:已经是最后一篇

你可能也感兴趣的文章推荐

本文最近访客

网友106.*.*.121[火星]2021-05-07 00:12
网友54.*.*.161[法国]2021-05-07 00:05
网友95.*.*.244[火星]2021-05-06 23:21
网友11.*.*.214[火星]2021-05-06 23:01