背景
最近使用科赛发现这个和jupyter长的差很少的在线比赛平台很是有趣,用户能够上传本身的数据,建立本身的项目而且能够使用交互式的笔记本, 支持实时代码,数学方程,可视化和markdonw。让人不经思考它是如何把jupyter集成和扩展的这么好的,使用的什么样的架构。python
随后,我调查了相关技术。首先是jupyter-notebook, 一款本地的ipython的笔记本,以及如何扩展插件。而后就是Jupyter-hub, 管理多用户-笔记本的服务。git
实现架构
基于这些调查以及一些小demo的编写,设计出一个可定制化的在线比赛平台的架构:github
在demo中我使用的是kubespawner, 因此这里的持久卷是k8s的持久化卷,用来管理用户数据集和上传和访问。
jupyter-hub在管理notebook的同时,也做为代理服务,能够直接把jupyter-notebook的内容返回给在线比赛平台。架构