论阿里云NLB之于MQTT负载均衡的重要性
先看图
首先看nginx下stream负载mqtt服务
假设你有3个mqtt节点权重一致,假设节点1同时部署了nginx
我们这里以c7cpu,4核8GB内存服务器为例。
这时候,假设6万链接连进来,节点1要负载多少链接数?
第1,是这6万进来的链接,6万;
第2,自己消化1/3,2/3分流给节点2和3,4万;
合计10万链接,而实际负载2万链接;
当然你也可以说单独部署一台nginx
这时候除了多一台服务器的费用,我们可以再看下这台服务器负载多少链接
第1,是这6万进来的链接,6万;
第2,自己不消化,所有流量分流给3个节点,6万;
合计12万链接;
好了,这里我要抛出另一个问题,一台c7cpu4核8GB,可以支撑多少并发TCP链接?
这里不想赘述,我压测了11个场景,得出的结论是,阿里云c7cpu4核8GB,可以稳定支撑12万链接200tps,我的测试链接心跳间隔是120秒,tps是用户链接发一条消息,设备链接回一条消息,合计每秒200。更高一点的值也是可以的,例如13万链接,300tps,但是保守,并且压测最长时间的数据就是12万链接200tps。
- 所以
单独部署一台nginx来负载均衡,你要考虑服务器资源的浪费
- PS
一定要c7cpu且4核8GB服务器,5代的或者7代2核的都测试过,支撑不了12万链接200tps,5代的大概5万多到6万,7代2核的大概6万
这里回过头说nginx负载均衡
一台服务器紧巴巴的才12万链接,结果6万链接进来,节点1就占了10万,才负载2万。
就算,你让节点2、3都上nginx,18万链接进来,这样每个节点链接数,分别是14万,而每个实际负载6万。而我们每台服务器只能12万负载,所以每台可负载的实际链接就不足6万,每台服务器资源浪费以上,3台或者更多台,就不知道浪费多少了。
- 结论
我们完全可以抛弃nginx,让各个节点完全服务于mqtt服务,单个节点可以支撑12万mqtt链接,200tps稳定使用。
这里再说NLB
这里我们假设有36万的链接进入NLB,他可以均匀分给3个节点各12万,服务器资源充分服务于mqtt通讯。
- PS
标签:负载,12,mqtt,链接,nginx,MQTT,NLB,节点 From: https://blog.csdn.net/JingleYe/article/details/143322542微信搜索【蜜蜂网盘搜so】小程序,万部短剧、各种资源任意搜索