我用Gateway做了一个物联网平台提供TCP服务端功能,供各个设备作为客户端连接,然后进行通讯。目前有一个需求:有些客户端设备连接后,需要服务端定时下发指令给客户端,比如每一秒下发一次指令给客户端,客户端返回数据报文,典型的如MODBUS协议。 请教一下关于这个定时下发的方案设计,怎么设计比较合理。 我现在采用的方案是:客户端连接成功之后,在onMessage里启动Timer定时器,连接断开后del。比较担心如果客户端数量过多的时候这种方案会不会影响性能。
定时器时不错的方案 每个客户端一个定时器没问题
可以每个客户端一个定时器,客户端连接断开后记得删除定时器就行。 关于定时器性能影响,主要看定时器执行的业务和总频率。比如1万个定时器,每10秒执行一次的性能消耗和1000个定时器每秒执行1次的消耗基本是一样的。如果定时器里执行的是调用sendToClient的业务,预计每个cpu可以执行几千次到上万次。
老大我的业务和他的基本一样,已完成编码,目前用递归的方式掉定时器执行,但是因为busy出现丢包现象,我进行了一些优化都不太理想,您可以指点下吗,https://wenda.workerman.net/question/7500
定时器时不错的方案 每个客户端一个定时器没问题
可以每个客户端一个定时器,客户端连接断开后记得删除定时器就行。
关于定时器性能影响,主要看定时器执行的业务和总频率。比如1万个定时器,每10秒执行一次的性能消耗和1000个定时器每秒执行1次的消耗基本是一样的。如果定时器里执行的是调用sendToClient的业务,预计每个cpu可以执行几千次到上万次。
老大我的业务和他的基本一样,已完成编码,目前用递归的方式掉定时器执行,但是因为busy出现丢包现象,我进行了一些优化都不太理想,您可以指点下吗,https://wenda.workerman.net/question/7500