关于workerman分布式部署问题

Wsf5918

对于用户的并发量不好控制的时候,如何做到即时的应对外界的访问,以及部署的结构是是大致怎么样的?

如果对于外界来说,都是指向gateway进行连接,那么,
就是,比如,我在.2机器上面有一个worker1:8881 3上面也有一个worker1:8881
外界调用的时候,访问的地址是.2 .3还是就直接就是那个master gateway的主机,外界访问一的地址又是怎么写呢?

阅读 3568
2个回答

walkor

访问量变大,单台服务器无法承受时,可以采用分布式部署方案。

主要思路就是将gateway和BusinessWorker分开部署在多台机器上。gateway机器主要处理网络IO,除了带宽不够,gateway机器一般不会成为瓶颈,所以可以只部署一台gateway机器(当然也可以部署多台)。而worker机器是处理具体业务的,最有可能出现资源不够用的情况,这时只需要动态添加worker机器即可。

所有客户端只连接gateway机器,客户端无需关注gateway后面有哪些worker,在哪些机器上,为了方便后续扩容gateway,可以使用域名指定客户端连接的地址。

gateway收到客户端的请求后,会将请求转发到worker机器,worker机器处理完毕后,根据需要再将结果通过gateway转发给对应客户端或者其它客户端。

分布式部署的数据流程图大概如下:

[attach]47[/attach]

workerman分布式部署方法很简单。步骤大致如下(假设Conbfig/Store.php memcache已经配置好):
1、将项目代码负载到gateway机器,删除BusinessWorker.conf,使之不运行worker进程
2、配置Gateway.conf中的lan_ip为gateway机器的内网ip,并启动workerman
3、将项目代码拷贝到worker机器,删除Gateway.conf,使之不运行gateway进程,并启动workerman

详细步骤参考手册:http://doc2.workerman.net/how-distributed.html

  • 暂无评论
val

好的 感谢您的讲解 我现在是这样的部署的 192.168.1.1作为gateway服务 同时也是Worker机 另外一台192.168.1.2 是单纯的Worker机 我现在发现两台都能链接上tcp服务 但是各自走的各自Events.php 所以误以为workerman分布式是 需要我单独写算法让客户分开链接这两台worker服务器. 通过您的讲解 我可以这么理解 域名一直指向192.168.1.1这台gateway服务机 当压力大的时候 系统会自动将任务给到集群中的其他worker机去处理 我只需要在其他worker机上面部署相同的逻辑处理就可以了 是这样吧

  • 暂无评论