本项目为学习项目,仅供参考。
## RaftKV
RaftKV是分布式强一致的KV存储数据库,使用raft共识算法确保线性一致性。 <br>
### 实现
#### 算法实现
raft算法核心实现参考了 [etcd](https://github.com/etcd-io/etcd)的go实现,位于模块
**raftkv-raft**。其实现不依赖网络和存储,仅完成了算法核心逻辑,实现非常优雅。算法核心逻辑均通过了测试。
#### 网络通信
网络通信部分用netty实现,位于模块**raftkv-remoting**(第一次用netty写东西,代码可能比较搓)
#### 数据存储
存储方面使用了内存存储(持久化和快照写起来太麻烦。。。)
### 使用
#### 启动
命令行启动参数为 <br>
* --id代表节点id
* -c或--cluster代表集群地址的集合,以逗号,分隔开
* -p或--port代表部署端口
对于三节点的raft group,示例如下
```
--id 1 -c 127.0.0.1:8888,127.0.0.1:8889,127.0.0.1:8890 -p 8888
--id 2 -c 127.0.0.1:8888,127.0.0.1:8889,127.0.0.1:8890 -p 8889
--id 3 -c 127.0.0.1:8888,127.0.0.1:8889,127.0.0.1:8890 -p 8890
```
#### 交互
使用了restful风格的交互,
* 提议某个值使用 PUT方法,uri代表key,body代表值
* 线性一致读使用 GET方法, uri代表key
### 还未完成的功能
* 集群动态扩容
* 持久化和快照
* PreVote
没有合适的资源?快使用搜索试试~ 我知道了~
java实现的基于raft算法和netty网络通信的分布式强一致kv存储。.zip
共84个文件
java:75个
xml:8个
md:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 158 浏览量
2024-03-23
23:10:56
上传
评论
收藏 97KB ZIP 举报
温馨提示
java实现的基于raft算法和netty网络通信的分布式强一致kv存储。.zip
资源推荐
资源详情
资源评论
收起资源包目录
java实现的基于raft算法和netty网络通信的分布式强一致kv存储。.zip (84个子文件)
java0323
raftkv-remoting
pom.xml 2KB
src
main
resources
log4j2.xml 1KB
java
com
yuyuko
raftkv
remoting
protocol
RequestCode.java 161B
body
ReadIndexMessage.java 238B
ProposeMessage.java 363B
ResponseCode.java 163B
codec
JavaCodec.java 160B
ProtostuffCodec.java 2KB
ChannelManager.java 265B
peer
PeerMessageProcessor.java 164B
PeerReconnectionManager.java 3KB
PeerMessageEncoder.java 749B
PeerMessageSender.java 201B
PeerMessageDecoder.java 988B
client
PeerClientConnectionHandler.java 3KB
NettyPeerClient.java 5KB
NettyPeerClientConfig.java 1KB
PeerChannelManager.java 947B
PeerMessage.java 1KB
AbstractPeerRemoting.java 633B
PeerMessageHandler.java 828B
server
NettyPeerServerConfig.java 755B
NettyPeerServer.java 4KB
PeerServerConnectionHandler.java 1KB
PeerNode.java 438B
Cluster.java 1KB
server
ClientChannelManager.java 944B
ClientRequestProcessor.java 189B
ClientResponse.java 366B
NettyServerConfig.java 816B
ClientResponseEncoder.java 1KB
ClientRequest.java 497B
ClientResponseSender.java 160B
ClientRequestDecoder.java 1KB
NettyServer.java 6KB
pom.xml 5KB
raftkv-server
pom.xml 1KB
src
main
resources
log4j2.xml 1KB
java
com
yuyuko
raftkv
server
statemachine
StateMachine.java 3KB
utils
Triple.java 446B
Startup.java 4KB
core
RaftNode.java 7KB
Server.java 2KB
raftkv-raft
pom.xml 2KB
src
test
resources
log4j2.xml 1KB
java
com
yuyuko
raftkv
raft
storage
UnstableTest.java 11KB
MemoryStorageTest.java 11KB
RaftLogTest.java 16KB
core
RaftTest.java 44KB
node
NodeTest.java 16KB
main
resources
log4j2.xml 1KB
java
com
yuyuko
raftkv
raft
read
ReadState.java 497B
ReadIndexStatus.java 786B
ReadOnly.java 3KB
utils
Utils.java 1KB
Tuple.java 917B
storage
MemoryStorage.java 7KB
RaftLog.java 14KB
Storage.java 1KB
UnavailableException.java 223B
Unstable.java 7KB
SnapshotTemporarilyUnavailableException.java 238B
SnapshotMetadata.java 1KB
SnapOutOfDateException.java 703B
Snapshot.java 956B
CompactedException.java 228B
core
Raft.java 45KB
ConfState.java 718B
Message.java 13KB
HardState.java 1KB
Config.java 3KB
TickFunction.java 110B
Entry.java 3KB
StepFunction.java 137B
SoftState.java 967B
Progress.java 8KB
node
Node.java 2KB
DefaultNode.java 11KB
Peer.java 329B
Ready.java 5KB
Status.java 2KB
NodeStopException.java 98B
RaftException.java 586B
README.md 1KB
共 84 条
- 1
资源评论
Kwan的解忧杂货铺
- 粉丝: 1w+
- 资源: 3625
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
- 基于ultralytics-yolov8, 将其检测/分类/分割/姿态等任务移植到rk3588上
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功