实现轻协同IDE的技术选型经验

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 实现轻协同IDE的技术 选型经验 李亚飞
2. 个人介绍 • 李亚飞,ShowMeBug CEO兼首席架构师 • 连续创业者,14年开始创业,9年创业经验 • 2009年毕业于吉林大学计算机系 • Ruby 社区核心贡献者,RubyConf China 三届讲师 • 前深信服资深架构师,自动化产品线主管&技术负责人 • 2015年,通过个人 Github 获得某前沿科技公司前端架 构师职位 • 2021年科创中国深圳企业家 U30 上榜成员 • ShowMeBug 连续获得奇绩、盈动、变量、真格、红 杉、高瓴六家近亿元融资
3. 分享内容 • 轻协同IDE引擎的开发动机与要求 • 选择 PaaS 方案,提供 NPM 包的 SDK • 选择 React + zustand 作为前端 SDK 组件 • 选型 socketio • 协同层:NestJS + socketio • 后端交互:MQ 消息队列,容器化机制
4. 今天我们一起看看,NodeJS 全 栈能支撑多大能力的业务?
5. 轻协同IDE的前世今生
6.
7.
8. • 轻量级(简单,易用,免安装) • 协同性(用于Coding面试、学习指导等场景) • 零秒启动(极快的启动速度、所有包依赖提前准备) • 零秒切换(秒换不同编程环境) • 零秒延迟(所有操作实时进行,包括Shell、Console、文件树)
9. • 需要完全自主可控(排除 VSCode 定制方案) • 需要超出预期的协同体验 • 需要超强自定义:答题区、隐藏锁定答案、测试用例解析等等 • 结论:排除 VSCode 等IDE定制方案,完全从零开发
10. 接下来一起来进行架构之旅
11. PaaS 模式 因为轻协同IDE拥有很多应用场 景:技术测评、在线面试、编程 学习,为了支持不同的业务,所 以采用 PaaS 化的架构。NPM 是必然的采用的打包方案。
12. MonoRepo • pnpm 提供更快的安装速度 • demo:提供演示和测试能力 • client:SDK核心代码 • server: Node层负责长连接协 同
13. React + zustand • DaoStore.tsx • 状态管理非常复杂 • 自行实现状态机 • 共享全局数据
14. 异步事件编程 • SocketIO • Channel 与服务端进行异步事件,基 于状态驱动的封装与管理 • 组件的无依赖状态设计 • 离线上下线交互
15.
16. Node后端职责与架构选型
17. 后端技术栈选型 • 与 SocketIO 通信极为便捷 • 高并发支撑 • 异步事件编程支持良好 • 对 OT 协同算法支持良好,抽象性好
18. 后端技术选型结论 • NestJS(充分利用 Inject 注入技术,简化复杂依赖) • SocketIO 中间件 • 高性能支撑 • 部分复用前端状态 • Mongodb(高性能支撑,每秒2万QPS)
19. 后端与Java中台交互选型 • MQ 消息队列(RabbitMQ NestJS中间件) • 容器化管理机制 • 容器环境 Golang Agents 注册
20.
21.
22. 架构总结 • 单链路 1万同时在线 • 加载速度不超过1s • 切换环境速度不超过1s • 完美支撑业务侧灵活定制页面与接口
23. 感兴趣可以来试试 • 前端中级以上工程师,Vue & React 有一个掌握即可构建自己的编程环境 • 你可以用 1024PaaS 实现自己的在线编程环境,通过跟我对接来体验 SDK • 可以完整自定义各个页面结构 • 应用场景举例:在线教育、互动培训、公司内训学习
24.
25.
26. QA环节 • 欢迎与我交流架构、前端、创业相关的话题 • 欢迎使用 ShowMeBug 进行技术测评 • 欢迎使用 1024PaaS 开发自己的IDE应用 微信号:lyfi2003
27.

ホーム - Wiki
Copyright © 2011-2024 iteam. Current version is 2.139.0. UTC+08:00, 2024-12-26 12:47
浙ICP备14020137号-1 $お客様$