惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Know Your Adversary
Know Your Adversary
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
H
Help Net Security
博客园 - Franky
博客园_首页
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
博客园 - 聂微东
小众软件
小众软件
宝玉的分享
宝玉的分享
美团技术团队
WordPress大学
WordPress大学
L
LINUX DO - 热门话题
S
Secure Thoughts
IT之家
IT之家
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
有赞技术团队
有赞技术团队
V
V2EX
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
量子位
G
GRAHAM CLULEY
Attack and Defense Labs
Attack and Defense Labs
Jina AI
Jina AI
罗磊的独立博客
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Tenable Blog
L
Lohrmann on Cybersecurity
S
SegmentFault 最新的问题
J
Java Code Geeks
Last Week in AI
Last Week in AI
Cyberwarzone
Cyberwarzone
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
大猫的无限游戏
大猫的无限游戏
T
Tor Project blog
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Heimdal Security Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
Open edX体系架构[译文]
2015-09-28 · via 夜行人

接下来准备翻译一些文章。

决定这样做是因为,在开发群里,@amspring提到之前我知道论坛部分使用到轻量级的Sinatra,没有看到Rails,看好几个地方博客什么的涉及技术这块都写ROR,我以为我漏掉了什么呢 Rails比较重,这里提供简单接口的 使用Sinatra较符合

而不少群友似乎也觉得edX架构中使用了Rails,而实际上Rails并没有被采用,这类知识其实在官方的文章中都已经说清楚了


Open edX是一个基于web技术的平台,用于创建,发布和分析在线课程。它驱动着edx.org以及其他的许多在线教育网站。

这篇文章准备站在较高的层面上来说明平台当前的架构方案,而不会深入到许多细节里。同时也描述出我们正在积极做着的变更。

#技术 Open edX中,几乎所有的后端(服务器端)代码都是用Python写的,django作为web应用框架,使用Mako模板(译者注:替换Django原生模板)

前端(浏览器端)代码主要用JavaScript来写。部分代码使用CoffeeScript来写,edX正将其替换为JavaScript。部分客户端代码(前端)由Backbone.js写成,更多的代码正在往这个框架上迁移。

edX同时使用Sass和Bourbon框架来写css

#组件

Open edX平台中有一组核心组件。在可能的情况下,这些组件采用稳定的,经过验证的的api来互相通信

点击示意图可以查看Open edX的组件:

edX_architecture_CMS_LMS_0

###学习管理系统(LMS)

LMS是Open edX的核心部分,学生使用它来学习课程。LMS也提供教师面板。

LMS采用了多种存储机制,课程存储在Mongo中,视频存储在YouTube和或亚马逊S3上,而每个学生的数据存储在MySQL数据库里

学生浏览课程并与课程内容交互。这个过程产生的事件被推送到analytics pipeline里,这些事件将被收集,分析和发布

当前edX正在把LMS打造成一个LTI服务提供者,以便Open edX课程组件能嵌入到其他学习平台

###Studio Studio是课程制作系统,课程团队使用它来创建和更新课程。Studio将课程内容写入到Mongo数据库中,之后LMS从中读取课程内容

###课程浏览 Open edX提供了一个简单的前端页面用来浏览课程。edx.org有一个独立的主页和课程搜索页面,不过并没有开源

###课程结构

Open edX的课程由单元构成,这些单元被称为XBlocks。任何人都可以写出新的XBlocks,教育者和技术人员可以利用xblock来扩充他们的课程组件。edX平台仍然包含着一些XModules组件,XModules组件是XBlocks的前一个版本。EdX正在将这部分XModules重写为XBlocks,逐渐将它移除。

除了XBlocks,还有几种方法也可以拓展课程组件的行为:

  • LMS支持LTI,课程作者可以集成其他LTI工具到Open edX课程中
  • 问题中,可以嵌入python代码来呈现问题或是评审学生的答案,这些python代码将在CodeJail中执行(隔离的环境)
  • JavaScript组件能通过JS Input集成进去
  • 课件可以导入导出为Open Learning XML (OLX),这是一种基于XML的格式

###讨论
课程内的讨论由一个独立的论坛组件来驱动。这是为数不多没有采用Python来写的组件,它选择了Ruby的Sinatra框架,LMS使用了论坛组件提供的API 来与之通信,并将论坛集成到LMS中

论坛带有一个通知服务,会通知学生有哪些他感兴趣的话题有了更新

###移动端 Open edX也打造了移动端,包括iOS和Android平台,目前只允许学生看视频。edX正在强化他们

###数据分析 记录学生行为的事件由Open edX的数据分析管道捕获。这些事件数据使用json格式存储在S3中。之后可以使用Hadoop来处理,分析聚合完的结果将被发布到MySQL中。这些分析结果将通过REST API传送到Insights中呈现给用户。Insights是一个Django app,课程讲师和网站管理员可以通过它来了解学生正在做什么,以及他们的学习习惯

示意图中展示了Open edX中数据分析部分的架构:

edX_Architecture_Analytics

###后台进程 一些比较大的任务被丢到后台进程,而不是在请求中执行。这些任务是队列式和分布式的,使用了Celery and RabbitMQ来管理它们。例子如:

  • 课程学习评分(成绩单)
  • 群发邮件
  • 生成答案分布报告
  • 生成结业证书

Open edX包含了一个叫做XQueue的可定制队列,用来跑自定义评级代码。这些都是独立的进程,用来运行计算密集型评估工作

###搜索 Open edX在以下地方使用了Elasticsearch来搜索:

  • 课程内容
  • 讨论区
  • 学生笔记

#原文 Open edX Architecture