项目作者: BrotherJing

项目描述 :
A scalable concurrent collaboration framework based on Operational Transformation (OT)
高级语言: TypeScript
项目地址: git://github.com/BrotherJing/scalable-ot.git
创建时间: 2019-10-11T02:24:55Z
项目社区:https://github.com/BrotherJing/scalable-ot

开源协议:MIT License

下载


scalable-ot

A scalable concurrent collaboration framework based on Operational Transformation (OT).

Inspired by sharedb.

Examples

Text editor

textarea

Spreadsheet

sheet

Architecture

arch

  1. Clients send operations through API.
  2. Operations are pushed into MQ, partitioned by document id.
  3. OT server receives operations of same document sequentially and performs conflict solving.
  4. Broadcast server sends conflict-free operations to clients.
  5. Conflict-free operations are pushed into another MQ(or db stream), trigger a consumer which apply them on document snapshot sequentially.

Project Structures

  1. scalable-ot
  2. ├── front // Client side code, including examples(textarea, spreadsheet)
  3. ├── ot-server // Server which consume client operations and produce conflict-free operations
  4. └── proto // Protobuf definitions
  1. scalable-ot-java-backend
  2. ├── scalable-ot-api // Front facing api
  3. ├── scalable-ot-broadcast // Web socket server which connect to clients
  4. ├── scalable-ot-consumer // Service which consume and apply conflict-free operations
  5. ├── scalable-ot-core // DTO, DAO, etc.
  6. └── scalable-ot-kafka // Kafka related configurations

Features

  • Horizontal Scalable Some services are implemented as Kafka consumer and are scalable in nature.
    Some are backed by RPC framework like Dubbo and have been customized to be scalable and load balanced
    based on specific rules.
  • Extensible Can be extended to support concurrent editing on other type of document by adding OT libraries.