Why Affine uses CRDT not OT to build a collaborative real-time editor
Posted 张驰Zhangchi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Why Affine uses CRDT not OT to build a collaborative real-time editor相关的知识,希望对你有一定的参考价值。
As a collaborative real-time editor, Affine aims to resolve problems in three situations:
- Multi-master replication: the synchronization of data between equipment and applications;
- Eventual consistency: the consistence of data regardless of network latency and outage;
- Conflict resolution: the resolution of conflict between simultaneous edits.
To achieve these aims, a proper collaborative algorithm should be used. There are hundreds of collaborative algorithms being invented over the past three decades, but they usually fall into two categories: either operational transformation (OT) or conflict-free replicated data type (CRDT). We think CRDT is a better choice.
What does CRDT do
CRDT is capable of discovering and resolving conflicts while ensuring the effective distribution and merge of date. It may sound like magic, but think about historical study, it is very possible to discover the truth from scattered evidence.
For CRDT, every piece of data is like a "historic fragment". We keep collecting the fragments from other clients and then restore the truth by excluding repeated data and correcting false information.
Why CRDT is better
In contrast to OT, CRDT possesses three big advantages:
Flexibility
CRDT supports more data types. For example, Yjs supports Array, Map, and Treelike, and therefore applies to more business scenarios.
Performance
CRDT tolerates higher latency and can wait longer for solving conflicts, whereas the calculation of OT in the same condition may become too overwhelming for a server to sustain.
Extensibility
Because CRDT supports more data types and editor elements, it is more extensible.
Conclusion
Collaborative algorithm is still a foreign concept for many developers. There are some introductions to it, but as to how it shall be used, there is still lack of clear explanation. I hope this article helps. If you also work for a startup company developing an editor and want some suggestions. CRDT, especially Yjs, should be a better choice for you.
以上是关于Why Affine uses CRDT not OT to build a collaborative real-time editor的主要内容,如果未能解决你的问题,请参考以下文章
Why Affine uses CRDT not OT to build a collaborative real-time editor
Why SignalR does not use WebSockets?
javascript 基地:https://reactjs.org/docs/context.html#why-not-to-use-context
The AFFiNE live demo is here (with 15 reasons from the team why you should try)
The AFFiNE live demo is here (with 15 reasons from the team why you should try)
The AFFiNE live demo is here (with 15 reasons from the team why you should try)