智能家居项目workerman分布式部署问题

xiewen_kevin

Hi Walkor,

 我们目前在做的物联网项目(智能家居方面),用的workerman,10台服务器作分布式部署,分布式通讯组件是Channel,那么,

1 .Channel的Server需要考虑负载的问题吗? 10台服务器的workerman分布式部署时,j单独分配一台服务器给Channel Server足够吗?

2. 每台服务器wokerman启用8个进程,对于mysql或者redis的使用,我是在onWorkerStart里面创建连接的(根据文档设置为全局变量,常驻内存),如下:
     $worker->onWorkerStart = function  ($worker)
     {
         global $redis;
         $redis = new Redis();
         ......
     }
然后在onMessage里面使用redis,如下 :
     $worker->onMessage = function  ($connection, $data)
     {
         global $redis;
         $redis->set('test','test');
         ....
     }

目前这样使用的话,当大量的设备客户端上报数据并写redis时,对于复用内存中redis连接会不会造成写入混乱或错误的问题? 或者会不会发生意想不到的数据错误?

考虑到投放到线上生产,麻烦walkor解答一下,谢谢!

3325 1 1
1个回答

walkor

1、一般来说Channel的Server不用考虑负载,一台服务器足够

2、不会放生数据错乱等问题,单个进程内部还是每个onMessage是顺序执行的,没有并发问题。

年代过于久远,无法发表回答
🔝