rdoc:原生Go中的无冲突复制JSON实现

  • u7_193722
    了解作者
  • 10.3KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-15 07:59
    上传日期
博士 rdoc(复制的文档):在Go中构建更好的去中心化和脱机优先应用程序 rdoc是Martin Kleppmann和Alastair R. Beresford在他们的开创性工作引入的,无冲突的复制JSON数据结构的本地go实现。 JSON CRDT是“ [...] JSON数据结构的算法和形式语义,可自动解决并发修改,从而不会丢失任何更新,并且所有副本都趋向同一状态(无冲突的复制数据类型或CRDT)。” 。 您想要了解更多有关JSON CRDT数据类型的信息吗? 很好地介绍了马丁·克莱普曼(Martin Kleppmann)和Alastair R. Beresford撰写的原始论文[
rdoc-master.zip
  • rdoc-master
  • .gitignore
    290B
  • go.mod
    150B
  • idset
  • idset.go
    921B
  • Makefile
    105B
  • .travis.yml
    113B
  • LICENSE
    1KB
  • go.sum
    646B
  • rdoc.go
    6.7KB
  • README.md
    2.9KB
  • lclock
  • lclock_test.go
    2.3KB
  • lclock.go
    3KB
  • rdoc_test.go
    4.9KB
内容介绍
# rdoc ### rdoc (Replicated DOCument): Build better decentralized and offline-first applications in Go [![Build Status](https://travis-ci.org/gpestana/rdoc.svg?branch=master)](https://travis-ci.org/gpestana/rdoc) [![Package Version](https://img.shields.io/github/v/tag/gpestana/rdoc)](https://img.shields.io/github/v/tag/gpestana/rdoc) [![Go Reference](https://pkg.go.dev/badge/github.com/gpestana/rdoc.svg)](https://pkg.go.dev/github.com/gpestana/rdoc) rdoc is a native go implementation of a conflict-free replicated JSON data structure, as introduced by Martin Kleppmann and Alastair R. Beresford in their seminal work [[1]](https://arxiv.org/abs/1608.03960). A JSON CRDT is "[...] an algorithm and formal semantics for a JSON data structure that automatically resolves concurrent modifications such that no updates are lost, and such that all replicas converge towards the same state (a conflict-free replicated datatype or CRDT)." [[1]](https://arxiv.org/abs/1608.03960). Do you want to learn more about the JSON CRDT data type? [This youtube video](https://www.youtube.com/watch?v=TRvQzwDyVro) is a good introduction to the original paper [1] by Martin Kleppmann and Alastair R. Beresford. ## Features - Simple API; One API call allows the application logic to update and manage coverging JSON replicas in decentralized settings; - Supports JSON Patch notation as defined in [RFC6902](https://tools.ietf.org/html/rfc6902); - Supports [cbor serialization](https://tools.ietf.org/html/rfc7049) [WIP; v1.1.0 milestone]; ## Examples ```go // starts a new replicated JSON document with an unique ID (in the context of the replicas sample) doc := Init("doc_replica_1") // updates the document state with a JSON patch operation: patch := []byte(`{"op": "add", "path": "/", "value": "user"`) err := doc.Apply(patch) if err != nil { panic(err) } // update the document state with remote operations (i.e. operations executed by a remote replica); // remote operations will update the state of the document iif all its dependencies have been applied. remotePath := []byte(`[ {"op": "add", "path": "/", "value": "user", "id":"1.380503024", "deps": [] }, {"op": "add", "path": "/name", "value": "Jane", "id":"2.1", "deps": ["1.1"] }, {"op": "add", "path": "/name", "value": "Jane", "id":"2.380503024", "deps": ["1.380503024"] } ]`) err := doc.Apply(remotePath) if err != nil { panic(err) } // Get Doc operations to send over the wire; these operations can be used by // remote replicas to converge state with `doc1` doc1Operations := doc.Operations() // ... apply state from doc1 into doc2, in order for replicas `doc1` and `doc2` to converge doc2.Apply(doc1Operations) // ... // Native Go marshaling/unmarshaling supported buffer, err := json.Marshal(*doc) if err != nil { panic(err) } ``` ## References 1. [A Conflict-Free Replicated JSON Datatype](https://arxiv.org/abs/1608.03960) (Martin Kleppmann, Alastair R. Beresford)
评论
    相关推荐
    • 数据结构 c++链表
      数据结构 c++链表 有插入。删除。更新。输入。输出等功能
    • 数据结构课程设计格式正确
      3.4源程序 /********************************************************************************************************************************* 校园导航问题 【问题描述】 设计一个校园导游程序,为来访的...
    • 数据结构思维导图.rar
      数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新...
    • build:开始构建去中心化网络所需的一切
      去中心化网络的基础,包括诸如内容寻址,分布式数据结构,对等通信等概念 对星际文件系统(IPFS)核心组件的深刻理解,包括用于访问IPFS的核心协议,约定和库 从创建空白项目到在线部署的所有过程,如何开发分布式...
    • 数据结构课件(王晓东)
      各种版本都很多 这个版本的网上没看到过好像 我们上的是这本书 ~有用没用的都看看吧~
    • 校园导游问题 数据结构课设
      校园导游问题 数据结构课设,做社科的同学所需要的,不多说啦
    • 数据结构———排序
      数据结构———排序 知识点各各击破
    • 云计算数据中心虚拟技术
      云计算数据中心虚拟技术
    • 数据结构综合实验贪食蛇
      数据结构综合性实验 贪食蛇游戏 贪食蛇是一款经典游戏,游戏设计先要在屏幕上生成一只蛇,并且蛇是可以移动的。通过键盘上的方向键来控制蛇的移动。这是贪食蛇最今本的功能。屏幕为蛇提供了移动的场所,也为蛇提供了...
    • 数据结构 知识点总结
      对复习数据结构的基础知识很好。比如考研,专升本,复习时会比较省力些。