我们目前使用redis(AWS弹性缓存)提供服务,该服务具有几个副本节点,并且已禁用集群模式。在这种情况下,我们如何实现从副本读取和读/写主节点?
golang中是否有任何好的库?我可以找到几个库,但它们都是为了启用集群模式。
我们所做的是使用route53创建一个指向“主要端点”的“写入”URL,如果出现问题,它将故障转移到当前主节点。这样您就不必在应用中更新它了。然后将所有节点放在带有循环的“读取”URL下。
除非您正在进行大量读取和不经常写入,否则通常不需要访问读取(来自副本)并在同一应用程序中写入。然后,您可以在代码中维护两个redis客户端实例。不优雅,但有效。
使用加权循环,您可以根据需要调低当前主数据的读数。只需要知道故障转移事件何时发生更新。
将写入URL上的TTL设置为较低的值,例如1分钟或更短。