背景
最近使用科赛发现这个和jupyter长的差不多的在线比赛平台非常有趣,用户可以上传自己的数据,创建自己的项目并且可以使用交互式的笔记本, 支持实时代码,数学方程,可视化和markdonw。让人不经思考它是如何把jupyter集成和扩展的这么好的,使用的什么样的架构。
随后,我调查了相关技术。首先是jupyter-notebook, 一款本地的ipython的笔记本,以及如何扩展插件。然后就是Jupyter-hub, 管理多用户-笔记本的服务。
实现架构
基于这些调查以及一些小demo的编写,设计出一个可定制化的在线比赛平台的架构:
在demo中我使用的是kubespawner, 所以这里的持久卷是k8s的持久化卷,用来管理用户数据集和上传和访问。
jupyter-hub在管理notebook的同时,也作为代理服务,可以直接把jupyter-notebook的内容返回给在线比赛平台。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。