Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何为集群MQTT代理设置负载平衡器_Spring_Load Balancing_Real Time_Mqtt_Messagebroker - Fatal编程技术网

Spring 如何为集群MQTT代理设置负载平衡器

Spring 如何为集群MQTT代理设置负载平衡器,spring,load-balancing,real-time,mqtt,messagebroker,Spring,Load Balancing,Real Time,Mqtt,Messagebroker,我正在进行一个项目,开发一个实时移动消息应用程序,该应用程序需要基于消息内容和用户平衡进行高级消息过滤,这意味着如果用户已失去平衡或发送的内容违反了策略,则必须阻止消息 因此,我需要实现一些负载平衡解决方案,扫描已发布的消息,并根据上述规则确定是否应阻止消息,因此我无法实现基本代理,因为我需要在每条消息上应用特殊规则 困难部分: 移动应用需要接收订阅消息(也需要连接确认),最好不要通过负载平衡器(请参阅我的下一点) 问题是,我将订阅消息转发到移动应用程序的唯一方法是在负载平衡器中处理连接和订阅,

我正在进行一个项目,开发一个实时移动消息应用程序,该应用程序需要基于消息内容和用户平衡进行高级消息过滤,这意味着如果用户已失去平衡或发送的内容违反了策略,则必须阻止消息

因此,我需要实现一些负载平衡解决方案,扫描已发布的消息,并根据上述规则确定是否应阻止消息,因此我无法实现基本代理,因为我需要在每条消息上应用特殊规则

困难部分: 移动应用需要接收订阅消息(也需要连接确认),最好不要通过负载平衡器(请参阅我的下一点)

问题是,我将订阅消息转发到移动应用程序的唯一方法是在负载平衡器中处理连接和订阅,这是灾难性的。我需要连接是透明的,负载平衡器是无状态的

我怎样才能做到这一点?(如果有什么帮助的话,我当前的设计涉及Java组件,其中spring boot用于负载平衡,VerneMQ作为消息代理)

试试看

移动应用-->MQTT代理-->消息扫描/阻止算法-->MQTT代理-->订户

您的移动应用程序应该具有智能,可以在第一条消息发出后应用程序失去平衡时停止消息

因此,MQTT代理不应在其层直接将消息发送给其订阅者。它应该发送处理后收到的消息


不确定是否有人对此流程有现成的解决方案。但这是可行的

你是对的,但就安全性而言,出于许多原因,我认为进行后端验证是很好的。我相信你将能够添加安全(验证)层作为消息扫描和ALOGITHM块的一部分。我喜欢这种方法我唯一的问题是MQTT代理的冗余,发布越多,代理中的交付时间就越长。通过并行运行多个代理,并在代理之间设置一个分发服务器,以实现内部负载平衡,代理中的冗余度就越大。这将有助于运行多个代理并行接收和发送。您必须确保您的验证块没有单点故障。这种架构更难解释。这是我们工作的一部分