当前位置: 首页 > 面试题库 >

如何告诉客户端新Redis主服务器在哪里使用Sentinel

巫马承德
2023-03-14
问题内容

好的,我觉得我缺少一些关键的信息。

在本地,我有1个主Redis服务器和1个从Redis服务器运行在不同的端口上
http://redis.io/topics/sentinel

我也有3个哨兵,他们似乎彼此了解,并按预期工作。

现在,我有大量的Java代码指向我的主Redis服务器所在的127.0.0.1:6379。

如果我撤下主服务器,哨兵将按预期的方式将奴隶提升为主服务器,因此现在新主服务器已启动

127.0.0.1:6380

我的问题是我的代码如何知道这一点并自动切换?


问题答案:

您必须在其pubsub频道之一上订阅哨兵消息。您可以在发布的链接中看到哨兵将发布消息,例如

+odown <instance details> -- The specified instance is now in Objectively Down state.
-odown <instance details> -- The specified instance is no longer in Objectively Down state.
+failover-takedown <instance details> -- 25% of the configured failover timeout has elapsed, but this sentinel can't see any progress, and is the new leader. It starts to act as the new leader reconfiguring the remaining slaves to replicate with the new master.
+failover-triggered <instance details> -- We are starting a new failover as a the leader sentinel.

因此,当您在其中一个频道上看到一个哨兵发布时,您需要解析消息并让您的客户端做出相应的响应。Redis并不聪明-您必须使用客户端库来处理这些事情。

具体来说,最有用的渠道是

+odown
+failover-detected
+switch-master


 类似资料:
  • 我正在学习React/Apollo,当我引入bug时,我会在Chrome控制台中看到典型的红色异常。然而,在Apollo中,它不会像在React或其他框架中那样告诉我错误在代码中的何处开始。当使用在多个组件中发出查询的钩子时,查找问题源的速度非常慢。 你使用任何技巧来调试你的Apollo代码吗?或者你能以某种方式改善错误反馈吗? 以下是我看到的:

  • 问题内容: 我是实时应用程序开发的新手,正在尝试围绕那里的众多选择进行研究。我已经读了很多博客文章,笔记和文章,人们已经很好地分享了。然而,我的小脑子似乎还没有解决一个简单的问题。我以为其他许多人可能也有同样的问题,所以我不妨在此处签名并发布。开始: 我正在构建一个微型实时应用程序,它是异步聊天+另一个有趣的功能。我将选择归结为以下两个选项: 灯泡+ RabbitMQ Node.JS + Redi

  • 现在的问题是,这个Eureka客户端使用应用程序属性中指定为9005的https端口注册自己: 但我希望该客户端使用http端口9010注册自己。 当然,Eureka服务器本身在上运行,所有其他注册的服务也在localhost上,只进行http通话。

  • 我将创建一个身份验证服务器,它本身与一组不同的Oauth2.0服务器交互。Netty似乎是在这里实现网络部分的一个很好的候选者。但在开始之前,我需要澄清一些关于netty的细节,因为我是新手。例行程序如下: > < li> 服务器接受来自客户端的HTTPS连接。 然后,不关闭第一个连接,它通过HTTPS与远程OAuth2.0服务器建立另一个连接并获取数据 毕竟,服务器将结果发送回客户端,客户端应该