如何在不重写代码的情况下为数百个不同语言的微服务配置Redis Sentinel?
我们的基础设施包含数百个用各种语言(Go、Python、Java、PHP 等)编写的微服务。其中一些面临与 Redis Sentinel 集成的问题,因为使用的模块要么过时,要么对 Sentinel 的支持很差。
重写代码具有挑战性,因为:
是否有一种可靠的解决方案,具有最小的延迟,可以在不进行重大代码更改的情况下确保高可用性?
我们尝试使用 HAProxy 来处理 Redis Sentinel 故障转移,但遇到了严重的延迟问题,这严重影响了性能。我们正在寻找一种更有效的解决方案,最大限度地减少延迟并且不需要重写应用程序代码。
您可能会受益于根本不需要将 Sentinel 集成到应用程序代码中的解决方案。看一下 Redis Sentinel Gateway。该解决方案拦截 Redis Sentinel 管理,并通过单个入口点自动更新 Kubernetes 中的主节点。即使这些库不能正确支持 Sentinel,您也不需要修改微服务代码。
优点:
• Minimal latency: Redis Sentinel Gateway instantly updates master information, ensuring quick failovers.
• No refactoring required: You can keep your microservices’ code unchanged while handling Sentinel outside the application.
• Kubernetes integration: The gateway automatically updates Kubernetes Endpoints, taking care of the failover process for you.
如果您的堆栈在 Kubernetes 上运行,则此方法是最佳选择,因为所有应用程序都可以通过单个入口点工作,从而无需在每个微服务中集成 Sentinel 支持。