序言
GatewayWorker基于Workerman开发的一个框架,支持多协议多端口监听,支持分布式多机部署,用于快速开发长连接应用,例如移动通讯、物联网、智能家居、游戏服务端、聊天室等等。
进程模型
GatewayWorker分为Gateway服务BusinessWorker服务和Register服务.
Register服务类似一个全局的地址簿,Gateway进程启动后会到Register注册自己的内部通讯地址,BusinessWorker进程启动后去Register服务注册自己并查询到所有Gateway的内部通讯地址,然后与每个Gateway进程建立长连接用于后续通讯。注意Register服务本身通讯量很低,一般只有在Gateway、BusinessWorker进程启动时才会通讯,所以Register服务本身不会成为系统瓶颈。
Gateway进程负责接受客户端连接并维持这些连接,当有连接事件或者连接断开事件或者连接上有数据发来时,Gateway进程将这些事件或数据通过Gateway与BusinessWorker之前建立的连接转发给BusinessWorker,BusinessWorker进程内部根据事件及数据会默认调用Events.php的onConnect onClose onMessage 回调处理(开发者需实现onConnect onClose onMessage 里面的业务逻辑),如果有需要可以在这些回调中调用接口通过Gateway进程推送数据给任意客户端。具体接口参见《Lib\Gateway类提供的接口》一章。
Gateway只负责网络IO(非阻塞),BusinessWorker负责处理业务。由于Gateway和BusinessWorker之间是tcp长连接通讯,所以Gateway和BusinessWorker可以多机部署(分布式部署),多机部署时只需要向一个统一的Register服务注册即可,也就是一个GatewayWorker集群只对应一个register服务,参见《分布式部署》一章。
客户端
GatewayWorker的通信协议是开放的,又是可定制的,因此,理论上GatewayWorker可以与使用任意协议的任意平台的客户端进行通信。当用户开发客户端时,可以根据相应的通信协议完成与服务端的通信。
本手册作用范围
本手册主要是针对GatewayWorker项目。