集群聊天服务器(12)nginx负载均衡器

embedded/2024/11/19 23:38:21/

目录

负载均衡

目前最多只能支持2w台客户机进行同时聊天
所以要引入集群,多服务器
但是客户连哪一台服务器呢?客户并不知道哪一台服务器更加繁忙

选择nginx的tcp负载均衡器,能够支持至少3w并发量,最大5w-6w之间
使用nginx负载均衡器+3台服务器,能够支持15W并发量

nginx_8">nginx负载均衡器优势

提高并发量
nginx可以平滑加载配置文件,不像有些公司在凌晨重启服务器。在扩展服务器上比较方便
心跳机制,监测chatserver故障

如何解决集群聊天服务器服务器通信问题?

集群部署的服务器之间进行通信,最好的方式就是引入中间件消息队列,解耦各个服务器,使整个系统松耦合,提高服务器的响应能力,节省服务器的带宽资源。
采用基于发布-订阅的redis消息队列
消息队列相当于一个观察者,会把监听者感兴趣的推送给监听者。而监听者需要先订阅。这就是观察者模式的一个应用场景。

nginxTCP_19">nginx的TCP负载均衡配置

nginx从1.9版本之后支持tcp的长连接负载均衡,但是默认没有编译tcp负载均衡模块,编写时需要加入-with-stream参数来激活这个模块。

nginx_21">nginx配置

先解压
在这里插入图片描述
./configure --with-stream

在这里插入图片描述
如果报错:./configure: error: the HTTP rewrite module requires the PCRE library.:
sudo apt-get install libpcre3 libpcre3-dev
在这里插入图片描述
然后make && make install

在这里插入图片描述
安装到了其他目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在8000这个端口号上进行监听。
weight是权重的意思,权重都为1,那就是轮询,给两台服务器发送。如果上面1,下面是2,那么就是来3个请求下面拿到两个。服务器硬件性能高一点的可以权重大一点。max_fails是心跳机制,等待服务器回消息,等待时间30s,如果心跳超过3次都失败,那么就判定该服务器挂了。
如果要添加服务器,那就是在这里面继续往后写。
转到sbin目录下
先启动./nginx
然后nginx -s reload平滑启动
在这里插入图片描述
在这里插入图片描述
然后给chatserver的main.cpp加了参数
在这里插入图片描述
同时开启两个服务器在这里插入图片描述
两个客户端先连接8000端口

在这里插入图片描述
服务器通过轮询一边连接了一个
在这里插入图片描述
在其中一个客户端登录,一个服务器响应了
在这里插入图片描述


http://www.ppmy.cn/embedded/138902.html

相关文章

【jvm】方法区的理解

目录 1. 说明2. 方法区的演进3. 内部结构4. 作用5.内存管理 1. 说明 1.方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码缓存等数据。它是各个线程共享的内存区域。2.尽管《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但它却…

泷羽sec渗透DC靶场(1)完全保姆级学习笔记

前言 本次学习的是在b站up主泷羽sec课程完整版跳转链接有感而发,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 &#xff0…

SQLite3 JDBC Java工具类

最近生产环境mysql各种无法使用,要求下线。有一堆小工具,平时因为mysql用着方便,配置啊,临时的一些比对数据存在里面。迁移很麻烦。 发现SQLite 3.47.0版本之后,性能大增,支持多线程,记录级锁。…

深入解析GIC中断处理与内核初始化:基于Linux 4.9.88内核的详细分析

往期内容 本专栏往期内容,interrtupr子系统: 深入解析Linux内核中断管理:从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…

IPv6基础知识

IPv6是由IEIF提出的互聯網協議第六版,用來替代IPv4的下一代協議,它的提出不僅解決了網絡地址資源匱乏問題,也解決了多種接入設備接入互聯網的障礙。IPv6的地址長度為128位,可支持340多萬億個地址。如下圖,3ffe:1900:fe…

网络安全、Web安全、渗透测试之笔经面经总结(三)

本篇文章涉及的知识点有如下几方面: 1.什么是WebShell? 2.什么是网络钓鱼? 3.你获取网络安全知识途径有哪些? 4.什么是CC攻击? 5.Web服务器被入侵后,怎样进行排查? 6.dll文件是什么意思,有什么…

静默绑定推广人方法修复

问题表现为:原方法缺少对自己和两个用户互为上下级的拦截 修复方案: 找到文件app/services/user/UserServices.php 将方法spread整个代码替换为 /*** 静默绑定推广人* param Request $request* return mixed */ public function spread(int $uid, in…

Node高级进阶四-http模块

1、Web服务器 什么是Web服务器? 当应用程序(客户端)需要某一个资源时,可以向一台服务器,通过Http请求获取到这个资源;提供资源的这个服务器,就是一个Web服务器; 目前有很多开源的We…