- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Archmeetup#9 深圳站 - 实现实时协同算法的核心技术
展开查看详情
1 .实现实时协同算法的核心技术 刘伟 ShowMeBug技术经理
2 .演讲顺序 ▸ (what)什么是实时协同的在线编程 ▸ (why)实时协同编程的价值在哪里 ▸ (how)协同编程在 ShowMeBug 中的实践
3 .关于实时协同 所有高价值的产品都是因为高效 ▸ 实时办公协同:Google Docs、WPS 云文档、quip、notion… ▸ 实时项目协同:Tower、Trello、Tita… ▸ 共通问题 CAP:可用、容错、一致(最终一致)
4 .实时协同的在线编程的几个特点 ▸ 多人同时在线 ▸ 共同编程 ▸ 零冲突的处理 ▸ 不稳定网络零容忍度
5 .实时协同编程的价值 ▸ 在线代码面试 ▸ 代码评审交流 ▸ 远程结对编程 ▸ 在线培训学习
6 .看看成品的表现 ▸ ShowMeBug 协同编程 ▸ ShomMeBug 协同绘图
7 .
8 .
9 .成品的表现 ▸ 代码实时同步 ▸ 零冲突率 ▸ 32 种语法高亮与运行结果同步 ▸ vim、emacs 支持 ▸ 光标同步、同步行数指示
10 .ShowMeBug 协同的几个核心技术点实践?
11 .协同编程实现的核心技术 websocket 篇 ▸ ActionCable 6.0 ▸ 优点 ▸ 超级易用的 Ruby Rails 生态 websocket 方案 ▸ 缺点 ▸ 数据可靠性保证(断线后数据重传)
12 .协同编程实现的核心技术 IDE 篇 ▸ CodeMirror、ACE、Monaco Editor ▸ 浏览器中实现编程环境的组件 ▸ API 丰富,超高扩展性 ▸ 方便定制扩展(比如 LSP 补全)
13 .关于协同算法,ShowMeBug 的几个迭代阶段?
14 .协同编程实现的初级阶段 ▸ 单工单向 ▸ 互斥锁(编辑锁) ▸ 全量上传 => 产品 Demo 的快速验证
15 .协同编程实现的中级阶段 ▸ 基于 diff 的增量上传 ▸ 互斥锁 ▸ 全量解析 ▸ Myer 算法
16 .协同编程实现的高级阶段 ▸ 自定义协议的 OT 算法 ▸ 同步锁(自旋锁) ▸ 语言切换同步 ▸ 代码运行同步 ▸ 面试记录同步 ▸ 录制回放
17 .什么是 OT算法?
18 .协同编程实现的核心:操作转换算法 ▸ 自动解决冲突 ▸ 所有需要同步的操作转化为以下三类 ▸ Insert 插入 ▸ Retain 保留 ▸ Delete 删除 ▸ 例如一段代码 “abc” ,用户一把代码改为 “xabc”,用户二把代码改为 “ab”,过程如下:
19 .
20 . 协同编程实现的核心:OT转换 http://operational-transformation.github.io/
21 .协同编程实现的核心:三方交互架构图
22 .OT 算法实践中的难点?
23 .协同编程实现的关键难点 ▸ OT 转换算法实现 ▸ 网络不稳定时,重传、去重 ▸ 锁的实现(协同转换顺序)
24 .协议 / 数据模型是关键
25 .核心协议解读
26 .协同编程实现的核心实现:排队锁
27 .协同编程实现的核心实现:转换操作
28 .编辑器之外的同步怎么做?
29 .协同编程实现的核心实现:ActionCable Channel