达到apache storm的极限

voj3qocg  于 2021-06-21  发布在  Storm
关注(0)|答案(2)|浏览(322)

我们正在尝试用 Apache Storm .
应用
接收大量的广告请求( 100 TPS -100次交易/秒),
做一些简单的计算然后
将结果存储在nosql数据库中
最大延迟为10毫秒。
我们正在使用 Cassandra 因为它的写作能力。
然而,我们已经越过了 8 ms 要求,我们在 100ms .
我们尝试最小化缓冲区(中断缓冲区)的大小,并使用螺栓的并行性来很好地平衡拓扑。
但我们还在 20ms .
有了4个工作线程(8核/16gb),我们 20k TPS 这仍然很低。
有什么优化或改进的建议吗
我们刚刚达到极限吗 Apache Storm (限制 Java )?

zsbz8rwp

zsbz8rwp1#

在低延迟和高吞吐量之间有一个折衷。
如果您真的需要高吞吐量,您应该依靠批处理来调整更大的缓冲区大小,或者使用trident。
尽量避免将元组传输给其他工作者有助于降低延迟(本地或混合)
请不要忘记监视gc,因为它会导致世界停止。如果你需要低延迟,它应该被最小化。

cetgtptt

cetgtptt2#

我不知道你在用什么平台,但在c10ms 是永恒。我想你用错工具了。
使用c
服务于某些本地查询需要不到一微秒的时间。
触及多个内存位置和/或必须等待磁盘或网络i/o的非本地查询别无选择,只能占用更多时间。在这种情况下,平行性是你最好的朋友。
你必须找到瓶颈。
是i/o吗?
是cpu吗?
是内存带宽吗?
是内存访问时间吗?
找到瓶颈后,您可以对其进行改进、异步和/或乘法(=并行化)。

相关问题