如何在后端设计“匿名”功能-好的设计模式

0qx6xfy6  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(167)

在开发通知中心时,我们希望向用户推送新生成的通知(但是,通知的生成速度非常快,因此我们希望使用throttle方法(lodash中的一个术语,或者参见此可视化)。我们将限制“通知生成”事件。
可视化:x轴是时间。第一个蓝行是生成的通知,当然不一定是相同的时间间隔。红色行是限制的事件(忽略绿色)

问题是如何实现这一点。我们有一个简单的解决方案如下:
每当生成通知时,将一个“延迟的任务”排队到kafka中,其中delay=throttletime。
当Kafka向我们传递一个延迟的信息时,请查看 lastActionTimestamp 在redis。如果 currentTimestamp - lastActionTimestamp < throttleTime ,这意味着此消息应该被丢弃。否则,执行操作,并更新 lastActionTimestamp 在redis中是当前时间。
我觉得有点复杂。那么有没有更好或更简单的方法呢?或者有图书馆吗?谢谢!
免责声明:这不是常见的“节流”——不想限制某些用户操作或微服务调用的速率。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题