iNexus 0.13 发布,基于 Raft 的分布式协调组件

jopen 9年前

iNexus (简称ins) 是一个基于Raft协议实现的高可用的分布式Key-Value数据库,支持数据变更通知(Watch)和分布式锁,可用于大型分布式系统的协调工作

猛击:https://github.com/baidu/ins

简介

iNexus原本是百度大规模集群管理系统:Galaxy的一个组件,它的产生源于我们的业务需要一个类似于Google Chubby一样的组件。它能提供分布式naming、lock服务,并能存储一定规模的元数据(百GB的级别)。

iNexus的理论基础是Raft一致性协议,这个协议主要解决了多个节点之间的数据变更一致性同步,从而可以由多个节点构成一个高可用的数据存储集群(半数以下节点宕机不影响服务)。

iNexus实现了Raft协议的核心部分,但目前还不支持动态改变集群membership。另外,Raft的paper只论述了集群选主和数据一致性复制,iNexus结合实际需求,又加上了Watch(事件主动通知)和Lock(分布式锁)。

本次升级主要包含以下Update:

1) 定制了底层leveldb的compact算法,从而实现高性能的repliction log的GC,可以应对持续高吞吐写入产生的IO压力;

2)完善了Python SDK的支持,修复对Binary String支持的一些Bug;

3)完善Trace机制,便于处理在运维中出现的伪DDOS攻击;

iNexus在线上支撑着分布在4000+机器上的服务的发现和协调,稳定支撑着包括万亿级Linkbase在内的很多核心业务。