swoole启动2万个定时器对性能有影响吗?

发布于 2022-09-06 02:53:31 字数 304 浏览 15 评论 0

假设有2万个物联网设备,以mac为唯一标识,长连接到TCP服务器,数据库有实时的数据需要发给设备,如果有就马上发给设备,如果没有就什么都不做,一种方案是每个设备开启一个属于自己的定时器,查询数据库时带上设备的mac,只查询属于该设备的信息,用连接池,这种方案有个好处,由于只查询了属于设备的信息,返回结果后不需要循环就直接返回给设备了,缺点是设备多查询数据库次数多了,另一种方案是只开启一个定时器,查询数据库时把所有的信息都查出来,然后循环下发给对应的设备,这样有个好处,查询数据库次数很少了,但是每次都返回了很多数据,还要循环下发给对应的设备,各有千秋吧,不知道哪种好?个人认为最后一种方案好

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

む无字情书 2022-09-13 02:53:31

你这个就是推和拉的模型,理论上你能够开2W个独立进程去定时拉取数据,就能够开2W个进程去推送数据。一样的道理,即使你用后一种模型,在推送的时候,也不需要循环下发,可以分组,比如每组100个之类的,把消息推送出去。前面那种拉模型,主要对你的数据库压力太大,一旦你的设备越来越多,这个模型是肯定要改成推模型的。如果你预估设备数量不会很多的话,可以考虑拉模型,实现比较简单,但后续的伸缩性会差一些。

2022-09-13 02:53:31

swoole倒是没用过,个人用go比较多; 要想知道是否对性能有影响,可以通过swoole运行后,详细监控操作系统的运行情况来观察;

网上有很多监控操作系统各项参数以及监控tcp情况的开源软件;

我知道的一个安装比较简单,数据也很详细的是 NetData

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文