828华为云征文|华为云Flexus云服务器X实例部署 即时通讯IM聊天交友软件——高性能服务器实现120W并发连接

营运版的即时通讯IM聊天交友系统:特点可发红包,可添加多条链接到用户网站和应用,安卓+苹果APP+PC端+H5四合一

后端开发语言:PHP,
前端开发语言:uniapp混合开发。
集安卓+苹果APP+PC端+H5四合一APP源码,但本源码服务不提供ios签名、软著申请、上架服务等。
socket推送:GateWayWorker(支持分布式部署,高并发,抗压能力强,未采用第三方付费推送服务)
数据库:mysql
开发工具:hbuiderX,phpstorm
服务器操作系统: Linux Centos 7.x(不支持unbutun)
软件环境: php 5.6 +Apache2.4(或nginx)+MySQL5.6 (推荐使用宝塔)
第三方插件:FFmpeg
无需用到任何第三方付费api

搭配华为云FlexusX使用,性能高达:
同时在线人数受限于服务器内存,一般24G内存服务器可以支持大概120W并发连接。
用户活跃度受限于服务器cpu处理能力,一台24核服务器可以达到45W每秒的吞吐量

即时通讯IM聊天交友软件功能介绍:

一、有群聊、私聊、朋友圈、可以发送文字、语音、视频、图片、表情、红包,转账等。消息可以撤回
二、群组可以设置管理员、可以禁言、踢人,可设置是否可查看用户信息,可@用户、可发群公告等
三、支持扫码入群,可设置好友备注、群名片、消息置顶、消息免打扰、可以邀请好友直接进群等
四、拥有代理功能,支持关键词屏蔽,vip功能,签到功能,支持消息离线推送(ios无需上架,但是签名需支持push,通过APN推送,Android需要上应用商店,否则无法实现离线推送,下单一定要了解好离线消息相关流程)
五、APP端历史聊天记录、图片以及前端程序缓存在本地,页面秒开,支持云端同步聊天记录,断网状态页面之间也可以流畅切换

1、访问华为云官网,注册一个华为云账号

在这里插入图片描述

2、选择华为云Flexus云服务器X实例

https://www.huaweicloud.com/product/flexus-x.html
在这里插入图片描述

3、选择配置:

计费模式:根据需求选择包年/包月或按需计费模式。
区域与可用区:选择离您或您的用户群体较近的区域和可用区,以降低延迟并提高访问速度。
实例规格:根据业务负载和应用场景,选择合适的实例规格。华为云提供了多个固定规格套餐供选择,同时支持自定义规格,以满足不同需求。
系统镜像:从公共镜像中选择所需的操作系统镜像,或上传自定义镜像进行安装。
存储配置:根据需求选择合适的存储类型和大小,如SSD或SAS存储等。
网络与安全组:配置私有IP地址、公网IP地址(如需)以及安全组规则,确保云服务器的网络安全。

在这里插入图片描述

4、确认配置与购买:

在确认无误后,点击“立即购买”或“下一步”按钮,进入订单确认页面。
在订单确认页面中,仔细核对所选配置和价格等信息,确保无误后点击“提交订单”按钮。
根据提示完成支付流程,支付成功后即可等待云服务器的创建和交付。

5、远程连接SSH:

使用CloudShell、VNC、Xshell等工具远程连接到云服务器,进行后续的配置和操作。
建议通过公私钥对的方式连接,以提高安全性。

在这里插入图片描述

6、IM即时通讯系统环境配置要求

服务器操作系统: Linux Centos 7.x(不支持unbutun)

软件环境: php 5.6 +Apache2.4(或nginx)+MySQL5.6 (推荐使用宝塔)

开始安装环境

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

7、安装第三方插件:FFmpeg

ffmpeg安装(处理上传视频压缩剪辑出第一帧作为封面)
会调用系统system 执行命令行进行处理视频 部分源码扫描软件会认为是后门 可放心使用

./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-ffplay
sudo make -j 4
sudo make install

编译成功,那么将会在安装路径/user/local/ffmpeg下出现如下子目录
在这里插入图片描述

修改mongodb 端口为2702(端口任意)
开放2702 9393 1239端口

php7.3安装扩展fileinfo redis Swoole4 mongodb 删除全部禁用函数

app/im/common/controller/ActionBegin1.php 修改GatwayWork服务地址
config/database.php 修改数据库信息
socket/app/im/common/controller/Main.php 修改数据库信息
socket/app/im/common/controller/Config.php 修改IP

8、导入sql 文件

安装 MongoDB
在这里插入图片描述

需要 navicat 创建数据库 im 并导入合集
或者
把MongoDB文件夹上传到 /www/wwwroot
解压 设置权限777
进入目录/www/wwwroot/mongodb/im点宝塔上的终端
输入
mongorestore -d im /www/wwwroot/mongodb/im
然后软件商店mongodb端口改2702 保存 重启

上传后端到服务器

源码上传到/www/wwwroot/这里解压
网站目录:/www/wwwroot/im
运行目录/public
TP伪静态,防跨域关掉

location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php/$1 last;
break;
}
}location /h5{if (!-e $request_filename) {rewrite ^/(.*) /h5/index.html last;break;}}

安装yasm
根目录/opt/yasm-1.3.0
解压 设置权限777
点宝塔上的终端
输入

./configure make && make install
./configure && make && make install

前端H5 app 使用hbuiderx 进行打包
打包后的h5 可以上传到public/h5 文件夹里
在这里插入图片描述

打包后的app 可以上传到public/app 文件夹里 替换1.apk

pc 端 编译成H5 再打包exe
打包后的pc的h5和exe 可以上传到public/pc 文件夹里

在这里插入图片描述
性能参考:

同时在线人数受限于服务器内存,一般24G内存服务器可以支持大概120W并发连接。

用户活跃度受限于服务器cpu处理能力,一台24核服务器可以达到45W每秒的吞吐量
在这里插入图片描述

import store from './store/';import _get from './_get';import _action from './_action';export default {/** 验证token */checkToken(res) {if(res.err){_action.checkFail();} else {/** 设置为登陆状态 */store.commit('set',{ k:'socket_state',v:1 });/** 获取基础数据 */_get.base();}},/** 下线 */offline(res){uni.showModal({content: '你的账号在另一客户端登陆,如果不是你本人操作,请修改你的密码',success(){_action.checkFail();},});},/** 获得会话列表 */getChatList(){_get.getChatList();},/** 获得好友列表 */getFriendList(){_get.getFriendList({ up: 1});},/** 新好友提醒 */newFriend(data){_action.playVoice('/static/voice/friend.mp3');let num = store.state.new_friend_tips_num + (data.num * 1);store.commit('set',{ k:'new_friend_tips_num',v:num });_action.setStatusTips();},timeData(data){//console.log(data);},/** 接收新消息 */chatData(data){let chat_data = store.state.page_data.chat_data,msg_reader_num = 1;if(chat_data[data.list_id]){// 如果在与对方的对话界面,更新这个对话的阅读(即反馈接收状态)if(store.state.page_data.message_query_list_id == data.list_id && store.state.user_info.id != data.data.msg.user_info.uid){_action.updataNoReader(data.list_id);msg_reader_num = 0;}store.state.page_data.chat_data[data.list_id].list.push(data.data);}//console.log(data);/** 更新对话列表数据 */		for(let i = 0,j = store.state.page_data.chat_list.length;i < j;i ++){if(store.state.page_data.chat_list[i].list_id == data.list_id){let last_msg;switch(data.data.msg.type * 1){case 0:last_msg = data.data.msg.content.text;break;case 1:/** 语音 */last_msg = '[语音]';break;case 2:/** 图片 */last_msg = '[图片]';break;case 3:/** 视频 */last_msg = '[视频]';break;case 4:/** 文件 */last_msg = '[文件]';break;case 5:/** 红包 */last_msg = '[红包]';break;default:/** 未知消息类型 */last_msg = '[未知]';break;}store.state.page_data.chat_list[i].last_msg = last_msg;store.state.page_data.chat_list[i].no_reader_num += msg_reader_num;store.state.page_data.chat_list[i].time = data.data.msg.time;let action_list_data = store.state.page_data.chat_list[i];store.state.page_data.chat_list.splice(i,1);store.state.page_data.chat_list.unshift(action_list_data);break;}}/** 如果不是自己的消息,震动提示 */if(store.state.user_info.id != data.data.msg.user_info.uid){uni.vibrateLong();_action.playVoice('/static/voice/chat.mp3');}},/** 接收好友朋友圈动态提示 */circleTips(data){_action.playVoice('/static/voice/circle.mp3');store.commit('set',{ k:'no_reader_circle',v:1 });_action.setStatusTips();},/** 接收朋友圈好友回复/赞通知 */cricleChatTips(data){_action.playVoice('/static/voice/circle.mp3');let num = store.state.no_reader_circle_chat_num;num ++;store.commit('set',{ k:'no_reader_circle_chat_num',v:num });_action.setStatusTips();},/** 撤回消息 */deleteChat(data){let chat_data = store.state.page_data.chat_data;if(chat_data[data.list_id] && chat_data[data.list_id].list.length){for(let i = 0,j = chat_data[data.list_id].list.length;i < j;i++ ){if(chat_data[data.list_id].list[i].msg.id == data.msg_id){store.state.page_data.chat_data[data.list_id].list.splice(i,1);break;}}}},}

ios无需上架,但是签名需支持push,通过APN推送;Android需要上应用商店,否则无法实现离线推送,下单一定要了解好离线消息相关流程。

除以上配置,未用到任何第三方付费api,无需支付高昂的运营成本!

在这里插入图片描述

华为云Flexus X卓越的性能

柔性算力:华为云Flexus云服务器X实例基于用户业务负载动态和内存峰值画像,动态推荐规格,减少算力浪费,提升资源利用率。这种柔性算力的特性使得IM应用能够在高并发、大数据量的情况下依然保持流畅的运行状态。

大模型加持:华为云Flexus云服务器X实例配备了首创的大模型加持和智能全域调度技术,通过X-Turbo加速,常见应用性能最高可达业界同规格6倍。这意味着IM应用可以更快地处理消息、提供更快的响应速度,从而提升用户体验。

综上所述,华为云Flexus X云服务器X实例在安装搭建即时通讯(IM)聊天交友应用方面带来了诸多好处。这些好处不仅提升了应用的性能和安全性,还降低了使用成本并提供了高度的灵活性。因此,选择华为云Flexus云服务器X实例作为IM应用的运行环境是一个明智的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440565.html

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

相关文章

推理攻击-Python案例

1、本文通过推理攻击的方式来估计训练集中每个类别的样本数量、某样本是否在训练集中。 2、一种简单的实现方法&#xff1a;用模型对训练数据标签进行拟合&#xff0c;拟合结果即推理为训练集中的情况。 3、了解这些案例可以帮助我们更好的保护数据隐私。 推理攻击&#xff08;…

旋转花键高效运行关键之一

旋转花键是一种广泛应用于机械设备中的重要部件&#xff0c;具有传递扭矩、承受载荷和维持运动精度等功能&#xff0c;而旋转花键润滑脂则是确保其正常运作的关键因素之一。事实上&#xff0c;旋转花键润滑油的选择是一个综合性的过程&#xff0c;需要考虑多个因素以确保设备的…

图解Linux文件属性与目录配置

Linux的文件属性十分重要&#xff0c;与windows的文件属性有很大不同&#xff0c;Linux的文件增加了许多属性&#xff0c;如读写、连接数、文件拥有者及所属群组。如果一个文件属于一个群组&#xff0c;那么这个群组的成员就可以访问&#xff0c;其他的群组就不能访问&#xff…

Vue组件库Element-ui

Vue组件库Element-ui Element是一套为开发者、设计师和产品经理准备的基于Vue2.0的桌面端组件库。Element - 网站快速成型工具 安装element-ui npm install element-ui # element-ui版本&#xff08;可以指定版本号引入ElementUI组件库&#xff0c;在main.js中添加内容得到&…

在线教育系统开发:SpringBoot技术实战

3系统分析 3.1可行性分析 通过对本微服务在线教育系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本微服务在线教育系统采用SSM框架&#xff0c;JAVA作为开…

汽车追尾为什么是后车的责任?

简单点说&#xff1a;因为人后面没有长眼睛。 结论 在汽车追尾事故中&#xff0c;通常情况下后车被认为是责任方的原因在于交通法规对驾驶安全标准的约定和实践中的责任识别原则。虽然追尾事故常见地被归责于后车&#xff0c;但具体判断并不是绝对的&#xff0c;仍需综合多种…

101. 对称二叉树【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路3.1 递归3.2 迭代 四、参考代码4.1 递归4.2 迭代 零、原题链接 101. 对称二叉树 一、题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 进阶&#xff1a;你可以运用递归和迭代两种方法解决…

【Flutter】- 核心语法

文章目录 知识回顾前言源码分析1. 有状态组件2. 无状态组件3. 组件生命周期4. 常用组件Container组件Text组件Image组件布局组件row colum stack expandedElevntButton按钮拓展知识总结知识回顾 【Flutter】- 基础语法 前言 Flutter是以组件化的思想构建客户端页面的,类似于…

Linux的环境变量

环境变量是告诉操作系统在实行命令时在哪个路径下去找对应的命令程序 1.env命令查看当前系统的环境变量 2.环境变量path 此时有三个路径,当操作某命令时会先向path里的路径查看输入的命令在不在这些路径下 eg:输入cd命令,会先在cd命令在不在这三个路径,在就直接执行,不用切换…

微软GraphRAG实战解析:全局理解力如何超越传统RAG

微软近日开源了新一代RAG框架GraphRAG&#xff0c;以解决当前RAG在大型语料库上全局理解问题。当前RAG主要聚焦于局部检索能力&#xff0c;即根据查询语句在向量库中匹配部分知识&#xff0c;然后通过大型语言模型合成这些检索到的信息&#xff0c;生成一个自然流畅的回答。相信…

Python和C++胶体粒子三维残差算法模型和细化亚像素算法

&#x1f3af;要点 使用信噪比、对比度噪声比和点扩展函数量化实验数据&#xff0c;增强共聚焦显微镜成像。参考粒子跟踪算法&#xff1a;使用二维和三维径向模型细化亚像素。胶体粒子三维图形分割学习模型模拟检测球形胶体。使用网格搜索优化模型和归一化处理以避免光漂白。 …

UDP协议【网络】

文章目录 UDP协议格式 UDP协议格式 16位源端口号&#xff1a;表示数据从哪里来。16位目的端口号&#xff1a;表示数据要到哪里去。16位UDP长度&#xff1a;表示整个数据报&#xff08;UDP首部UDP数据&#xff09;的长度。16位UDP检验和&#xff1a;如果UDP报文的检验和出错&…

【深度强化学习】DDPG实现的4个细节(OUNoise等)

文章目录 前言一、论文内容简述创新点&#xff08;特点&#xff0c;与DQN的区别&#xff09;&#xff1a;可借鉴参数&#xff1a;细节补充&#xff1a; 二、细节1&#xff1a;weight_decay原理代码 三、细节2&#xff1a;OUNoise原理代码 四、细节3&#xff1a;ObsNorm原理代码…

Linux聊天集群开发之环境准备

一.windows下远程操作Linux 第一步&#xff1a;在Linux终端下配置openssh&#xff0c;输入netstate -tanp,查看ssh服务是否启动&#xff0c;默认端口22.。 注&#xff1a;如果openssh服务&#xff0c;则需下载。输入命令ps -e|grep ssh, 查看如否配有&#xff0c; ssh-agent …

openpnp - 单独用CvPipeLineEditor来调试学习图片识别参数

文章目录 openpnp - 单独用CvPipeLineEditor来调试学习图片识别参数概述笔记官方给出的单独启动CvPipeLineEditor的方法我自己环境单独启动CvPipeLineEditor的方法CvPipeLineEditor启动后的样子添加命令的方法删除不要的命令参数调整多个命令参数的执行顺序添加命令用来载入实验…

脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO

原文链接&#xff1a;CSDN-脉冲神经网络&#xff08;SNN&#xff09;论文阅读&#xff08;六&#xff09;-----ECCV-2024 脉冲驱动的SNN目标检测框架&#xff1a;SpikeYOLO Integer-Valued Training and Spike-Driven Inference Spiking Neural Network for High-performance …

02 nth_element 与第k小

题目&#xff1a; 方案一&#xff1a;sort排序 #include<bits/stdc.h> using namespace std;int main() {int n;int k;cin>>n>>k;int a[n]{0};for(int i0;i<n;i){cin>>a[i];}sort(a,an); cout<<a[k]<<endl;}方案二&#xff1a;…

第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024)

目录 重要信息 大会简介 组织单位 大会成员 征稿主题 会议日程 参会方式 重要信息 大会官网&#xff1a;www.icicml.org 大会时间&#xff1a;2024年11月22日-24日 大会地点&#xff1a;中国 深圳 大会简介 第三届图像处理、计算机视觉与机器学…

STM32 通用同步/异步通信

一、串行通信简介 CPU与外围设备之间的信息交换称为通信。基本的通信方式有并行通信和串行通信两种。STM32单片机提供了功能强大的串行通信模块&#xff0c;即通用同步/异步收发器&#xff08;USART&#xff09;。 1.串行通信 串行通信是数据字节一位一位地依次传送的通信方式。…

mysql单表查询·3

准备好表 create table product(id int primary key,name varchar(32),price double,category varchar(32) ); # 插入数据 INSERT INTO product(id,name,price,category) VALUES(1,联想,5000,c001); INSERT INTO product(id,name,price,category) VALUES(2,海尔,3000,c001); I…