首页 » 网站推广 » phpswoole群组技巧_SwooleWebSocket 分布式支配

phpswoole群组技巧_SwooleWebSocket 分布式支配

访客 2024-12-10 0

扫一扫用手机浏览

文章目录 [+]

废话连篇

牛郎织女来相会,燕雀前来搭桥​​。
你我天各一方,终盼今日相会,奈何天河阻断,空悲切。

phpswoole群组技巧_SwooleWebSocket 分布式支配

方案设计:

方案一、

phpswoole群组技巧_SwooleWebSocket 分布式支配
(图片来自网络侵删)

1、谁发起,谁卖力,无法承担,甩锅给行列步队,大家共同卖力

详解:uid1 在做事 S1 上,想要推送给 uid2,先查看uid2 是否在S1 上,在直接推送就好了;不在,则把事宜推送到Queue,

每个做事都订阅该topic,消费,(事宜触发)

关键:两个消费群组,消费一个topic,通过行列步队,实现触发动作

缺陷:相称于遍历所有做事,增加做事压力

技能:MQ 不限(RabbitMQ、kafka等),也可以redis 实现

方案二、

1、网关卖力,分发连接那个做事,然后指定推送

详解:uid1 客户端发起连接,hash 取值到相应做事;uid2 客户端发起连接,hash 取值到相应做事;

uid1 想要和 uid2 通讯,则对uid2 进行hash 取值,是否和自己在同一台做事器,在则直接推送,不在则直接推送到相应的做事器

关键:Hash、Queue

比较:

比较方案一:做事压力相对较小,减轻不必要的查询(优)比较方案一:设计更繁芜 (缺)

方案三、

1、协议叠加,不通过MQ

方法同方案二类似,用户连接,redis记录所在做事器,不在自己的做事器,则通过HTTP 或者其他协议,推送到目标做事器

回调函数 onRequest,可以吸收 HTTP协议

官方文档:https://wiki.swoole.com/wiki/page/397.html

深入谈论:

关键点:1、用户在哪台做事器,怎么记录?

2、跨做事怎么通讯?

问题一:用户在哪台做事器,怎么记录?上面采取了两种办法

1、连接之后redis 记录, uid1:server1; uid2:server2;uid3:server1;

2、通过hash 分配 (扩容之后,节点会发生变革,会影响部分节点的客户端连接)

问题二:跨做事怎么通讯?

1、通过行列步队中间件,进行信息的通报

1.1 :一种为广播:创建一个topic,其他做事都订阅这个topic,会增加没必要的遍历查询

1.2 :一种为精准投递,须要掩护多个topic,做事节点消费者,只需订阅自己的专属的消费行列步队,

2、通过协议叠加,通报。
由于webSocket 本身便是 HTTP的升级版(upgrade),可以吸收来自HTTP的要求(见上方:方案三)

总结:

比较较而言,个人认为方案三,最大略,支配更方便快捷。

左手代码,右手诗,意见意义学习新知识

标签:

相关文章

ajaxphpmysql技巧_PHPAJAX 与 MySQL

AJAX 数据库实例下面的实例将演示网页如何通过 AJAX 从数据库读取信息:本教程利用到的 Websites 表 SQL 文件:...

网站推广 2024-12-12 阅读0 评论0

php网页cookie技巧_PHP Cookie

Cookie 是什么?cookie 常用于识别用户。cookie 是一种做事器留在用户打算机上的小文件。每当同一台打算机通过浏览器...

网站推广 2024-12-12 阅读0 评论0