架構技術
技術 | 版本 | 說明 |
---|---|---|
CentOS | 7.9 | 操作系統 |
Amoeba | 負責MySQL讀寫分離 | |
NFS | 分布式存儲 | |
ISCSI | 塊存儲 | |
keepalived | 日志收集 | |
MySQL | 5.7 | 數據庫存儲 |
MinIO | 8.4.5 | 對象存儲 |
Kubernetes | 1.23.15 | 應用容器管理平臺 |
Redis | 7.0 | 分布式緩存 |
Elasticsearch | 7.17.3 | 搜索引擎 |
nacos | 3.3.4 | 服務注冊 |
后端技術
技術 | 版本 | 說明 |
---|---|---|
Spring Cloud | 2023.0.1 | 微服務框架 |
Spring Boot | 3.2.2 | 容器+MVC框架 |
JWT | 1.37.0 | 認證和授權框架 |
MyBatis | 3.5.14 | 數據庫持久層 |
EFK | 日志收集系統 | |
RabbitMQ | 3.10.5 | 消息隊列 |
前端技術
技術 | 說明 |
---|---|
Vue | 前端框架 |
Vue-router | 路由框架 |
JavaScript | 用于創建動態網頁 |
Element | 前端UI框架 |
html | 標記語言,用于定義網頁結構 |
css | 樣式表語言,用于控制網頁樣式 |
vue-element-admin | 項目腳手架參考 |
移動端技術
技術 | 說明 |
---|---|
Vue | 核心前端框架 |
Vuex | 全局狀態管理框架 |
uni-app | 移動端前端框架 |
luch-request | HTTP請求框架 |
功能并發量
pod | 功能 | 單用戶pv | 每分鐘并發量 | 高峰 | pod數量 |
---|---|---|---|---|---|
1 | 用戶登錄注冊 | 4 | 800 | 3200 | 18 5% |
2 | 選擇題庫 | 3 | 600 | 2500 | 14 4% |
3 | 每日打卡 | 2 | 400 | 1600 | 10 2.9% |
4 | 刷題練習 | 30 | 5800 | 23500 | 110 32% |
5 | 題目搜索 | 3 | 600 | 2400 | 14 4% |
6 | 視頻資源 | 2 | 300 | 1000 | 6 1.7% |
7 | 錯題診斷 | 3 | 600 | 2500 | 14 4% |
8 | 用戶排名 | 4 | 800 | 3400 | 18 5% |
9 | 會員中心 | 4 | 800 | 3400 | 18 5% |
10 | 在線直播 | 2 | 350 | 900 | 5 1.5% |
11 | 熱點快訊 | 4 | 800 | 3000 | 17 5% |
日活躍用戶 | 140000 | 61 | 11861 | 47444 | 244 |
一個節點 20個pod | 69000 |
總計資源:60核CPU,140GB內存 ,3主16node節點 k8s集群外10臺 =29臺 用的機房是第三方云機房是北京來廣營IDC數據中心 我們的項目就2個運維
1. 核心學習功能(高頻使用)
- 刷題練習:85%-90%
(用戶主要需求,高頻剛需) - 選擇題庫:80%-85%
(用戶選擇不同題庫進行針對性練習) - 題目搜索:70%-75%
(快速定位特定題目或知識點)
2. 用戶粘性功能(中頻使用)
- 每日打卡:50%-60%
(初期參與度高,長期堅持比例下降) - 視頻資源:45%-55%
(依賴內容質量,部分用戶偏好視頻學習) - 在線直擂(實時競賽):30%-40%
(活躍用戶參與,但非核心需求)
3. 輔助功能(低頻使用)
- 用戶排名:25%-35%
(激勵型功能,部分用戶關注排名競爭) - 熱點快訊:20%-30%
(資訊類內容,需與學習強相關才能提升使用率) - 會員中心:15%-25%
(涉及付費轉化,活躍付費用戶才會高頻訪問)
4. 基礎功能(一次性或低頻)
- 用戶登錄注冊:10%-15%(日常使用率)
(注冊后僅需偶爾重新登錄)
市場依據說明
- 核心功能主導:
類似App(如猿題庫、考蟲)數據顯示,刷題、選題庫等學習行為占比超80%,是用戶留存的關鍵。 - 打卡與社交功能:
教育類App中,打卡功能的平均堅持率約50%-60%(數據來源:易觀分析),排名功能活躍度依賴社區運營強度。 - 視頻資源差異大:
若視頻與題庫強綁定(如解析視頻),使用率可達50%以上;若為獨立課程,則可能低于40%。 - 付費與會員功能:
行業平均付費率約5%-15%,會員中心日常訪問率通常低于30%(數據參考:艾瑞咨詢)。
總結建議
- 優先優化核心功能(刷題、題庫、搜索),提升流暢度和題庫質量。
- 強化打卡激勵機制(如積分兌換),將使用率從50%提升至60%+。
- 視頻資源結合題目解析,避免與外部平臺(如B站)直接競爭。
- 簡化會員中心入口,通過精準推送提升付費轉化。
非功能并發量
pod | 功能 | 單用戶pv | 每分鐘并發量 | 高峰 | pod數量 |
---|---|---|---|---|---|
1 | Haproxy | 3000 | 17 | ||
2 | harbor | 8 | |||
3 | nacos | 8 | |||
4 | Nexus | 4 | |||
5 | sonar | 3 | |||
6 | jenkins | 4 | |||
7 | rabbitMQ | 10 | |||
8 | redis | 10 | |||
9 | gitlab | 4 | |||
10 | calico | 15 | |||
11 | prometheus | 12 | |||
總記 | 18468 | 95 | |||
一個節點 20個pod |
prometheus prometheus-operator node-exporter alertmanager
apiserver
服務器 8核16G
類別 | 具體內容 |
---|---|
前端技術 | vue3、html、JavaScript、scss、element plus |
服務架構 | Spring Cloud微服務架構 |
代理服務器 | Nginx |
分布式任務調度中心 | Xxl-Job |
注冊與發現中心/配置中心 | Nacos |
服務間調用 | OpenFeign |
網關 | Spring Cloud Gateway |
數據存儲 | MySQL |
數據庫持久層 | MyBatis/MyBatis-Plus |
緩存 | Redis |
消息隊列 | rabbitMQ |
搜索引擎 | ElasticSearch |
加密算法 | Bcrypt |
身份認證 | JWT |
代碼沙箱 | Docker |
對象存儲 | OSS |
短信服務 | 阿里云短信服務 |
| ---- | ---- |
| 防火墻 | 位于公網與內部網絡之間,起到安全防護作用。 |
| nginx + keepalived | 用于負載均衡和高可用性的服務器組合,接收來自公網的請求并分發到后端服務器。 |
| Tomcat集群 | 一組Tomcat服務器,用于處理Web請求,提供Web服務。 |
| Amoeba + mysql集群 | Amoeba是數據庫中間件,用于管理MySQL數據庫集群,提供數據庫服務和數據存儲,以及讀寫分離。 |
| EFK | 是Elasticsearch、Fluentd、Kibana的組合,用于日志收集、存儲和可視化分析。 |
| rabbitMQ | |
| 備份服務器 | 用于數據備份和恢復,保障數據的安全性和可靠性。 |
| jumpserver | 可能是運維管理平臺,運維人員通過它來管理和操作整個系統。 |
| Redis集群 | 分布式緩存系統,用于提高數據讀取速度,減輕數據庫壓力。 |
| zabbix | 監控系統,用于實時監控服務器和網絡設備的性能、狀態等信息。 |
| nfs | 網絡文件系統,提供文件共享服務。 |
用戶通過域名訪問公網IP,通過防火墻的DNAT策略訪問到LVS的VIP,根據LVS規則負載到相應節點。通過訪問Ingress-nginx svc 的NodePort 進入集群,根據Ingress規則負載到指定svc,再由svc自動生成的endpoint 負載清單調度到指定Pod,Pod由deployment 創建,根據應用的訪問量由HPA動態水平擴縮容,Pod存儲由阿里云對象存儲OSS來實現,在集群中安裝OSS-Provisioner插件并聲明sc以及pvc實現Pod的存儲,集群日志收集由helm部署EFK,集群監控由helm部署kube-prometheus-stack實現。MySQL和Redis數據庫部署在k8s集群外。
//拉取鏡像
docker pull quay.io/minio/minio
// 創建數據存儲目錄
mkdir -p ~/minio/data
// 創建minio
docker run
-p 9001:9000
-p 9090:9090
–name minio
-v ~/minio/data:/data
-e “MINIO_ROOT_USER=admin”
-e “MINIO_ROOT_PASSWORD=admin123456”
-d
quay.io/minio/minio server /data --console-address ":9090