# cy-code **Repository Path**: eddievim/cy-code ## Basic Information - **Project Name**: cy-code - **Description**: 一个具备高并发、高可用、高性能的选课系统 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: https://gitee.com/eddievim/cy-code - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 2 - **Created**: 2020-09-13 - **Last Updated**: 2022-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # cy-code ## CODE结构 - 前端模块`cs-ui-portal` - 数据库模块及其接口文档`sql_doc` - 后端模块`cy-code` - `course-selection-api`: 为前端提供`api`,`dubbo`服务消费者 - `course-selection-server` - `course-selection-interface`: `pojo`实体类与服务接口定义 - `course-selection-service`: 主要用于编写服务实现类及`Dao`接口,`dubbo`服务生产者 ## 技术选型 `SpringBoot` + `Dubbo` + `Redis` + `MySQL` + `Nginx` + `RabbitMQ` + `Thymeleaf` + `Vue.js` - SpringBoot:简化配置,易于开发 - Dubbo:项目以微服务的架构进行开发,易于后期新的模块功能的拓展 - Redis: - 缓存特性,用于存储课程信息,减轻高并发下的数据库的压力 - 队列特性,用于选课系统的削峰 - MySQL:数据库 - Nginx:负载均衡 - RabbitMQ:在选课高峰期,使用延时队列去修改数据库中的数据,遵循分布式Base理论中的最终一致性,减小数据库压力(可用Redis替换) - Thymeleaf:生成静态页面,减少渲染速度 - Vue.js ## 部署图 ## 高并发选课Core ### 思维导图 ![流程](https://tva1.sinaimg.cn/large/008eGmZEly1gmjre3wbqtj30u00v31hi.jpg) ### 大致流程 ![选课流程](https://tva1.sinaimg.cn/large/008eGmZEly1gmjsfzeox4j31bu0u0gqt.jpg) ### 核心类图 ![UML类图](https://tva1.sinaimg.cn/large/008eGmZEly1gmknyqef2qj312k0u07ax.jpg) ### 时序图 ![Core时序图](https://tva1.sinaimg.cn/large/008eGmZEly1gmkou3vh7bj31k10u078t.jpg) ## 设计文档 - [架构设计](https://gitee.com/eddievim/cy-code/wikis/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1) - [数据库设计](https://gitee.com/eddievim/cy-code/wikis/%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1) - [系统权限设计](https://gitee.com/eddievim/cy-code/wikis/%E7%B3%BB%E7%BB%9F%E6%9D%83%E9%99%90%E8%AE%BE%E8%AE%A1) - [高并发选课流程设计](https://gitee.com/eddievim/cy-code/wikis/%E9%AB%98%E5%B9%B6%E5%8F%91%E9%80%89%E8%AF%BE%E6%B5%81%E7%A8%8B%E8%AE%BE%E8%AE%A1) ## 系统部署 [环境部署文档](https://gitee.com/eddievim/cy-code/wikis/Course-Selection%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2)