hyflow-go是一款使用Go语言编写的高一致性分布存储

hyflow-go是一款可进行地理复制、主内存main-memory的高一致性数据存储,其最大特点是将低延时和高事务完美统一。

hyflow-go: a geo-replicated, main-memory, highly c

其模板化的架构:
1. 事务层:基于commit-time事务认证,灵活支持传统数据库的MVCC( Multi-Version Concurrency Control )和 single-versioning。能用来提供串行化serializability 或EUS(Extended Update Serializability ),这些依赖于底层的顺序Order层。

2.顺序层Ordering Layer:一致性的协议是可插拔的,可选择偏序(partial order)协议,如 Alvin POB, M2Paxos 或 E‑Paxos;或者完整顺序协议如:Multi‑Paxos 和 Raft。

3.通讯层:最底层是用来进行集群通信,背后使用 zeromq, nanomsg 或 mangos,乐观批处理用于在保持低延迟的同时增加吞吐量。

细节技术:
事务的偏序(Partial Ordering of Transactions)

通过跟踪事务之间的冲突,能够避免顺序(串行化serializing) 非冲突事务,这就增强了并发性,允许事务更快地提交。一些非串行化non-serializable执行也是允许的。

多主Multi-Master

在Alvin POB 和 E-Paxos协议中,每个节点负责协调本地的事务组织。对于客户端来说只需要一个来回即可,降低了延迟。这样,事务不必依赖一个全局的顺序领头者。

Fast Path

在不存在并发竞争情况下, Alvin POB 和 E-Paxos 能通过使用快速仲裁通过一个来回请求响应降低延迟,快速仲裁大于经典仲裁。

Go语言在编写分布式系统的好处是:
快速原型:hyflow-go是一款研究软件,Go语言特别适合,它是高阶语言,有很低开销,编译速度快,自动内存管理和内置并发,所有这些让研究人员和开发人员能够更专注于研究他们试图解决的问题。这样就减少通过软件工程的依赖约束。

高性能:Gi是快速的,能够编译到原生代码,提供的高级别的内存布局和分配的控制,内置的分析器允许开发人员检测和优化代码。

易于部署:编译自足的静态二进制文件,没有虚拟机或其他依赖设置。

hyflow-go的特点是其灵活的模块架构,多种协议竟然能可插拔切换定制,这些都得益于Go语言简单且贴近分布式模型的特点,使用针对性的工具,就易于编制强大灵活的系统。

将下面两篇文章一起阅读,你会发现Go语言真的很贴近分布式系统,没有Java那些锁等繁琐的细节,这些都已经被封装在并发组件内部,这样,单机的并发编程与多机的分布式编程之间几乎打通(通过最基本的两个操作:读操作和写操作进行时间和空间上组合排序),当然Scala和Erlang的Actor模型也有类似效果,但是读操作与写操作好像不是Actor模型的基本语境(Actor的基本语境是发送和接受消息):

Go语言内存模型
分布式因果一致性

[该贴被banq于2015-04-04 12:17修改过]

这发展的也太快了,完全跟不上啊