个人系统架构技术分享
架构技术
技术 | 版本 | 说明 |
---|---|---|
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