workman服务端开发模式-GatewayWorker的使用

embedded/2024/12/22 19:59:28/

一、GatewayWorker介绍

        Workerman是一个使用PHP开发的高性能组件,用于构建高性能的异步并发TCP、UDP、Unix Socket、HTTP、Websocket服务。

        GatewayWorker是基于Workerman开发的一套TCP长连接的应用框架,实现了单发、群发、广播等接口,内置了mysql类库以及Redis类库等,GatewayWorker分为Gateway进程和Worker进程,天然支持分布式部署,能够支持庞大的连接数(百万甚至千万连接级别的应用)。

二、用武之地

        可用于开发IM聊天应用、移动通讯、游戏后台、物联网、智能家居后台等等。

三、工作原理(工作流程)

       第一步:启动三大进程;

       第二步:Gateway进程以及BusinessWorker进程向Register进程注册地址;

       第三步:Register进程将内存中的所有Gateway通信地址发给BusinessWorker进程;

       第四步:BusinessWorker进程得到信号之后会链接Gateway进程;

四、前端系统与Gateway能及时工作原理

       第一步:前端系统通过socket扩展链接nginx代理;

       第二步:nginx代理将信号或者信息发送给Gateway进程;

       第三步:Gateway进程将信号或者信息转发给BusinessWorker进程;

       第四步:BusinessWorker进程调用Events.php进行处理;

       第五步:BusinessWorker进程将处理好的数据或是信息推送给Gateway进程;

       第六步:Gateway进程通过Register进程提供的注册地址响应给Nginx代理;

       第七步:nginx代理响应对应的客户端系统连接(客户浏览器)。

五、后端api系统通过Gateway服务及时通知前端系统的工作原理

       第一步:后端api系统通过workerman官方提供的网关拓展发送请求;

       第二步:BusinessWorker进程调用Events.php进行处理;

       第三步:BusinessWorker进程将处理好的数据或是信息推送给Gateway进程;

       第四步:Gateway进程通过Register进程提供的注册地址响应给Nginx代理;

       第五步:nginx代理响应对应的客户端系统连接(客户浏览器);

       第六步:客户端系统接收到信号或是信息之后处理。

六、工作流程图

注意事项:   

        gateway属于长链接服务,所以客户端系统第一次链接过来的话需要进行三次握手后将client_id与用户编号进行绑定;

        因客户端的socket链接过来的时候会生成一个client_id,这个基本上是唯一的。

        通过客户端发送的用户参数从数据库或是Redis里面拿到用户编号。要不然后端api无法通过用户编号去查询用户的Gateway服务地址是多少。


http://www.ppmy.cn/embedded/147899.html

相关文章

基于SIFT的目标识别算法

基于SIFT(Scale-Invariant Feature Transform)的目标识别算法是一种经典的计算机视觉算法,用于在图像中寻找和匹配具有尺度不变性的特征点,从而实现目标的快速而准确的识别。 SIFT算法的主要步骤包括以下几个阶段: 尺…

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct

环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct 微调 llamafactory-cli train \--st…

Day55 | 灵神 | 相向双指针:盛最多水的容器接雨水

Day55 | 灵神 | 相向双指针:盛最多水的容器&&接雨水 盛最多水的容器 接雨水_哔哩哔哩_bilibili 文章目录 Day55 | 灵神 | 相向双指针:盛最多水的容器&&接雨水11.盛最多水的容器42.接雨水优化:双指针做法 11.盛最多水的容器…

SQL进阶技巧:如何求解直接线上最多的点数?

目录 0 问题描述 1 数据准备 2 问题分析 3 求解优化 步骤一:构建 “斜率键” 并统计点的数量(核心步骤) 步骤二:找出最多的点数(最终结果) 0 问题描述 “平面上最多的点数” 问题通常是指在一个二维平面中给定了若干个点的坐标(例如以 (x,y) 的形式表示),要求找…

8K+Red+Raw+ProRes422分享5个影视级视频素材网站

Hello,大家好,我是后期圈! 在视频创作中,电影级的视频素材能够为作品增添专业质感,让画面更具冲击力。无论是广告、电影短片,还是品牌宣传,高质量的视频素材都是不可或缺的资源。然而&#xff…

石子移动问题 | 回溯法

问题描述 小S正在玩一个关于石子的游戏,给定了一些石子,它们位于一维数轴的不同位置,位置用数组 stones 表示。如果某个石子处于最小或最大的一个位置,我们称其为端点石子。 在每个回合,小S可以将一颗端点石子移动到…

如何在铁威马NAS上安装内网穿透,实现对铁威马NAS的远程访问管理

前言 使用ZeroNews内网穿透,你可以随时随地访问你的TNAS 设备,在无公网IP情况下,通过远程访问,你可以在家或在办公室以外的地方轻松访问铁威马NAS以及NAS上的应用。 第 1 步:生成 ZeroNews 的认证 Token​ 登录 Zero…

M3D: 基于多模态大模型的新型3D医学影像分析框架,将3D医学图像分析从“看图片“提升到“理解空间“的层次,支持检索、报告生成、问答、定位和分割等8类任务

M3D: 基于多模态大模型的新型3D医学影像分析框架,将3D医学图像分析从“看图片“提升到“理解空间“的层次,支持检索、报告生成、问答、定位和分割等8类任务 论文大纲理解1. 确认目标2. 分析过程(目标-手段分析)核心问题拆解 3. 实…