# 互联网开发实践个人项目秒杀系统-Server **Repository Path**: kevin98st/webcourse_personal_2021_server ## Basic Information - **Project Name**: 互联网开发实践个人项目秒杀系统-Server - **Description**: 服务器上的配置,包括docker部署等 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-10-28 - **Last Updated**: 2022-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 互联网开发实践个人项目秒杀系统-Server #### 介绍 服务器上的配置,包括docker部署等。 #### 软件架构 nodejs作为前端服务器渲染页面、路由转发请求; jwt提供token登陆验证服务; mysql里面将userdb和dormdb分开; login\register\dormlist\select接口分开各自作为一个容器对外提供api。 其中select接口又分为create_order创建订单和handle_order处理订单两个服务, 创建订单服务与mysql之间加一层redis缓存数据库用于抗大量并发的选宿舍秒杀请求, 用户选宿舍的请求经过redis进行订单合法性验证之后扔进rabbit mq, 整个创建订单服务不直接与mysql连接,仅当redis中不存在数据时才访问mysql, 处理订单服务监听并消费rabbitmq,也使用该redis数据库查询用户信息用于验证, 验证通过后实际在mysql中插入订单信息和执行选宿舍逻辑。 处理订单服务只有一个实例在运行,可以保证选宿舍过程中的数据一致性, 由于处理订单实际并发要求和实时性要求不高,所以单实例单线程可以完成任务。 redismaintain服务为定时任务,定时将mysql中的数据同步到redis中去。 docker-compose可以帮助你把项目部署起来。 #### 安装教程 ```bash --在本地创建run.sh文件,内容如下-- git clone https://gitee.com/kevin98st/webcourse_personal_2021_server.git cd webcourse_personal_2021_server/deploy/docker-compose docker-compose up -d --build --给文件加运行权限-- chmod 777 run.sh --一键部署-- ./run.sh --部署成功之后需要等待各个容器内的jar、mysql、node确实运行起来才能正常提供服务,大概需要等容器启动后一分钟左右-- ``` #### 使用说明 2021-11-26之后不再使用nginx服务,用nodejs作为前端服务器并隐藏接口; 为了调试使用,各个服务容器还是对外暴露了端口号,读者可以自己修改docker-compose.yml进行配置。 1. 部署成功以后,系统监听了80端口,浏览器直接输入ip(默认80端口)可以访问首页; 2. mysql的数据存储位置挂载到mysqldocker/data中,容器的重启不会导致数据的丢失。 #### 欢迎加入 一个人的力量是有限的,比如我的页面实在是太丑了,我没有写css的经验和精力, 欢迎帮我一起完善这个项目!