在线教育平台架构设计
Posted licbc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在线教育平台架构设计相关的知识,希望对你有一定的参考价值。
1. 目的
1.1. 目的
该架构设计主要针对在线教育平台建设过程中的核心需求进行设计,作为架构、设计、开发、测试、运维人员对系统的认识参考。
1.2. 名词解析:
系统:一个软件、一个平台,系统由各种个体组成,形成系统的整体能力
个体:子系统、模块、组件
架构:描述系统的组成个体、个体之间的关系以及个体之间协调运作的规则
框架:解决特定场景问题的规范,包含规则之上的基础功能,如:SrpingMVC解决MVC模式的问题;架构关注是结构,框架关注是规范
子系统:子系统和系统概念一样,都一由一系统个体组件
模块:由一系统个体组成,通过接口来向外提供一定能力的个体
组件:完成特定功能的个体
2. 总体方案
[总体方案需要从整体上描述方案的结构,其核心内容就是架构图,以及针对架构图的描述,包括模块或者子系统的职责描述、核心流程]
在线教育平台架构主要包含以下几方面
1. 课程在线购买,学员签约、课程学习、在线练题及考试、交流社区
2. 课程音视频的管理、存储、在线播放
3. 视频的直播
主要针对在线教育平台的复杂业务场景进行重点设计,当前识别到的复杂业务场景主要包含以下几方面
1. 在线教育PC端端,日常的登录、浏览课程、购买课程并不会形成太高的并发,而一些职业课程临时高前,可能在线练习、模拟考试业务中出现高并发场景,形成一波访问高峰。
2. 平台在直播课程时,会遇到几千人、几万人同时在线观看直播、评论互动的并发访问压力
3. 日常学员在线学习观看视频对服务器、网络带宽的压力
4. 在线教育平台客户、订单、学习数据作系统重要数据,必须保存数据存储安全和完整。
3. 架构总览
3.1. 产品架构
在线考试平台采用分层架构,分为上层应用、核心业务和技术支撑三个层次。
1. 上层应用包括运营管理平台、PC端、APP、小程序和H5端
2. 应用层包括基础在线教育基础业务及音视频直播、点播业务;
3. 技术支撑层采用微服务架构和Dev/Ops流程保证项目实施
3.2. 技术架构
3.3. 架构设计关键点
3.3.1. 应用架构设计
考虑在线教育本身业务复杂度及后续新业务、新模式的尝试,根据业务功能拆分成10个模块,在实现上采用微服务架构落地,后续随着业务的发展,再进行一步拆分。
3.3.2. 数据库架构设计
在线教育平台的数据主要包含学员、课程、订单、题库、考试、学习记录等数据,这些数据并不会占用多少存储,但这些核心业务数据对平台运营至关重要,一旦丢失可能生成平台信誉和运营产生重要影响,因为数据存储的可靠性最为重要。
3.3.3. 消息队列架构设计
服务之间的数据同步以及推送消息、发送短信、邮件等场景会使用到消息队列,需要设计消息队列生产端和消费端的高可靠性,解决消息队列的重复发送、重复消费、消息丢失等异常情况。
3.3.4. 缓存架构设计
课程的分类、热门课程、用户信息、登录会话以及微服务架构使用到的分布式锁等场景需要使用到缓存,缓存架构需要设计高可靠保障措施。
3.3.5. 核心业务流程
4. 架构演进规划
[通常情况下,规划和设计的需求比较完善,但如果一次性全部做完,项目周期可能会很长,因此可以采取分阶段实施,即:第一期做什么、第二期做什么,以此类推]
第一期实现
采用基础微服务架构+mysql集群+Redis缓存架构+RocketMQ集群+直播服务满足平台基础需求
第二期实现
第二阶段根据业务发展进行服务拆分、系统监控、日志平常、链路检测等环境的完善
第三期
第三阶段根据业务发展特点进行优化、重构系统架构
以上是关于在线教育平台架构设计的主要内容,如果未能解决你的问题,请参考以下文章