您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[ArchSummit深圳2023|全球架构师峰会]:实现轻协同IDE的技术选型经验_李亚飞 - 发现报告
当前位置:首页/行业研究/报告详情/

实现轻协同IDE的技术选型经验_李亚飞

AI智能总结
查看更多
实现轻协同IDE的技术选型经验_李亚飞

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