文件名称:statebox:Erlang 状态“monad”具有合并冲突解决功能。 对 Riak 有用
文件大小:217KB
文件格式:ZIP
更新时间:2024-07-16 21:43:28
Erlang
statebox - 用于自动解决冲突的状态“monad” 概述: statebox 是一种数据结构,您可以将其与最终一致的系统(例如 riak)一起使用,以确定性方式解决兄弟姐妹之间的冲突。 地位: 在 Mochi Media 的生产中用于多个后端服务。 理论: 状态框包装当前值和事件队列。 事件队列是一个{timestamp(), op()}的有序列表。 当两个或多个 statebox 与statebox:merge/1 ,事件队列与lists:umerge/1合并,并在最新 statebox 的当前值上再次执行操作,产生一个新的 statebox,其冲突以确定性解决方式。 op()是一个{fun(), [term()]} ,除了在术语列表中指定的最后一个参数之外的所有参数。 例如{ordsets:add_element/2, [a]} 。 要评估此操作,将ordsets:
【文件预览】:
statebox-master
----CHANGES.md(721B)
----src()
--------statebox.app.src(278B)
--------statebox_counter.erl(4KB)
--------statebox.erl(14KB)
--------statebox_clock.erl(866B)
--------statebox_identity.erl(531B)
--------statebox_orddict.erl(7KB)
----rebar(208KB)
----.travis.yml(81B)
----LICENSE(1KB)
----test()
--------statebox_identity_tests.erl(459B)
--------statebox_counter_tests.erl(6KB)
----README.md(4KB)
----Makefile(223B)
----rebar.config(360B)
----.gitignore(60B)