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解答一下,谢谢!
1、一般来说Channel的Server不用考虑负载,一台服务器足够
2、不会放生数据错乱等问题,单个进程内部还是每个onMessage是顺序执行的,没有并发问题。
好的 谢谢walkor