LyEdu 技术栈与架构
编辑日期:2026-02-26
技术选型
LyEdu 项目采用了现代化的技术栈,以下是主要技术组件的选型:
前端技术
- 框架:Vue 3
- 语言:TypeScript
- UI 库:Element Plus
- 状态管理:Pinia
- 路由:Vue Router
- 构建工具:Vite
- HTTP 客户端:Axios
- 图表库:ECharts
- 移动端:uni-app x
后端技术
- 框架:Spring Boot 4
- 语言:Java 17
- 数据库:PostgreSQL
- 缓存:Redis
- 认证:JWT + Feishu OAuth
- ORM:MyBatis-Plus
- API 文档:SpringDoc OpenAPI
部署与运维
- 容器化:Docker
- 编排:Docker Compose
- CI/CD:GitHub Actions
- 监控:Prometheus + Grafana
系统架构
LyEdu 采用分层架构设计,主要包括以下层次:
1. 前端层
- PC 端:基于 Vue 3 + TypeScript + Element Plus 的单页应用
- 移动端:基于 uni-app x 的跨平台应用
- 前端公共组件:可复用的 UI 组件和业务组件
2. API 层
- RESTful API:提供标准化的接口
- 认证授权:基于 JWT 和 Feishu OAuth 的认证机制
- 请求处理:参数校验、日志记录、异常处理
3. 业务逻辑层
- 服务层:封装核心业务逻辑
- 领域模型:基于 DDD (Domain-Driven Design) 的领域模型
- 业务规则:课程管理、学习跟踪、考试评估等业务规则
4. 数据访问层
- 数据持久化:与数据库的交互
- 缓存策略:热点数据缓存
- 数据校验:数据完整性和一致性校验
5. 基础设施层
- 配置管理:环境配置和应用配置
- 日志管理:系统日志和业务日志
- 监控告警:系统运行状态监控
- 第三方集成:Feishu 集成、文件存储等
技术特点
1. 前后端分离
- 前端和后端完全分离,独立开发和部署
- 使用 RESTful API 进行通信
- 支持多端应用(PC 端和移动端)
2. 微服务架构
- 采用微服务架构,服务之间通过 API 通信
- 支持服务的独立部署和扩展
- 提高系统的可维护性和可扩展性
3. 领域驱动设计
- 采用 DDD (Domain-Driven Design) 思想
- 构建清晰的领域模型和业务边界
- 提高代码的可读性和可维护性
4. 多平台支持
- 支持 PC 端和移动端访问
- 移动端采用 uni-app x,支持 iOS、Android 和小程序
5. 第三方集成
- 集成 Feishu (Lark) 登录和地址簿同步
- 支持多种文件存储方案
- 提供开放 API,支持与其他系统集成
技术架构图
+------------------------------------------+
| 前端应用 |
| Vue 3 + TypeScript + Element Plus |
| (PC 端) |
+------------------------------------------+
|
+------------------------------------------+
| 前端应用 |
| uni-app x (移动端) |
+------------------------------------------+
|
+------------------------------------------+
| API 网关 |
| 认证授权、请求路由、限流熔断 |
+------------------------------------------+
|
+-------------------+----------------------+
| | |
+---------+---------+ +------------+
| | | | |
+---------v---------+ v v
| 课程管理服务 | 用户服务 学习跟踪服务
+------------------+----------------------+
| | |
+------------------+----------------------+
|
+------------------------------------------+
| 数据存储 |
| PostgreSQL + Redis + 文件存储 |
+------------------------------------------+
|
+------------------------------------------+
| 第三方集成 |
| Feishu (Lark) + 其他系统 |
+------------------------------------------+技术栈选择理由
前端技术选择
- Vue 3:响应式框架,性能优异,生态成熟
- TypeScript:类型安全,提高代码质量和开发效率
- Element Plus:组件丰富,文档完善,适合企业级应用
- uni-app x:跨平台开发,一套代码多端运行
- Vite:快速的构建工具,提升开发体验
后端技术选择
- Spring Boot 4:Java 生态的主流框架,稳定性好,生态丰富
- Java 17:长期支持版本,提供现代化的语言特性
- PostgreSQL:功能强大的开源关系型数据库,支持复杂查询和事务
- Redis:高性能缓存,适合存储会话和热点数据
- MyBatis-Plus:简化 MyBatis 开发,提高开发效率
部署与运维选择
- Docker:容器化部署,简化环境配置
- Docker Compose:多容器应用编排,方便本地开发和测试
- GitHub Actions:自动化 CI/CD 流程,提高开发效率
- Prometheus + Grafana:监控系统运行状态,及时发现问题
技术挑战与解决方案
1. 多端适配
- 挑战:不同设备和屏幕尺寸的适配
- 解决方案:使用响应式设计,针对不同端优化 UI
2. 性能优化
- 挑战:大量课程内容和视频资源的加载性能
- 解决方案:使用缓存策略,优化资源加载,采用懒加载技术
3. 安全性
- 挑战:保护用户数据和系统安全
- 解决方案:实现多层次的安全防护,包括认证、授权、加密等
4. 可扩展性
- 挑战:系统需要支持不断增长的用户和内容
- 解决方案:采用微服务架构,支持水平扩展
5. 第三方集成
- 挑战:与 Feishu 等第三方系统的集成
- 解决方案:使用标准化的 API,实现松耦合的集成方式
未来技术规划
1. 人工智能应用
- 引入 AI 辅助教学,提供个性化学习推荐
- 开发智能题库和自动评分系统
- 实现智能客服,解答用户疑问
2. 大数据分析
- 构建学习行为分析系统,提供数据洞察
- 开发教学效果评估模型,优化教学策略
- 实现预测性分析,提前识别学习风险
3. 云原生技术
- 迁移到云原生架构,提高系统的弹性和可靠性
- 使用 Kubernetes 进行容器编排
- 采用 Serverless 技术,降低运维成本
4. 5G 应用
- 利用 5G 网络的高带宽和低延迟,提供更好的视频学习体验
- 开发基于 5G 的实时互动教学功能
