本项目由本人原创,仅供学习交流,由于本人是一个JAVA后端工程师,所以前端写的很菜,大佬勿喷。
- 项目演示地址
项目演示地址
注:因为项目环境较大,本人资金有限,自己的服务器只能跑起来一部分服务,所以借用了盆友的服务器,如果访问不到,那么就是我盆友给我停了,各位大佬可以自己搭建环境跑一下
- 首页展示及粒子效果展示
注:这里之所以要单独展示是因为上线后,因为环境原因,这个粒子效果没有了,我懒得调了,所以截个图
首页粒子效果展示视频
- 功能展示
功能展示
- 项目实现的功能
集成了Elasticsearch集群
2.聊天:消息的发送,接收,私聊,群聊,创建群聊,添加好友,好友验证,仿微信PC端实时刷新消息列表,
集成了WebScoket
3.留言:发送留言,查看留言列表,
集成RabbitMQ
4.用户管理:登录,注册
- 架构

文章图片
- 环境要求
1.本项目环境全部基于Docker
2.服务器内存必须大于4核8G
,因为本人的4核G就只能够搭建环境无法部署项目,最后使用了两台服务器
注:也可以多机部署,或者将集群配置降低为单机版
- 框架
Vue 2.0
HTML
CSS
ElementUI
后端:
-
SpringCloud Alibaba 2.2.6.RELEASE
-
Nacos 2.0.3
集群3台主机
-
Sentinel 1.81
-
Seata 1.3.0
-
SpringCloud Hoxton.SR12
-
OpenFeign 2.2.9RELEASE
-
Gateway 2.2.9RELEASE
-
SpringBoot 2.3.12.RELEASE
-
MySQL 5.7
-
Mybatis Plus 3.4.3.4
-
Redis 3.2.1
-
Nginx 1.21.1
-
RabbitMQ 3.8.12
-
Elasticsearch 7.8.0
集群3台主机
- 【spring|SpringCloudAlibaba+Vue2.0搭建博客项目】
WebSocket 2.4.13
-
JWT
-
JDK 1.8
-
Docker
- 环境搭建及框架学习
Mybatis-plus初识
SpringCloud
SpringCloudAlibaba
Vue
Docker入门
Docker下安装mysql超详细步骤
Docker下安装Redis超详细步骤
Docker中部署SpringBoot项目
docker中搭建Nacos2.0.3集群并使用mysql存储数据
IDE搭建微服务项目
docker中搭建sentinel-1.8.1并将sentinel上配置的规则持久化到Nacos
Elasticsearch入门
Spring Data Elasticsearch集成SpringBoot 2.3.12.RELEASE
docker中使用docker-compose搭建Elasticsearch 7.8.0集群及安装IK分词器
ElasticSearch7.8.0+SpringBoot 2.3.12.RELEASE实现高亮搜索+排序+分页
Vue或html中使用L2Dwidget实现看板娘互动,对话框,语音,及Vue销毁看板娘
RabbitMQ入门
SpringBoot 2.3.12.RELEASE整合RabittMQ 3.8.12
Docker中搭建Seata1.3.0并整合SpringBoot 2.3.12.RELEASE+Nacos2.0.3
SpringCloud 项目中实现多模块共享配置类
SpringCloudAlibaba2.2.6.RELEASE集成Gateway并实现JWT鉴权
Docker下安装Nginx并部署Vue项目及接口
- 服务调用关系
文章图片
- 前端项目地址
blog-system
- 后端项目地址
personal-blog-system
- Nacos配置文件
文章图片
配置下载链接
- ES索引脚本
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"ID": {
"type": "text"
},
"title": {
"type": "text"
},
"content": {
"type": "text"
},
"createTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||epoch_millis"
},
"updateTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd'T'HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss||epoch_millis"
},
"status": {
"type": "integer"
},
"userInformationId": {
"type": "nested",
"properties": {
"ID": {
"type": "text"
},
"avatarLink": {
"type": "text"
},
"nickName": {
"type": "text"
}
}
}
}
}
}
- Mysql脚本
/*
Navicat Premium Data Transfer Source Server Type: MySQL
Source Server Version : 50739
Source Schema: personal_blog_system Target Server Type: MySQL
Target Server Version : 50739
File Encoding: 65001 Date: 13/09/2022 09:35:30
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_article_details
-- ----------------------------
DROP TABLE IF EXISTS `t_article_details`;
CREATE TABLE `t_article_details`(
`ID` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章标题',
`content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章内容',
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
`update_time` datetime(0) NOT NULL COMMENT '更新时间',
`status` int(1) NOT NULL DEFAULT 0 COMMENT '文章状态;0-草稿,1-已发布',
`user_information_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '作者ID;关联用户ID',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_chat_record
-- ----------------------------
DROP TABLE IF EXISTS `t_chat_record`;
CREATE TABLE `t_chat_record`(
`ID` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`sender_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '发送者的用户ID',
`recipient_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '接收者的用户ID',
`message_content` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '消息内容',
`send_time` datetime(0) NOT NULL COMMENT '发送时间',
`read_status` int(1) NOT NULL COMMENT '读取状态;0-未读,1-已读',
`type` int(1) NOT NULL COMMENT '消息类型;0-私聊,1-群聊',
`is_initialization_content` int(1) NOT NULL DEFAULT 0 COMMENT '是否为初始化内容;0-否,1-是',
PRIMARY KEY (`ID`) USING BTREE,
INDEX `sender_id_index`(`sender_id`) USING BTREE,
INDEX `recipient_id_index`(`recipient_id`) USING BTREE,
INDEX `type_index`(`type`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_friends_relationship
-- ----------------------------
DROP TABLE IF EXISTS `t_friends_relationship`;
CREATE TABLE `t_friends_relationship`(
`ID` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户ID,关联用户ID',
`friends_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '好友ID,关联用户ID',
`apply_whether_adopt` int(1) NOT NULL COMMENT '是否通过了好友申请;0-否,1-是',
`add_time` datetime(0) NOT NULL COMMENT '添加好友时间',
PRIMARY KEY (`ID`) USING BTREE,
UNIQUE INDEX `user_id`(`user_id`, `friends_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_group_info
-- ----------------------------
DROP TABLE IF EXISTS `t_group_info`;
CREATE TABLE `t_group_info`(
`ID` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`group_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '群聊名称',
`group_number` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '群号',
`group_avatar_img` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '群头像链接',
`create_user_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建用户ID',
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_leaving_a_message
-- ----------------------------
DROP TABLE IF EXISTS `t_leaving_a_message`;
CREATE TABLE `t_leaving_a_message`(
`ID` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`commenter_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '留言者ID',
`recipient_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '接收者ID',
`read_status` int(1) NOT NULL DEFAULT 0 COMMENT '读取状态;0-未读,1-已读',
`content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '留言内容',
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
`type` int(1) NOT NULL COMMENT '留言类型;0-系统通知,1-私信',
`is_operation` int(1) NOT NULL COMMENT '是否需要操作;0-否,1-是,2-已操作',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_user_group_relationship
-- ----------------------------
DROP TABLE IF EXISTS `t_user_group_relationship`;
CREATE TABLE `t_user_group_relationship`(
`ID` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_information_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '关联用户ID',
`group_info_id` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '关联群聊ID',
`unread_quantity` int(255) NOT NULL DEFAULT 0 COMMENT '未读消息数量',
`join_time` datetime(0) NOT NULL COMMENT '加入时间',
PRIMARY KEY (`ID`) USING BTREE,
UNIQUE INDEX `user_information_id`(`user_information_id`, `group_info_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for t_user_information
-- ----------------------------
DROP TABLE IF EXISTS `t_user_information`;
CREATE TABLE `t_user_information`(
`ID` varchar(19) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`avatar_link` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头像地址',
`nick_name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户昵称',
`password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
`phone_number` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '手机号码',
`create_time` datetime(0) NOT NULL COMMENT '创建时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `t_user_information`(`ID`, `avatar_link`, `nick_name`, `password`, `phone_number`, `create_time`) VALUES ('1567812146469543930', 'https://img2.baidu.com/it/u=2548411639,1403134542&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400', '我们注定相遇', 'admin', '32312312', '2022-08-26 10:26:42');
-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log`(
`branch_id` bigint(20) NOT NULL COMMENT 'branch transaction id',
`xid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'global transaction id',
`context` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'undo_log context,such as serialization',
`rollback_info` longblob NOT NULL COMMENT 'rollback info',
`log_status` int(11) NOT NULL COMMENT '0:normal status,1:defense status',
`log_created` datetime(6) NOT NULL COMMENT 'create datetime',
`log_modified` datetime(6) NOT NULL COMMENT 'modify datetime',
UNIQUE INDEX `ux_undo_log`(`xid`, `branch_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'AT transaction mode undo table' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
- 微服务JAR镜像docker-compose.yml文件
version: "3"
services:
user-management-services:
container_name: user-management-services
image: user-management-services-1.0.jar:1.0
ports:
- "9001:9001"
networks:
- micr-net
restart: always
article-management-services:
image: article-management-services-1.0.jar:1.0
container_name: article-management-services
ports:
- "9002:9002"
networks:
- micr-net
restart: always
chat-management-services:
image: chat-management-services-1.0.jar:1.0
container_name: chat-management-services
ports:
- "9003:9003"
networks:
- micr-net
restart: always
message-board-services:
container_name: message-board-services
image: message-board-services-1.0.jar:1.0
ports:
- "9004:9004"
networks:
- micr-net
restart: always
gateway-service:
container_name: gateway-service
image: gateway-service-1.0.jar:1.0
ports:
- "9005:9005"
networks:
- micr-net
depends_on:
- user-management-services
- article-management-services
- chat-management-services
- message-board-services
restart: always
networks: #创建网络
micr-net:
推荐阅读
- #|「SpringCloud」08 Config分布式配置中心
- #|「SpringCloud」07 Gateway服务网关
- #|「SpringCloud」09 Bus消息总线
- 云原生|手写一个Kubernetes CNI网络插件
- java精品项目下载|java项目-第42期基于ssm项目源码小区管理物业系统
- mybatis|java计算机毕业设计-数字相册管理系统-源码+数据库+系统+lw文档+mybatis+运行部署
- Spring|Spring-Cloud-Alibaba笔记01-关于远程调用Dubbo
- spring|SSM基于微信小程序的外卖点餐系统 毕业设计-附源码2711704
- 瑞吉外卖|猿创征文|瑞吉外卖——移动端_笔记