1
头图

大家好,我是 Java陈序员

现在出行,乘坐高铁可以说是十分方便。12306 作为一款全国通用的铁路购票系统,承受着这个世界上任何秒杀系统都无法超越的 QPS, 上百万的并发再正常不过了!

今天,给大家介绍一个分布式、高可用的 12306 铁路购票开源项目。

关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。

项目介绍

12306 —— 一个基于 JDK17SpringBoot3 实现的铁路购票系统,包括会员、购票、订单、支付和网关等服务。

项目旨在让学习者可以快速掌握分布式系统设计的技巧,项目中包含了缓存、消息队列、分库分表、设计模式等代码,通过这些代码可以全面了解分布式系统的核心知识点。

系统提供了两种版本:

  • SpringBoot 聚合服务版本:适合测试和部署,直接启动 aggregation-service 聚合服务和网关服务
  • SpringCloud 微服务版本:适合学习微服务设计,可以分别启动支付、订单、用户、购票和网关服务

技术栈

  • Spring Boot
  • SpringCloud Alibaba
  • SpringCloud Gateway
  • MyBatis-Plus
  • Redisson
  • RocketMQ
  • ShardingSphere
  • Vue
  • Ant Design Vue

项目截图

  • 车票查询
  • 购买车票
  • 车票付款
  • 个人信息
  • 乘车人
  • 订单管理

快速开始

环境搭建

  • 环境依赖

    • 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-vue

2、安装依赖

npm i

3、启动服务

npm run serve

4、浏览器访问

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/#/

大家的点赞、收藏和评论都是对作者的支持,如文章对你有帮助还请点赞转发支持下,谢谢!


Java陈序员
75 声望11 粉丝