LinkedIn重新架构服务发现:在大规模环境中用Kafka和xDS替代Zookeeper

LinkedIn重新架构服务发现:在大规模环境中用Kafka和xDS替代Zookeeper

💡 原文英文,约500词,阅读约需2分钟。
📝

内容提要

LinkedIn升级了基于ZooKeeper的服务发现平台,采用Apache Kafka和xDS协议,实现可扩展架构。新系统支持最终一致性,允许非Java客户端参与。通过“双模式”策略,团队实现了零停机迁移,解决了ZooKeeper的性能瓶颈,显著提升了数据传播速度和系统可扩展性。

🎯

关键要点

  • LinkedIn升级了基于ZooKeeper的服务发现平台,以应对微服务数量激增带来的可扩展性需求。

  • 新系统采用Apache Kafka进行写入,使用xDS协议进行读取,实现最终一致性,支持非Java客户端。

  • 团队实施了“双模式”策略,实现零停机迁移,确保系统稳定性。

  • 旧系统存在性能瓶颈,强一致性导致高延迟和会话超时,预计在2025年达到最大容量。

  • 新架构从强一致性转向最终一致性,分离写入路径和读取路径,提升性能和可用性。

  • 服务发现观察者通过Kafka事件更新内存缓存,并通过xDS协议推送更新,支持多种编程语言的客户端。

  • 升级后,单个观察者实例可维护4万客户端流,每秒处理1万次更新。

  • 迁移过程中未中断每日数十亿请求,实施了双重读取和写入机制。

  • 数据传播延迟显著改善,系统现在支持每个数据中心数十万应用实例,具备水平扩展能力。

延伸问答

LinkedIn为什么要升级其服务发现平台?

LinkedIn升级服务发现平台是为了应对微服务数量激增带来的可扩展性需求,解决旧系统的性能瓶颈。

新系统是如何实现最终一致性的?

新系统通过使用Apache Kafka进行写入和xDS协议进行读取,实现了最终一致性,支持非Java客户端。

LinkedIn在迁移过程中如何确保零停机?

团队实施了“双模式”策略,允许同时使用ZooKeeper和新Observer进行读写,确保迁移过程中不影响日常请求。

新架构相比旧系统有哪些性能提升?

新架构将强一致性转向最终一致性,显著降低了数据传播延迟,支持每个数据中心数十万应用实例。

单个观察者实例的处理能力如何?

单个观察者实例可以维护4万客户端流,每秒处理1万次更新。

新系统如何支持多种编程语言的客户端?

新系统通过xDS协议的使用,使得LinkedIn能够部署多种编程语言的客户端,超越了Java的限制。

➡️

继续阅读