基本场景:从消息队列中拿到消息。假设消息只有 0 和 1。 需求场景:设定两组阀值参数。1:某个信号连续出现 N 次后达到预警阀值。2:某个信号在连续 m 次中至少出现 n 次即达到预警阀值。
希望得到的建议: 以 JAVA 环境为基础,给出个点算法上简单的实现或者参考方案。
1
whatot 2017-08-10 14:41:12 +08:00
第一个比较简单,加两个变量,一个记录上一次信号,一个记录上一次信号的累计次数,按情况判定就行了。
第二个就是限流的通用方法,比如用令牌桶算法,自己设计如何产生令牌,一旦消费端获取令牌失败则达到预警。 |
2
whatot 2017-08-10 14:57:22 +08:00 1
处理第二个问题的简单方法,可以使用一个长度为 m 的 queue,每次新信号,
如果 queue 没满,只增加信号计数; 如果 queue 已满,出栈最旧的一个,减对应计数,然后入栈,增对应计数; 入栈完毕,检查最新计数是否达到阈值 n。 |
3
18665572404 2017-08-10 16:38:15 +08:00
使用 CountDownLatch ?
|