# klein
**Repository Path**: bleemliu/klein
## Basic Information
- **Project Name**: klein
- **Description**: Klein 是一个基于 Paxos 的分布式集合工具库,包括分布式ArrayList、分布式 HashMap、分布式缓存、分布式锁等。
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2023-01-09
- **Last Updated**: 2024-12-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: paxos, Cache
## README
### [English](readme.md)
感谢JetBrains提供的免费授权.
Open source: Gitee | Github | CodeChina
文档: Gitbook
# 介绍

Klein是一个基于Paxos的分布式集合工具库,包括分布式Cache、分布式消息队列、分布式List、分布式Map、分布式Lock等。。它有趣的地方在于:您可以不依赖任何中间件,保证各个成员之间的数据一致。
你可以理解Klein是一个通过Maven依赖到您项目中的分布式工具。我们希望它可以替换掉您现有的Redis、消息中间件、注册表、配置中心等。
如果您对分布式消息队列、分布式List、分布式Map、分布式Lock兴趣的话,我们可以分享现有相应的设计,您可以参与到编码工作当中来。😆😆😆
**Look forward to your star⭐**
# 使用
### 引入klein
```xml
com.ofcoder.klein.core
klein-core
{last-version}
```
### 启动
```
Klein instance = Klein.startup();
instance.awaitInit();
KleinCache cache = KleinFactory.getInstance().createCache("klein");
cache.put("hello", "klein");
KleinCache lock = KleinFactory.getInstance().createLock("klein");
cache.acquire(1, TimeUnit.SECONDS);
```
### 配置
所有可配置的参数,请查看:`com.ofcoder.klein.KleinProp`
你可以通过System#setProperty设置,也可以获取到KleinProp对象
```
System.setProperty("klein.id", "2")
// 或者
KleinProp prop = KleinProp.loadIfPresent();
```
# Jepsen 测试
[Run on Gitpod](https://gitpod.io/#/github.com/shihuili1218/klein)