今天和大家聊一聊协同编辑的架构设计。
什么是协同编辑
协同编辑是指多人同时对同一份文档进行编辑。
例如我们熟悉的wiki,百度百科,以及办公产品腾讯文档,乃至我们的代码管理工具git,都可以算作是协同编辑产品。
实时协同编辑
随着大家在家办公,异地办公的情况普及,实时协同编辑工具也变得更加引人注目。
实施协同编辑会面临几个问题:
- 实时性——输入的数据可以及时被相关协作者看到
- 一致性——各端看到和编辑的文档需要保持一致
- 容错性——允许存在一定的网络波动,和数据丢失
但是这三个问题会形成一个不可能三角
即任意方案只能满足其中2个点,牺牲第3个点。
有的同学可能对这个三角形不是很理解。
我们可以这样类别,将协同编辑的文档类比为分布式数据库,编辑者类别为数据库的读写服务,那么我们的这个三角形就可以转换为CAP不可能三角
关于CAP定理,可以参见我的博客一文看懂CAP定理_黄腾霄的博客-CSDN博客