etcd实战课
唐聪
腾讯云资深工程师,etcd活跃贡献者
立即订阅
2304 人已学习
课程目录
已更新 26 讲 / 共 27 讲
0/3登录后,你可以任选3讲全文学习。
开篇词 (1讲)
开篇词|为什么你要学习etcd?
免费
基础篇 (11讲)
01 | etcd的前世今生:为什么Kubernetes使用etcd?
02 | 基础架构:etcd一个读请求是如何执行的?
03 | 基础架构:etcd一个写请求是如何执行的?
04 | Raft协议:etcd如何实现高可用、数据强一致的?
05 | 鉴权:如何保护你的数据安全?
06 | 租约:如何检测你的客户端存活?
07 | MVCC:如何实现多版本并发控制?
08 | Watch:如何高效获取数据变化通知?
09 | 事务:如何安全地实现多key操作?
10 | boltdb:如何持久化存储你的key-value数据?
11 | 压缩:如何回收旧版本数据?
实践篇 (13讲)
12 | 一致性:为什么基于Raft实现的etcd还会出现数据不一致?
13 | db大小:为什么etcd社区建议db大小不超过8G?
14 | 延时:为什么你的etcd请求会出现超时?
15 | 内存:为什么你的etcd内存占用那么高?
16 | 性能及稳定性(上):如何优化及扩展etcd性能?
17 | 性能及稳定性(下):如何优化及扩展etcd性能?
18 | 实战:如何基于Raft从0到1构建一个支持多存储引擎分布式KV服务?
19 | Kubernetes基础应用:创建一个Pod背后etcd发生了什么?
20 | Kubernetes高级应用:如何优化业务场景使etcd能支撑上万节点集群?
21 | 分布式锁:为什么基于etcd实现分布式锁比Redis锁更安全?
22 | 配置及服务发现:解析etcd在API Gateway开源项目中应用
23 | 选型:etcd/ZooKeeper/Consul等我们该如何选择?
24 | 运维:如何构建高可靠的etcd集群运维体系?
特别放送 (1讲)
特别放送 | 成员变更:为什么集群看起来正常,移除节点却会失败呢?
etcd实战课
15
15
1.0x
00:00/00:00
登录|注册

22 | 配置及服务发现:解析etcd在API Gateway开源项目中应用

唐聪 2021-03-12
你好,我是唐聪。
在软件开发的过程中,为了提升代码的灵活性和开发效率,我们大量使用配置去控制程序的运行行为。
从简单的数据库账号密码配置,到confd支持以 etcd 为后端存储的本地配置及模板管理,再到Apache APISIX等 API Gateway 项目使用 etcd 存储服务配置、路由信息等,最后到 Kubernetes 更实现了 Secret 和 ConfigMap 资源对象来解决配置管理的问题。
那么它们是如何实现实时、动态调整服务配置而不需要重启相关服务的呢?
今天我就和你聊聊 etcd 在配置和服务发现场景中的应用。我将以开源项目 Apache APISIX 为例,为你分析服务发现的原理,带你了解 etcd 的 key-value 模型,Watch 机制,鉴权机制,Lease 特性,事务特性在其中的应用。
希望通过这节课,让你了解 etcd 在配置系统和服务发现场景工作原理,帮助你选型适合业务场景的配置系统、服务发现组件。同时,在使用 Apache APISIX 等开源项目过程中遇到 etcd 相关问题时,你能独立排查、分析,并向社区提交 issue 和 PR 解决。

服务发现

首先和你聊聊服务发现,服务发现是指什么?为什么需要它呢?
为了搞懂这个问题,我首先和你分享下程序部署架构的演进。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《etcd实战课》,如需阅读全部文章,
请订阅文章所属专栏
立即订阅
登录 后留言

精选留言(5)

  • 那时刻
    老师的问题,我的个人看法是,采用etcd应该是可行的。

    1.高可靠。etcd基于raft的多副本可以满足。
    2.高性能。公司业务多,规模大,可以依据不同业务不同etcd的方法,分担etcd的写压力,以及数据存储量有限的问题。各自业务的etcd可以水平扩展。
    3.支持多业务、多版本管理、多种发布策略。etcd可以做到多版本管理,多发布策略的话,可以级联多个etcd的方法。

    另外,可能更加理想的存储架构方式是采用计算与存储分离的方法,计算部分处理读写以及扩展,存储部分处理多版本,多业务,多发布策略。

    作者回复: 嗯,整体想法不错,特别是考虑到数据容量问题,但是还需要考虑更多问题,比如性能问题,一个业务可能数万个client, 直接读etcd性能肯定扛不住的,其次是复杂度管理,比如一个业务分配一个etcd集群,那这过程是手动的还是自动的呢? 能否自动快速就接入一个新业务而无需相关运维操作呢? 或者有没有更好的存储方案。

    2021-03-12
    3
  • Geek_daf51a
    思考题很棒,我认为etcd并不合适,适合使用可平行扩容的分布式数据库如tidb,运维复杂度不更低点吗,容量也更大,还能支持各种key value大小配置
    2021-03-12
    3
  • 刁寿钧
    其实还期待讨论下APISIX搭配证书使用etcd的姿势,哈哈
    2021-03-15
  • Coder
    我认为使用支持分片的nosql数据库比较合适,比如redis集群版本,一主两副本、还是很可靠得
    2021-03-13
  • 云原生工程师
    我认为etcd不太合适,应该使用类似阿里云drds、腾讯云tdsql这样分布式数据库,不过数据推送机制就没了,需要轮询了,但是容量不需要担心,支持多业务就表中增加一个字段或独立的表
    2021-03-13
收起评论
5
返回
顶部