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也非常适合游戏后台开发。

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