初始模型:
配置中心先只做三件事:存配置、查/改配置、订阅配置变化。服务启动后先拉取一次配置,同时建立订阅;有人修改配置后,配置中心立即通知相关服务。
然后再逐步补能力:
- 实时通知:不希望服务频繁轮询 → SSE / WebSocket / gRPC Stream / 长轮询
- 版本号:连接可能断、通知可能漏 → 配置每次修改版本递增,重连后发现版本落后就重新拉
- 高可用:单节点配置中心挂了不能影响整个系统 → 多节点部署
- 一致性:多节点之间配置不能不一样 → 允许依赖组件就用 etcd;要求自研就用 Raft 做复制和多数派提交
- 持久化:进程重启后配置不能丢 → 落数据库或一致性存储,而不是只放内存
最后主线就很好记:
先能存、能改、能订阅 → 再解决实时通知 → 再解决漏通知 → 再解决单点 → 最后解决多节点一致性。