- 主题:求个思路 多谢了 (转载)
【 以下文字转载自 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.*
架构设计的有问题。换架构。
【 在 rogue 的大作中提到: 】
: 【 以下文字转载自 Golang 讨论区 】
: 发信人: rogue (潜行者), 信区: Golang
: 标 题: 求个思路 多谢了
: ...................
--
FROM 111.193.200.*
看这描述都是一团浆糊,
发起是什么,谁发给谁的,
响应是什么,谁发给谁的。
【 在 rogue 的大作中提到: 】
: 发信人: rogue (潜行者), 信区: Golang
: 标 题: 求个思路 多谢了
: 发信站: 水木社区 (Sun Feb 26 11:24:54 2023), 站内
: ...................
--
FROM 223.104.41.*
状态机
--
FROM 114.253.33.*
弄个缓冲队列+窗口 就行了
【 在 rogue 的大作中提到: 】
: 【 以下文字转载自 Golang 讨论区 】
: 发信人: rogue (潜行者), 信区: Golang
: 标 题: 求个思路 多谢了
: ...................
--
FROM 120.229.207.*
相比于 expire
sleep 为何 漏 了?
【 在 rogue 的大作中提到: 】
:而且人为sleep这种方式我觉得很low
: ...................
--
FROM 47.152.112.*
这个可以把所有收到的消息带上timestamp放到数据库或者内存缓存里
同时启动一个线程扫描所有未组合成功的,
30秒内的根据特征位能组合的就组合,
超了30秒还不能组合的就报警
这样的话,即使先收到BCDE,再收到A完全可以按照顺序组合好。
【 在 rogue 的大作中提到: 】
: 发信人: rogue (潜行者), 信区: Golang
: 标 题: 求个思路 多谢了
: 发信站: 水木社区 (Sun Feb 26 11:24:54 2023), 站内
: ...................
--
FROM 147.161.215.*
上状态机啊。
【 在 rogue 的大作中提到: 】
:
: 【 以下文字转载自 Golang 讨论区 】
: 发信人: rogue (潜行者), 信区: Golang
: 标 题: 求个思路 多谢了
: 发信站: 水木社区 (Sun Feb 26 11:24:54 2023), 站内
--
FROM 117.173.227.*
tcp不是很好?,小看tcp效率了
--
FROM 112.65.4.*
给变量设置数值做加法然后判断范围
--
FROM 124.64.65.*