大家好,我是 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
專案截圖
-
車票查詢
-
購買車票
-
車票付款
-
個人資訊
-
乘車人
-
訂單管理
快速開始
環境搭建
-
環境依賴
- 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/#/
大家的點贊、收藏和評論都是對作者的支援,如文章對你有幫助還請點贊轉發支援下,謝謝!