GatewayWorker 使用总结

公司有 Im 项目,用的技术栈是 GatewayWorker,查看了文档和源码,简单做下总结。

GatewayWorker 是什么?

GatewayWorker基于 Workerman 开发的一个项目框架,用于快速开发TCP长连接应用,例如app推送服务端、即时IM服务端、游戏服务端、物联网、智能家居等。

GatewayWorker 与 Workerman 的关系?

GatewayWorker 是基于 Workerman 开发的,Workerman 是一个 socket 类库。有了 Workerman 才有 GatewayWorker 和 Webman, Webman 是一个框架。

GatewayWorker 包含什么?

一个三个进程,Register、Gateway、BusinessWorker 3个进程是平级的,不是传统的 master worker 父子进程关系。

流程图,阅读了 GatewayWorker 源码画的。

Workerman 核心实现原理是什么?

基于 PHP 的 stream_socket_server 创建的支持 TCP UDP Text Websocket 协议的函数,使用扩展 pcntl 和 posix 做进程通信,信号量。pack() 函数将数据打包成二进制字符串。使用函数 serialize() 序列号对象。

GatewayWorker 封装了操作数据库的类库

底层实现是用了 PDO 预处理对象。

分布式部署

都用内网部署,安全,可以全部在一台服务器部署,本地开发就是这样,生产环境推荐每个进程都是部署在一台服务器。

Register 一个就可以,Gateway 和 BusinessWorker 可以多个,业务代码都写在 BusinessWorker,性能瓶颈也在 BusinessWorker,流量大时加多几台服务器运行 BusinessWorker 就可以。

Gateway 推荐用 Nginx 做为前置的负载均衡,Gateway 不直接对外,防止被攻击。

相关推荐
thinktik4 小时前
还在手把手教AI写代码么? 让你的AWS Kiro AI IDE直接读飞书需求文档给你打工吧!
后端·serverless·aws
悠悠~飘5 小时前
php简介(第一天打卡)
php
老青蛙6 小时前
权限系统设计-用户设计
后端
echoyu.6 小时前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka
yuluo_YX6 小时前
Go Style 代码风格规范
开发语言·后端·golang
David爱编程7 小时前
从 JVM 到内核:synchronized 与操作系统互斥量的深度联系
java·后端
彭于晏Yan7 小时前
SpringBoot优化树形结构数据查询
java·spring boot·后端
章丸丸7 小时前
Tube - Studio Videos
前端·后端
练习时长一年7 小时前
Spring事件监听机制(三)
java·后端·spring