zmq监控
2025-05-23 15:41:48 0 举报
事件插件v0 & v1 数据流程图
作者其他创作
大纲/内容
N
ContractEventTrigger
Zmq Socket
SUB Client
contractLogTriggercontractEventTrigger
网络模块processBlock
delete
postSolidityTrigger方法
查询
取缓存BlockEventCache中固化的头块的事件
Y
取缓存BlockEventCache中非固化的头块
执行定时任务/每分钟
postSolidityEventContractTrigger
遍历完成?
按时间顺序遍历cache数据并写入socket; 清空cache
postSolidityFilter方法
清空计数器
+1
循环等待标志位canWrite=true
过期时间2分钟;容量=10000;
取缓存中头块后的最多 MAX_LOAD_NUM 个块
LogsFilterCapsule
固化的 BlockFilterCapsule和LogsFilterCapsule
mongo queue
cache
BlockFilterCapsule
设置标志位canWrite=true
postBlockTrigger方法
Manager类的 pushBlock
applyBlock -> processBlock -> processTransaction -> postContractTrigger
postBlockFilter方法
postLogsFilter方法
重启Pub Server
RealtimeEventService启动周期性定时任务
MAX_LOAD_NUM个块中的事件存储到2个外部缓冲区
BlockLogTriggerCapsule
事件队列queue,最大长度10000
triggerCapsuleQueue
Native队列
获取BlockEvent,用完删除
sub
BlockEvent 4个字段
SolidityTriggerCapsule
遍历startNum与数据库头块之间的块号
1. BlockLogTriggerCapsule2. TransactionLogTriggerCapsule3. SolidityTriggerCapsule4. SmartContractTrigger:ContractLogTrigger + ContractEventTrigger
重启Sub Client
Kafka queue
eth_getFilterChanges动态匹配
BlockLogTriggerCapsuleTransactionLogTriggerCapsule
写入Native ZMQ 或外部API
设置标志位canWrite=false
调用方法
BlockEventCache初始化时头块为数据库的头块
SolidEventService启动周期性定时任务
缓存中的头块事件放入rollbackBlockEvents
triggerCapsuleProcessLoop线程
事件插件API
version = 1 且 startSyncBlockNum> 0
flush方法
计数器
TransactionLogTriggerCapsule
PUB Server
判断事件插件中pending队列是否太长
Leveldb
启动HistoryEventService
封装
getBlockEvent
计数器为0?
write
BlockEventLoad启动周期性定时任务
ZMQ queue
solidityLogTriggersolidityEventTrigger
结束
postTransactionTrigger方法,按需计算累计的能量等兼容字段
publish
filterCapsuleQueue
ContractLogTrigger
postSolidityLogContractTrigger
ContractTriggerCapsule
BlockEventGet 类
filterProcessLoop线程
0 条评论
下一页