Workerman-chat学习之路一(基本概念了解)

因为项目需求,要学习workerman框架,下面是我的笔记和理解。主要是用的它的workerman-chat。workerman-chat基于GatewayWorker,GatewayWorker基于workerman。感觉写这个人好厉害啊。纯PHP写的。


先看看几个之间的关系

先理解关系
下面是具体的解释。官网上有,此处做记录,并附有图片方便理解。


什么是workerman?

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。

纯PHP开发,多进程支持,支持hhvm
支持TCP/UDP,单机可支持数百万以上TCP长连接
支持分布式,集群能支持数百万甚至更高的并发TCP连接
支持libevent事件触发网络库
支持热更新及服务器平滑重启
支持守护进程化和统计监控模块

什么是GatewayWorker

GatewayWorker基于Workerman开发的一个项目,用于快速开发长连接应用,例如移动通讯、物联网、游戏服务端、聊天室等等。


GatewayWorker进程模型

GatewayWorker分为Gateway进程和Worker进程和register注册服务进程,Gateway进程维持着客户端的连接并转发连接上发来的数据给Worker进程处理;Worker进程只负责处理转发来的客户端数据,并通过Gateway进程推送数据给任意客户端。register注册服务进程负责注册通知Gateway进程和Worker进程之间的通讯地址。
进程模型
主要是要知道Gateway进程和Worker进程负责的东西,Gateway只是负责网络IO,并且是非阻塞的,Worker只负责处理业务数据这些。其通信协议是开放的,可定制的,因此我们是可以设置使用任何协议来完成与客户端的通信的。我们再开发客户端的时候,就可以根据我们设置的这个协议来完成与服务器的通信。


workerman-chat聊天室框架

这个是我主要要用到的其中的一个实现框架,它基于workerman作为服务器容器,使用PHP开发,基于Websocket,采用gateway workers进程模型。

在这个过程中gateway只负责IO,全异步非阻塞。每个gateway进程可以与上千万客户端连接。workers是同步模型,并提供了开发者基本的接口 onConnect、onMessage、onClose、sendToClient、sendToAll等方法。 开发者只要在onConnect、onMessage、onClose三个方法中添加上自己的业务逻辑即可,开发维护非常简单。

由于采用的是gateway workers 进程模型,gateway和workers之间是无状态的,gateway和workers可以分别部署在不同的物理机上,所以扩容和升级都非常方便。 workerman-chat也非常适合游戏后台开发。

明天写具体的用法和框架结构。