PHP Swoole开发消息推送服务

上传人:蜀歌 文档编号:147064848 上传时间:2020-10-06 格式:PDF 页数:27 大小:4.13MB
返回 下载 相关 举报
PHP Swoole开发消息推送服务_第1页
第1页 / 共27页
PHP Swoole开发消息推送服务_第2页
第2页 / 共27页
PHP Swoole开发消息推送服务_第3页
第3页 / 共27页
PHP Swoole开发消息推送服务_第4页
第4页 / 共27页
PHP Swoole开发消息推送服务_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《PHP Swoole开发消息推送服务》由会员分享,可在线阅读,更多相关《PHP Swoole开发消息推送服务(27页珍藏版)》请在金锄头文库上搜索。

1、 PHP + Swoole 开发消息推送服务 Rango-韩天峰 关于我 新浪微博: Github主页: 消息推送服务器 虎牙游戏直播 哪些地方需要推送服务 主播开播 了 游戏竞猜 结果 新闻推送 即时聊天 主动更新 APP设置 服务器主 动控制 技术选型 服务器硬件: RAM 16G + 8核 E5-2620 服务器操作系统:Ubuntu 12.10 64位 编程语言和框架:PHP + Swoole(扩展+框架) 存储:Redis + MySQL 通信协议:TCP + 固定包头 + WUP + JSON (WebSocket+JSON) 并发连接数:单机同时平均在线20万用户,峰值可达到50

2、万,使用3台 MsgServer,可支持150万用户同时在线 分布式系统:架构层面没有任何单点,任意的程序模块均可水平扩容 系统架构 GetMsgServerIP 一个PHP提供的Http接口,客户端会携带设备ID、用户ID等信息请 求此接口 PHP程序查询Redis,得到当前在线的MsgServer IP列表 按照一定的算法,计算出该客户端连接到哪台MsgSever MsgServer宕机,会自动从Redis中踢出,客户端可以连接到其他 MsgServer MsgServer 与客户端保持连接,ulimit n 调整为 1000000 与ProxyServer保持连接,接收来自其他MsgSe

3、rver的消息转发 检测客户端存活状态,心跳时间为300秒/500秒 心跳过快耗电过多,心跳过慢有可能被电信运营商切断连接 设备/用户登录退出操作,更新Redis中的状态 消息进行双向确认/重传/去重。发送消息后,客户端必须恢复ACK确认包,才认为已 成功。否则进行重传,客户端对服务器推送的消息进行去重,避免收到重复的消息。 MsgServer发现用户离线,会将消息保存起来,根据类型设置不同的过期时间。 设备上线后,尝试推送离线消息 MsgServer ProxyServer 检测MsgServer的存活状态 MsgServer没有连接到ProxyServer,认为此消息服务器已下线, 自动从

4、Redis中踢掉 MsgServer上线后连接到ProxyServer,自动加入Redis 接受来自PHP代码、C+程序、Java程序的消息推送请求,转发 给用户所在的MsgServer 支持定时向某些用户发送消息 ProxyServer ProxyServer JobServer 接受运营下发的 广播/组播任务 查询用户和组,打包成单条消息,发给ProxyServer 定时任务处理 其他业务逻辑处理 JobServer 配套工具 运营管理平台:下发推送任务(PUSH Job),查看用户在线状态, 查看用户消息列表 日志查询平台:对某些用户进行染色,查询Access日志/消息日志 统计监控平台

5、:统计当天消息发送统计、在线人数统计、监控报警 配套工具 配套工具 配套工具 配套工具 开发中遇到的一些坑(1) Android客户端的Java程序员使用socket.sendUrgentData检测Socket 是否可用,某些路由器节点不支持这种数据包,导致服务器收到的数 据莫名其妙多了1字节 不要用PHP做大规模的计算逻辑 PHP数组内存占用较大,需要对其规模有预估,避免内存爆掉 尽量使用PHP局部变量和对象,使用全局变量/类静态变量时要谨慎 不要迷信Redis,Redis是单线程,CPU可能会成为瓶颈。可以使用 swoole的task进程/swoole_table来取代一部分Redis的

6、使用 开发中遇到的一些坑(2) Redis/MySQL/消息队列使用多实例 swoole设置CPU亲和性,避开CPU0,使CPU0仅处理网络中断 上线后及时加监控和报警,第一时间发现问题 为什么要用PHP开发? 从立项、评审、开发、测试、上线,仅用一人月,效率惊人。 PHP开发调试简单,工程师没有心理负担,更利于产品的迭代、 完善、进化 PHP程序员在Web方面有绝对优势,强大的后端Server配完美的 Web管理界面 为什么要用Swoole? 完整的Server/Client方案,不需要关心网络通信的底层细节 C语言开发,性能强悍。底层几乎没有任何性能损失,CPU全部被 利用到PHP程序上 拥有各种API,如task/table/sendMessage/timer/event,非常灵活 强大 Swoole有百度地图、腾讯企业QQ等超大型企业在用,更靠谱 社区支持力度大,有问题可联系到Swoole作者本人 Q & A 招聘PHP/IOS/Android程序员,奖励3000元+AppleWatch 加入我们,用PHP+Swoole实现系统架构

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号