前言
自己之前分享了分布式websocket的视频有同学去fork项目了,自己启动一下更方便理解项目嘛。然后把项目启动需要的东西全部梳理出来。支持群聊单聊,表情包以及发送图片。 支持消息可靠,消息防重,消息有序。同时基础架构有分布式权限,分布式唯一id,分布式websockt, 分布式事务等常见的分布式技术。
已经分享的文章
git项目地址 【IM即时通信系统(企聊聊)】点击可跳转
分布式websocket即时通信(IM)系统构建指南【第七期】
分布式websocket即时通信(IM)系统保证消息可靠性【第八期】
分布式websocket IM聊天系统相关问题问答【第九期】
什么?websocket也有权限!这个应该怎么做?【第十期】
分布式ID是什么,以美团Leaf为例改造融入自己项目【第十一期】
IM聊天系统为什么需要做消息幂等?如何使用Redis以及Lua脚本做消息幂等【第12期】
微信发送一条消息经历哪些过程。企业微信以及钉钉的IM架构对比【第13期】
微信群为什么上限是500人,IM设计系统中的群聊的设计难点【第14期】
【分布式websocket】RocketMQ发送消息保证消息最终一致性需要做哪些处理?【第15期】
【分布式websocket】群聊中的各种难点以及解决推拉结合【第16期】
【分布式webscoket】未读消息如何设计?解决缓存与数据库数据一致性!推送未读消息流程【第17期】
IM系统客户端消息存储在手机电脑浏览器分别存储在什么地方?对消息加密策略?如何保证服务端消息和客户端消息一致性【第18期】
【分布式websocket 】前端vuex管理客户端消息crud!使用localStorage来存储【第19期】
sql脚本
yan-v3.sql 是其中涉及到的表结构。
表结构主要是yan_im开头的表。sys开头的主要是用户中心的模块。主要使用他来进行用户登录和注册。
每个表的大概作用
leaf_allc 是美团leaf的表。用于生成分布式唯一id。
用户中心使用的用户表为sys_user表。注册的用户在这个里面;
yan_im_user 存储着用户信息。
聊天消息主要存储在yan_im_user_chat这张表里面。
前置东西
Naocs,Redis,RocketMQ Mysql8 Maven npm
如图所示,主要要安装Naocs,Reids和Rocketmq。有了这三个中间件。就可以启动项目了。
前端
需要 npm run serve 来运行:
后端需要启动的服务;
后台需要至少四个服务。
文件服务需要使用到阿里云oss配置,需要自己去阿里云申请。但是这个服务也不影响一些基础的聊天消息发送服务。
nacos
GitHub的Release下载页:https://github.com/alibaba/nacos/releases
下载 安装 然后改为单击启动
startup.cmd -m standalone这样子单击启动一下。
rocketmq
nameserve的地址。9876.。然后broker的地址一般默认的是10911;
下载地址加粗了
1.下载和解压RocketMQ:
下载最新的稳定版本,例如 rocketmq-all-4.9.2-bin-release.zip。
https://rocketmq.apache.org/download/
将ZIP文件解压缩到一个无中文字符的目录,如 D:\RocketMQ。
2. 配置环境变量:
右键点击“此电脑” > “属性” > “高级系统设置” > “环境变量”。
如果不存在,新建系统变量 JAVA_HOME,值设为Java的安装路径,例如 C:\Program Files\Java\jdk1.8.x_xxx。
如果不存在,新建系统变量 ROCKETMQ_HOME,值设为RocketMQ的解压目录,例如 D:\RocketMQ。
在系统变量 Path 中,添加 %JAVA_HOME%\bin 和 %ROCKETMQ_HOME%\bin。
3. 创建目录:
在 D:\RocketMQ 目录下创建 logs 和 store 目录。
在 store 目录下创建 commitlog、consumequeue、index 和 slowmsglog 子目录。
4. 修改启动脚本:
打开 D:\RocketMQ\bin 目录下的 mqnamesrv.cmd 和 mqbroker.cmd 文件。
在 mqnamesrv.cmd 中,找到 set NAMESRV_PORT=9876 和 set JAVA_OPT=-Drocketmq.namesrv.logdir=%ROCKETMQ_HOME%\logs,确保端口和日志目录正确。
在 mqbroker.cmd 中,找到 set BROKER_PORT=10911 和 set JAVA_OPT=-Drocketmq.store.root.dir=%ROCKETMQ_HOME%\store,设置端口和存储目录。根据需要调整JVM内存参数,例如 set JAVA_OPT=-Xms1g -Xmx1g %JAVA_OPT%。
5. 启动NameServer:
打开命令提示符,切换到 D:\RocketMQ\bin 目录,运行 mqnamesrv.cmd。
6. 启动Broker:
在同一个命令提示符窗口中,运行 mqbroker.cmd -n localhost:9876。这将启动一个单节点的Broker,并自动注册到NameServer。
7. 验证部署:
运行 mqadmin 命令,如 D:\RocketMQ\bin\mqadmin.bat topicList -n localhost:9876,检查是否能列出默认的Topic。
rocketmq控制台
为rocketmq-console
地址
https://github.com/apache/rocketmq-externals
修改rocketmq-console\src\main\resources\application.properties
启动项目
直接启动:
mvn spring-boot:run
先打成jar包再启动:
mvn clean package -Dmaven.test.skip=true
java -jar target/rocketmq-console-ng-1.0.0.jar
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_41983685/article/details/124952445
中途有遇到问题 端口被占用
一、开始---->运行---->cmd,或者是window+R组合键,调出命令窗口
二、输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是9080,首先找到它。
三、查看被占用端口对应的PID,输入命令:netstat -aon|findstr “9080”,【引号可以不写】,回车,记下最后一位数字,即PID,这里是2720。
四、继续输入tasklist|findstr “13280”,回车,查看是哪个进程或者程序占用了9080端口,结果是:DownloadSDKServer.exe
五、我们也打开任务管理器,切换到详细信息,在PID一列查看13280对应的进程是谁,如下图:
六、结束该进程:在任务管理器中选中该进程点击”结束进程“按钮,或者是在cmd的命令窗口中输入:taskkill /f /t /im DownloadSDKServer.exe
原文链接
端口占用