在线教育系统架构-程序员宅基地

技术标签: 架构设计  软件架构  

一  需求分析

1 背景

a 电脑普及,5G,带宽提升
b 优质教师资源分布不均
c 随时随地学习,封闭模式
d 做题,技巧,提分
e 疫情催化剂

2教育场景:
a 直播课,用户广,互动少
b 录播课,互动性差,课件可复制。
c AI互动课,录制+AI处理,思维,数学,编程领域
d 小班课,10人以内,沉浸感强
e 1对1课
f 双师课,线下加盟店常用模式,远程授课+线下辅导老师维持秩序,解答。10-30人

二 逻辑架构

 三 技术选型

1 架构设计需要考虑的几个方面:

性能:主要考虑访问频率,每个用户每天的访问次数。项目初始阶段用户的访问量并不大,如果考虑做运营推广,可能会迎来服务器访问量骤增,因此要考虑分布式部署,引入缓存
可扩展性:系统功能会随着用户量的增加以及多变的互联网用户需求不断地扩展,因此考虑到系统的可扩展性的要求需要使用微服务架构,引入消息中间件
高可用:系统一旦宕机,将会带来不可挽回的损失,因此必须做负载均衡,甚至是异地多活这类复杂的方案。如果数据丢失,修复将会非常麻烦,只能靠人工逐条修复,这个很难接受,因此需要考虑存储高可靠。我们需要考虑多种异常情况:机器故障、机房故障,针对机器故障,我们需要设计 MySQL 同机房主备方案;针对机房故障,我们需要设计 MySQL 跨机房同步方案。
安全性:系统的信息有一定的隐私性,例如用户的个人身份信息,不包含强隐私(例如玉照、情感)的信息,因此使用账号密码管理、数据库访问权限控制即可。
成本:视频类网站的主要成本在于服务器成本、流量成本、存储成本、流媒体研发成本,中小型公司可以考虑使用云服务器和云服务。
 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangbuji/article/details/120434557

智能推荐

Properties转换成Map_properties转map-程序员宅基地

文章浏览阅读1.2w次。Properties转换成Mapimport java.util.HashMap;import java.util.Map;import java.util.Properties;import java.util.Set;public class Test { public static void main(String args[]){ Properties prope_properties转map

抓紧收藏学习,新手小白,如何做好短视频自媒体?_在这个人人都是自媒体的时代,只有内容的吸引才能-程序员宅基地

文章浏览阅读165次。在这个人人都是自媒体的时代,每个人都可以通过自媒体展示自己,一部分人做自媒体的动力就是想展现自己好的一面,分享内容,既可以满足自己的心理需求,还能有不错的收入。还有一种人做短视频就是为了赚钱,刚开始需要学习很多东西,也并不是一上来就可以赚钱的。(多用点空闲时间,把它当成自己的一种兴趣爱好去做,只要你肯用心花时间去做,最终肯定会有不错的收益)很多新手小白在刚开始进入短视频行业中时,不知道该如何起步,今天大周就来给大家简单分析一下。无论你是兴趣爱好还是纯粹的想赚钱,刚开始都需要注意这几点:一、用适合自己_在这个人人都是自媒体的时代,只有内容的吸引才能

x264的哈达玛变换(hadamard)的实现和优化-程序员宅基地

文章浏览阅读1.2k次。hadamard 变换理论 很多网页都有介绍,我就不拷贝了,给两个链接。 下面的是harvey mudd college 的一个“计算机图像处理分析”课件中哈达玛变换的一个章节 (JASON GARRETT-GLASER x264的主开发就是在这个学校上过学阿。很棒的一个..._fast pseudo-hadamard transform

LNMP项目部署-程序员宅基地

文章浏览阅读2.7k次,点赞5次,收藏20次。LNMP项目部署介绍项目的生命周期策划:老板+产品+UI设计实施:前端开发(客户端页面)+后端开发(ava php python等)+测试上线:运维维护:运维结束运维工作内容项目策划,实施之初,进行准备工作,学习对应架构和方案服务器上搭建代码版本控制器为测试人员搭建测试环境部署项目上线项目后期维护分布式集群集群:多台服务器在一起作同样的事分布式 :多台服务器在一起作不同的事常用架构负债均衡LB高可用HA数据库主从复制M-S读写分离R-W缓存中_lnmp项目部署

Oracle EBS - What happening when executing adcfgclone.pl in DB Tier as well as Apps Tier?_adcrdb.sh文件下载-程序员宅基地

文章浏览阅读1.2k次。adcfgclone.pl - This script will performs the clone configuration in the target machine.During this configuration phase will reconfigure the copied instance after gathering the required information.ad_adcrdb.sh文件下载

ObjectARX编程--圆弧_objectarx pi-程序员宅基地

文章浏览阅读1.4k次。创建圆弧CCalculation.cppAcGePoint3d CCalculation::Pt2dTo3d(AcGePoint2d pt){ AcGePoint3d ptTemp(pt.x,pt.y,0); return ptTemp;}#include <math.h>double CCalculation::PI(){ return* at..._objectarx pi

随便推点

工作流调度器-程序员宅基地

文章浏览阅读194次。1. 工作流调度系统产生背景一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等。各个任务单元之间存在时间先后依赖关系。为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;2. 工作流调度实现方式简单的任务调度:直接使用linux的crontab来定义,但是缺点也是比较明显,无法设置依赖。复杂的任务调度:自主开...

Error: docker-ce-cli conflicts with 2:docker-1.13.1-209.git7d71120.el7.centos.x86_64_错误:docker-ce conflicts with 2:docker-1.13.1-209.gi-程序员宅基地

文章浏览阅读4.6k次。CentOS7中安装k8s:yum install kubernetes安装K8S出现如下错误提示:Error: docker conflictsError: docker-ce-cli conflicts with 2:docker-1.13.1-209.git7d71120.el7.centos.x86_64 You could try using --skip-broken to work around the problem You could try running: rpm -Va _错误:docker-ce conflicts with 2:docker-1.13.1-209.git7d71120.el7.centos.x86_

Mycat JVM appears hung: Timed out waiting for signal from JVM.-程序员宅基地

文章浏览阅读8.1k次。Mycat配置支持的JVM参数是支持1.8_x之前的版本,当JDK升级到1.8_x以后在大数据量操作的时候JVM内存的分配就会存在问题,我们需要做相应的调整以适应这种参数改变,JDK 1.8_x不支持Permgen 。参数需要做的调整为-XX:PermSize=64m -XX:MaxPermSize=128m 变成 -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m 否则在JDK 1.8_x中不生效。_jvm appears hung: timed out waiting for signal from jvm.

【计算机视觉算法岗面经】“吐血”整理:2019秋招资料_2019 计算机秋招-程序员宅基地

文章浏览阅读5.5w次,点赞162次,收藏693次。//2018/09/27兵荒马乱、浩浩荡荡的秋招终于差不多要结束了。秋招这段时间真是感慨很多,一时得意一时失意,还要平衡一不小心就来的心理落差。先写点废话吧,毕竟最近感受挺多的,在自己的博客里也不用顾忌措辞。强行给自己灌一波鸡汤~1、努力永远和收获成正比,即使这个比率很小。一直觉得自己没有特别的天赋,只能一点一点努力,而这点努力还经常被“比你优秀的人比你更努力”所击溃。但这又怎样呢,不努力..._2019 计算机秋招

Android 单元测试只看这一篇就够了-程序员宅基地

文章浏览阅读5.8k次,点赞7次,收藏29次。目录单元测试的目的以及测试内容本地测试1. 添加依赖,google官方推荐:2. 单元测试代码存储位置:3. 创建测试类:4. 运行测试用例:5. 通过模拟框架模拟依赖,隔离依赖:仪器化测试配置:例子:常用单元测试开源库1. Mocktio2. powermock3. Robolectric实践经验1. 代码中用到了TextUtil.isEmpty()的如何测试2. 隔离native方法3. 在内部new,不方便Mock4. 本地单_android 单元测试

java--Excel表数据导入数据库_javaexcel读取 easyui-程序员宅基地

文章浏览阅读388次。有时我们在日常开发中会要求把Excel中的数据导入我们的数据苦衷保存,所以我们可以自己封装一套方法1.前端HTML页面要求代码:<div class="pop_table"> <form id="importForm2" class="easyui-form" method="post" enctype="multipart/form-data">..._javaexcel读取 easyui