GatewayWorker 使用总结
公司有 Im 项目,用的技术栈是 GatewayWorker,查看了文档和源码,简单做下总结。
GatewayWorker 是什么?
GatewayWorker基于 Workerman 开发的一个项目框架,用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等。
GatewayWorker 与 Workerman 的关系?
GatewayWorker 是基于 Workerman 开发的,Workerman 是一个 socket 类库。有了 Workerman 才有 GatewayWorker 和 Webman, Webman 是一个框架。
GatewayWorker 包含什么?
一个三个进程,Register、Gateway、BusinessWorker 3个进程是平级的,不是传统的 master worker 父子进程关系。
流程图,阅读了 GatewayWorker 源码画的。
Workerman 核心实现原理是什么?
基于 PHP 的 stream_socket_server 创建的支持 TCP UDP Text Websocket 协议的函数,使用扩展 pcntl 和 posix 做进程通信,信号量。pack() 函数将数据打包成二进制字符串。使用函数 serialize() 序列号对象。
GatewayWorker 封装了操作数据库的类库
底层实现是用了 PDO 预处理对象。
分布式部署
都用内网部署,安全,可以全部在一台服务器部署,本地开发就是这样,生产环境推荐每个进程都是部署在一台服务器。
Register 一个就可以,Gateway 和 BusinessWorker 可以多个,业务代码都写在 BusinessWorker,性能瓶颈也在 BusinessWorker,流量大时加多几台服务器运行 BusinessWorker 就可以。
Gateway 推荐用 Nginx 做为前置的负载均衡,Gateway 不直接对外,防止被攻击。
打赏作者
您将是第一位评论人!