Go 开发的高一致性分布存储:hyflow-go

jopen 9年前

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

其模板化的架构:
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是快速的,能够编译到原生代码,提供的高级别的内存布局和分配的控制,内置的分析器允许开发人员检测和优化代码。

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