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

目录

  • 负载均衡器
    • nginx负载均衡器优势
  • 如何解决集群聊天服务器跨服务器通信问题?
  • nginx的TCP负载均衡配置
    • nginx配置

负载均衡器

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

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

nginx负载均衡器优势

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

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

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

nginx的TCP负载均衡配置

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

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.rhkb.cn/news/475006.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8深度学习的智慧交通事故评级检测系统研究与实现(PyQt5界面+数据集+训练代码)

本文研究并实现了一种基于YOLOv8深度学习模型的智慧交通事故评级检测系统,旨在解决传统交通事故检测过程中效率低、误报率高等问题。该系统通过深度学习技术的应用,结合交通事故图像的分析,能够实现对事故的精准识别和评级,进而为…

基于Java Springboot出租车管理网站

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

iOS 18 导航栏插入动画会导致背景短暂变白的解决

问题现象 在最新的 iOS 18 系统中,如果我们执行导航栏的插入动画,可能会造成导航栏背景短暂地变为白色: 如上图所示:我们分别向主视图和 Sheet 弹出视图的导航栏插入了消息,并应用了动画效果。可以看到,前者的导航栏背景会在消息插入那一霎那“变白”,而后者则没有任何…

[Go]-sync.map使用详解

sync.Map是 Go 语言中在并发环境下使用的安全映射类型。 一、为什么需要sync.Map 在 Go 语言中,普通的map不是并发安全的。当多个 goroutine 同时读写一个普通map时,可能会导致程序出现未定义的行为,比如数据竞争、程序崩溃等。而sync.Map则…

Ubuntu22.04安装CH343驱动并创建udev规则

驱动说明 Linux系统提供CH34*系列 USB UART 设备配合使用的默认 CDC-ACM 驱动程序。驱动程序文件名为CDC-ACM。CDC-ACM 驱动程序控制特定设备的能力有限。此通用驱动程序不了解特定设备协议。因此,设备制造商可以创建能够访问设备特定功能集(例如硬件流…

Stable Diffusion经典应用场景

🌺系列文章推荐🌺 扩散模型系列文章正在持续的更新,更新节奏如下,先更新SD模型讲解,再更新相关的微调方法文章,敬请期待!!!(本文及其之前的文章均已更新&…

MATLAB常见数学运算函数

MATLAB中含有许多有用的函数,可以随时调用。 a b s abs abs函数 a b s abs abs函数在MATLAB中可以求绝对值,也可以求复数的模长:c e i l ceil ceil函数 向正无穷四舍五入(如果有小数,就向正方向进一)f l o o r floor floor函数 向负无穷四舍五入(如果有小数,就向负方向…

学习与理解LabVIEW中的格式化写入(Format into String)函数

有例子会更容易学习与理解LabVIEW中的函数 这是函数的基本介绍,下面我将以例子的方式介绍该函数: 初始字符串将会和已经填充好的格式化字符串拼接在一起,组成结果字符串,初始字符串在前。 应用: 可以用在执行SQL语句或…

Ubuntu22.04.2 k8s部署

k8s介绍 简单介绍 通俗易懂的解释: Kubernetes(也被称为 K8s)就像是一个大管家,帮你管理你的云计算服务。想象一下,你有很多个小程序(我们称之为“容器”),每个都在做不同的事情&…

oracle导入线上数据的全步骤

多租户架构允许oracle数据库成为一个多租户的容器数据库,也就是CDB,container database,与之相对应的,则是插入到这个容器里面的可插拔式数据库,pluggable database 一个CDB可以包含0,1或者多个用户创建的…

【机器学习】在泊松分布中,当λ值较大时,其近似正态分布的误差如何评估?

在泊松分布中,当参数 λ 较大时,其近似正态分布的有效性可以通过 中心极限定理 和误差分析来理解和评估。以下内容结合理论推导和实际案例展开说明: 1. 泊松分布的定义 泊松分布是用于建模单位时间或单位空间内随机事件发生次数的概率分布&a…

快速搭建Android开发环境:Docker部署docker-android并实现远程连接

目录 前言 1. 虚拟化环境检查 2. Android 模拟器部署 3. Ubuntu安装Cpolar 4. 配置公网地址 5. 远程访问 小结 6. 固定Cpolar公网地址 7. 固定地址访问 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊快速搭建Android开发环境&#x…

使用 SMB 协议从win10电脑访问同网段ubuntu电脑文件

​​​​​​1.在 Ubuntu 上设置共享文件夹 在终端中运行以下命令安装 Samba: sudo apt update sudo apt install samba 编辑 Samba 配置文件: sudo nano /etc/samba/smb.conf 在文件末尾添加以下内容(假设要共享 用户dy下的Downloads目录&…

Android WMS概览

WMS(WindowManagerService)是 Android 系统的核心服务,负责管理应用和系统的窗口,包括窗口的创建、销毁、布局、层级管理、输入事件分发以及动画显示等。它通过协调 InputManager 和 SurfaceFlinger 实现触摸事件处理和窗口渲染&a…

25.<Spring博客系统②(实现JWT令牌登录接口+强制登录+获取用户信息+获取作者信息)>

PS:带删除线的方法 可以使用但是不建议使用(方法提供方说的) 加上Deprecated注解。就代表这个方法可以使用,但是不建议使用。也就会带删除线了 前言 对于用户登录。 我们之前的做法都是 1.用户登录,后端验证用户名和密…

《Python编程实训快速上手》第七天--文件与文件路径

该章节将使用Python在硬盘上创建、读取和保存文件 一、文件与文件路径 1、Windows中使用\以及macOS和Linux中使用/ 使用pathlib模块中的Path()函数进行文件名和目录的拼接,返回文件路径字符串 from pathlib import Path print(Path("spam","bacon",&qu…

Oracle RAC仲裁交换机的小科普

一、Oracle RAC仲裁交换机的主要功能 Oracle RAC仲裁交换机是用于Oracle Real Application Clusters(真实应用集群,简称RAC)环境中的一种网络设备。它主要用于在集群节点之间进行通信,以确保集群的高可用性和故障切换能力。以下是…

Leetcode 快乐数

算法思想: 这段代码的目的是判断一个正整数是否是 快乐数(Happy Number)。根据题目要求,快乐数定义如下: 对于一个正整数,不断将它每个位上的数字替换为这些数字平方和。重复这个过程,如果最终…

使用 Vue 和 Create-Vue 构建工程化前端项目

目录 前言1. 工程化的意义与 Vue 的生态支持2. 搭建 Vue 工程化项目2.1 环境准备2.2 使用 create-vue 创建项目2.2.1 初始化项目2.2.2 安装依赖2.2.3 本地运行 3. Vue 项目的目录结构解析4. Vue 开发流程详解4.1 项目入口与根组件4.1.1 main.js 的作用4.1.2 App.vue 的结构 4.2…

【MySQL实战45讲笔记】基础篇——redo log 和 binlog

系列文章 基础篇——MySQL 的基础架构 目录 系列文章1. 重要的日志模块:redo log 和 binlog1.1 redo log1.2 binlog1.3 执行器和 InnoDB 引擎内部如何执行更新语句 1. 重要的日志模块:redo log 和 binlog 前面系统的了解了一个查询语句的执行流程&…