Go 開發的高一致性分布存儲:hyflow-go
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是快速的,能夠編譯到原生代碼,提供的高級別的內存布局和分配的控制,內置的分析器允許開發人員檢測和優化代碼。
易于部署:編譯自足的靜態二進制文件,沒有虛擬機或其他依賴設置。