【 以下文字转载自 Golang 讨论区 】
发信人: rogue (潜行者), 信区: Golang
标 题: 求个思路 多谢了
发信站: 水木社区 (Sun Feb 26 11:24:54 2023), 站内
求个思路或逻辑
目前做一个udp协议的超时监控,比如发起A,响应是B、C、D、E
服务端接收到A后30秒内收到BCDE就OK,超过30秒则告警
服务端接收到的数据还没有顺序发送的是ab可能收到ba
也有可能是aaab这样的也要考虑进去
我目前做的思路是收到发起消息时放到redis中,
收到响应消息时删除key
程序监听 redis expired事件, 当收到事件消息时,说明肯定是超时了
因为收到的包是无序的,所以人为的把响应消息给sleep了,阻断了,这样强制他有序了
虽然这样免强还能用,但是有误报,比如可能因网络问题收到的是AAAB,连续发了几个请求,但在30秒内还是有响应,不应该告警
我现在这种情况就会告警
而且人为sleep这种方式我觉得很low
但又想不出其它的,还忘各位高手指点
--
FROM 221.219.191.*