Skip to content

Latest commit

 

History

History
71 lines (45 loc) · 4.22 KB

README_cn.md

File metadata and controls

71 lines (45 loc) · 4.22 KB

JournalKeeper

License Release Maven Central Last commit Travis Coverage Status

View in English

JournalKeeper是一个高性能,高可靠,强一致性分布式流数据存储集群。JournalKeeper日志一致性算法衍生于RAFT一致性算法并做了扩展和改进,更加适用于超大规模集群,并且具有更好的性能。它将系统清晰分割成一致性日志、状态机和存储三个部分,使得每一部分都能符合单一职责原则。JournalKeeper明确定义了系统边界,使用更加系统化和结构化的描述方法来定义这个算法,使之易于完整正确的实现并应用到工程实践中。

JournalKeeper是什么?

JournalKeeper是...

完整的RAFT实现类库

JournalKeeper实现并隐藏了RAFT大部分的复杂性,提供极简的API:JournalKeeper RAFT API,你可以使用JournalKeeper轻松实现一个自己的RAFT集群,参见示例:journalkeeper-examples

分布式流数据存储

JournalKeeper提供Partitioned Journal Store API (JK-PS API)用于存储流数据,可用于存储监控数据、Binlog等日志数据,为流计算提供可靠的数据流存储,也可以用于实现Pub/Sub系统。支持如下特性:

  • 弹性多分区
  • 强一致性
  • 严格顺序
  • 支持事务
  • 高可靠、高可用和高性能

嵌入式分布式协调服务

JournalKeeper提供了Journal Keeper Coordinating Service API(JK-CS API)可以用于协调分布式系统,并且它内嵌在你的业务系统中,不需要单独部署和维护。JournalKeeper可以用于:

  • 存储元数据,支持KV和SQL
  • 领导人选举
  • 监控节点状态
  • 实现分布式锁
  • 生成GUID

JournalKeeper有哪些特性?

JournalKeeper的核心是一个面向大规模分布式集群优化过的,高性能的RAFT类库。它严格按照RAFT论文完整的实现了的全部特性,包括:

  • 复制状态机
  • 一致性日志复制
  • 领导人选举
  • 二阶段集群成员变更
  • 自动定期创建状态机快照
  • 复制和安装快照
  • 日志压缩

此外,JournalKeeper还包含如下这些实用的特性:

  • 多分区一致性日志:将一致性日志划分为多个逻辑分区,可以为每个分区建立单独的状态机,在保证因果一致性的前提上实现并行读写
  • 日志并行复制:提升主从复制性能
  • 从节点读:JournalKeeper在保证顺序一致性的前提下,支持客户端在从节点读取数据,提升集群读性能;
  • 优先领导人:支持指定集群某个节点为优先领导人,在优先领导人节点正常的情况下,集群的选举策略总是将优先领导人节点选为领导人。这在Multi-Raft中,可以有效避免领导人倾斜问题
  • 观察者:观察者只从集群复制日志并生成状态数据,可以提供读服务,但不参与集群选举。加入观察者可以在不影响集群写入和选举的性能前提下,提升集群读性能。

文档

参见 这篇文章

API

参见 JournalKeeper API

参与贡献

JournalKeeper 期待创建一个完善的平台社区,欢迎提出任何想法和问题。

开源协议

遵循 Apache License, 版本 2.0.