【问题标题】:Can I use twemproxy for load balancing by redis queue size?我可以使用 twemproxy 通过 redis 队列大小进行负载平衡吗?
【发布时间】:2016-08-19 22:52:44
【问题描述】:

我可以使用twemproxy 作为redis 实例池的负载均衡器吗,根据redis 队列的大小(每个实例的键数量)?如果 twemproxy 达到其数据库中预先配置的最大密钥数量,是否能够从上游的一个 redis 实例关闭?

如果是这样,我该怎么做(我对 redis 和其他东西很陌生,所以我可能没有从文档中得到这个)?

提前致谢。

【问题讨论】:

    标签: redis load-balancing autoscaling twemproxy


    【解决方案1】:

    不,不可能对每个实例的确切键数或队列大小进行负载平衡。分片基于基于键名的计算。 (参见hashhash_tagdistribution 设置)通常你应该得到一个相当均匀的分布,但如果运气不好,一些分片可能会比其他分片获得更多的密钥。

    【讨论】:

    • 谢谢你,伙计,我明白你的意思了。就我而言,有一个 java 应用程序,它为每个 redis 实例提供服务,提取排队的数据,如果它下降,队列将很快被填满,redis 会因 RAM 不足而下降,丢失我的数据......所以,它很漂亮正如我所描述的那样,平衡器以完全相同的方式工作对我来说很重要((你有什么建议,我怎样才能让它工作?..
    • 我不确定我是否明白限制队列中的键数量对您有什么帮助。如果我理解正确,您使用 redis 来存储将由您的 Java 应用程序处理的某种作业。假设您可以选择限制每个实例的队列大小。如果代理后面有两个实例,并且一个达到定义的限制,则代理将开始转发到另一个实例。然后这个很快就会达到定义的极限。这与在两个实例上或多或少地均匀分布密钥有何不同/更好?
    • 数据丢失的关键是冗余(复制),以及持久化运行redis(将数据写入磁盘)。如果您担心您的主机内存不足,virtual memory 可能对您来说很有趣。 (虽然已弃用)
    • 但是要回答您的问题,不,我不知道您如何在不编写自己的代理应用程序的情况下将其存档。据我所知,twemproxy 和 redis 集群都没有实现这个功能。
    • 我的意思是,当 4 个 redis 实例中有 1 个达到队列大小限制并被关闭时,来自它的负载将分布在其他 3 个实例上,因此坏实例将有时间回到上游(cron 将启动 java 应用程序,将处理过多的数据等。)这就是限制键数量对我的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2016-01-26
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多