高并发!一个仿 12306 铁路购票项目!
大家好,我是 Java陈序员。现在出行,乘坐高铁可以说是十分方便。12306 作为一款全国通用的铁路购票体系,承受着这个天下上任何秒杀体系都无法逾越的 QPS, 上百万的并发再正常不外了!
今天,给大家介绍一个分布式、高可用的 12306 铁路购票开源项目。
关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。
项目介绍
12306 —— 一个基于 JDK17 和 SpringBoot3 实现的铁路购票体系,包括会员、购票、订单、支付和网关等服务。
项目旨在让学习者可以快速掌握分布式体系计划的技巧,项目中包含了缓存、消息队列、分库分表、计划模式等代码,通过这些代码可以全面了解分布式体系的焦点知识点。
体系提供了两种版本:
[*]SpringBoot 聚合服务版本:得当测试和部署,直接启动 aggregation-service 聚合服务和网关服务
[*]SpringCloud 微服务版本:得当学习微服务计划,可以分别启动支付、订单、用户、购票和网关服务
技术栈:
[*]Spring Boot
[*]SpringCloud Alibaba
[*]SpringCloud Gateway
[*]MyBatis-Plus
[*]Redisson
[*]RocketMQ
[*]ShardingSphere
[*]Vue
[*]Ant Design Vue
项目截图
[*]车票查询
https://chen-coding.oss-cn-shenzhen.aliyuncs.com/create-center/12306/img-20241201190210.png
[*]购买车票
https://chen-coding.oss-cn-shenzhen.aliyuncs.com/create-center/12306/img-20241201190252.png
[*]车票付款
https://chen-coding.oss-cn-shenzhen.aliyuncs.com/create-center/12306/img-20241201190307.png
[*]个人信息
https://chen-coding.oss-cn-shenzhen.aliyuncs.com/create-center/12306/img-20241201190329.png
[*]乘车人
https://chen-coding.oss-cn-shenzhen.aliyuncs.com/create-center/12306/img-20241201190343.png
[*]订单管理
https://chen-coding.oss-cn-shenzhen.aliyuncs.com/create-center/12306/img-20241201190354.png
快速开始
环境搭建
[*]环境依赖
[*]JDK17+
[*]SpringBoot3
[*]MySQL5.7
[*]Redis
[*]RocketMQ
[*]Nacos
[*]Node.js
[*]代码下载
git clone https://github.com/nageoffer/12306.git
[*]代码目次结构
.
├── console-vue -- # 前端工程
├── dependencies -- # 依赖管理
├── frameworks -- # 后端核心框架
├── resources -- # 数据库资源
├── services -- # 后端服务
└── tests -- # 测试工程
[*]初始化数据库
1、创建数据库 12306
CREATE DATABASE `12306` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;2、执行 /resources/db/12306-{springboot or springcloud}.sql 初始化数据库
3、执行 /resources/data/12306-{springboot or springcloudxx}.sql 初始化数据
后端项目
1、将项目以 Maven 的形式导入到 IDEA 中
2、后端服务目次结构
services
├── aggregation-service-- # 聚合服务
├── gateway-service -- # 网关服务
├── order-service -- # 订单服务
├── pay-service -- # 支付服务
├── ticket-service -- # 购票服务
└── user-service -- # 用户服务聚合服务将订单、支付、用户以及购票体系进行了聚合,启动一个服务即可享受 12306 购票体系全部功能,减少当地启动内存压力以及服务器部署压力。
3、修改 services/aggregation-service/src/main/resources/application.yaml 配置文件中的 Redis、Nacos、RocketMQ 的连接信息
4、修改 services/aggregation-service/src/main/resources/shardingsphere-config-dev.yaml 配置文件中的 MySQL 的连接信息
5、运行 org.opengoofy.index12306.biz.aggregationservice.AggregationServiceApplication 主启动类,启动聚合服务
6、修改 services/gateway-service/src/main/resources/application.yaml 配置文件中的 Nacos 的连接信息
7、运行 org.opengoofy.index12306.biz.gatewayservice.GatewayServiceApplication 主启动类,启动网关服务
前端项目
1、进入前端工程项目
cd console-vue2、安装依赖
npm i3、启动服务
npm run serve4、浏览器访问
http://localhost:8080/默认用户名密码:admin/admin123456
12306 这个开源项目与其他传统“烂大街”的商城、外卖项目相比,业务更复杂、实现难度更大,更加具有学习意义。
如果你想更加体系地、深入地学习分布式体系,可以试试 12306 这个开源项目~
项目地址:https://github.com/nageoffer/12306最后
保举的开源项目已经收录到 GitHub 项目,接待 Star:
https://github.com/chenyl8848/great-open-source-project大概访问网站,进行在线浏览:
https://chencoding.top:8090/#/https://chen-coding.oss-cn-shenzhen.aliyuncs.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20240629100336.png
大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]