Dbh2
什么是Dbh2
Dbh2是一个专用于Zeze的基于RocksDB和Raft的分布式KV数据库。它不支持冲突记录的并发写, 这个由Zeze提供保护。它支持并发读取,但是读取记录进一步互斥逻辑也有Zeze提供保护。 所以,它的目的是提供一个低成本的高可靠的高分布的存储系统。
主要特性
- 一个Dbh2集群支持多个Database
- 每个Database包含多张表
- 每张表是一个KV表
- 每个表按Key的顺序自动分段到多个桶内
- 每个桶由raft节点组成(高可靠来源)
- 分桶管理自动
- 还具有整个桶自动迁移功能
- 具有动态扩容能力
主要部分
- Master 知道所有数据库,所有表,所有桶的分布情况。提供表创建,桶信息查询。
- Dbh2Manager,桶运行容器,包含多个桶。主要负载实现点。
- Dbh2Agent,嵌入到dbh2的客户端内执行。
- CommitServer,Dbh2Agent的提交功能移到这个服务进程,仅用来提交事务,可选的。
接口
- Zeze.Dbh2.Database 实现了Zeze.Transaction.Database接口。
- zeze.xml 数据库配置 ```xml
127.0.0.1:10999是Master的地址端口; dbh2_database是数据库名;
## 启动脚本
```bash
nohup java -Dlogname=master -Xmx4g -cp .:lib/* Zeze.Dbh2.Master.Main zeze.xml&
sleep 2
nohup java -Dlogname=manager0 -Xmx4g -cp .:lib/* Zeze.Dbh2.Dbh2Manager manager0 zeze0.xml &
nohup java -Dlogname=manager1 -Xmx4g -cp .:lib/* Zeze.Dbh2.Dbh2Manager manager1 zeze1.xml &
nohup java -Dlogname=manager2 -Xmx4g -cp .:lib/* Zeze.Dbh2.Dbh2Manager manager2 zeze2.xml &
# 需要启动3个manager组成raft集群。
配置
- Master配置 ```xml <?xml version=”1.0” encoding=”utf-8”?>
2. Manager配置(一个)
```xml
<?xml version="1.0" encoding="utf-8"?>
<zeze
GlobalCacheManagerHostNameOrAddress="" GlobalCacheManagerPort="5002"
CheckpointPeriod="60000" ServerId="0" CheckpointMode="Table" CheckpointFlushMode="SingleThread" CheckpointModeTableFlushConcurrent="4"
ServiceManager="disable"
>
<DatabaseConf Name="" DatabaseType="Memory" DatabaseUrl=""/>
<ServiceConf Name="Zeze.Dbh2.Master">
<Acceptor Ip="127.0.0.1" Port="10999"/>
</ServiceConf>
<ServiceConf Name="Zeze.Dbh2.Master.Agent">
<Connector HostNameOrAddress="127.0.0.1" Port="10999"/>
</ServiceConf>
<ServiceConf Name="Zeze.Raft.ProxyServer">
<Acceptor Ip="127.0.0.1" Port="7780"/>
</ServiceConf>
<ServiceConf Name="Zeze.Dbh2.Commit">
<Acceptor Ip="127.0.0.1" Port="7788"/>
</ServiceConf>
</zeze>