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