gpt4 book ai didi

java - 累积/刷新消息的设计模式

转载 作者:行者123 更新时间:2023-11-30 09:14:35 25 4
gpt4 key购买 nike

目前我们有一个发布/消费者服务,消费者将收到的消息写入 AWS S3。我们目前每月编写超过 100.000.000 个对象。但是,我们可以根据一些规则对这些消息进行分组,以节省一些钱。这些规则可以是这样的:

  • 如果我们收到了用户 1 的 10 条消息 -> 将它们分组,并且写入 S3。
  • 如果我们收到了用户 1 的 < 10 条消息,并且自上一条消息以来耗时超过 5 秒,则刷新到 S3。
  • 如果“内部”队列大于 N,则开始刷新

我们不希望吃掉我们的内存...正因为如此,我正在从设计模式的角度寻找最好的方法,考虑到我们正在谈论高负载系统,所以我们没有无限的内存资源。

谢谢!

最佳答案

好吧,根据您在评论中的进一步解释,有相关算法称为Leaky bucketToken bucket .它们的主要目的略有不同,但您可能会考虑使用一些修改 - 特别是您可能会考虑将“从桶中泄漏的液滴”视为将单个用户的所有消息定期提交到 S3 中。

这样或多或少的修改(请先阅读算法的描述):

  1. 每个用户有一个桶(您可能很容易负担得起,因为您只有大约 300 个用户)
  2. 每个桶都装满了来自每个用户的消息
  3. 您经常让每个桶泄漏(刷新所有消息或仅刷新一小部分消息)

我猜它以某种方式遵循了您最初的要求。

关于java - 累积/刷新消息的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20379293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com