序:最近對storm平臺系統(tǒng)進行性能檢測發(fā)現(xiàn)偶爾會出現(xiàn)oncebolt向另一個twobolt發(fā)送數(shù)據(jù)后,twobolt要500毫秒后才接收到進行處理。這里簡單說增大twobolt的并行度即可解決,但是究其內(nèi)部原因是因為storm的通信機制所導致的問題。
先介紹背景:一個拓撲的結構,spout(并行度:1)[處理性能:capacity 0.04],oncebolt(并行度:20)[處理性能:capacity 0.2],twobolt(并行度:100)[處理性能:capacity 0.6];整個拓撲就我預估最大的處理量就是一秒一千條。
原文和作者一起討論:http://www.cnblogs.com/intsmaze/p/6544017.htmll
微信:intsmaze
最近對系統(tǒng)進行性能檢測,統(tǒng)計整個storm系統(tǒng)中一條消息處理中各個IO耗時的時間,找出性能瓶頸。發(fā)現(xiàn)除了活動匹配中會有分布式鎖以及大量的redis的IO操作,導致最多會耗時30ms,以及從Hbase中查詢數(shù)據(jù)時由于hbase集群當時正在跑任務導致耗時1~2s。唯一出現(xiàn)的問題就是onebolt向twobolt發(fā)送數(shù)據(jù)后,某些數(shù)據(jù)耗時幾百毫秒才會被twobolt接收到。這就引起了我的注意。
先上一下偽代碼:
public class OnceBolt extends BaseRichBolt{ private static final long serialVersionUID = -5283595260540124273L;