序言

优质
小牛编辑
135浏览
2023-12-01

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进程推送数据给任意客户端。具体接口参见《LibGateway类提供的接口》一章。

Gateway只负责网络IO(非阻塞),BusinessWorker负责处理业务。由于Gateway和BusinessWorker之间是tcp长连接通讯,所以Gateway和BusinessWorker可以多机部署(分布式部署),多机部署时只需要向一个统一的Register服务注册即可,也就是一个GatewayWorker集群只对应一个register服务,参见《分布式部署》一章。

客户端

GatewayWorker的通信协议是开放的,又是可定制的,因此,理论上GatewayWorker可以与使用任意协议的任意平台的客户端进行通信。当用户开发客户端时,可以根据相应的通信协议完成与服务端的通信。

本手册作用范围

本手册主要是针对GatewayWorker项目。

注意

GatewayWorker是基于Workerman开发的,在阅读GatewayWorker手册前,请先阅读Workerman手册