sofastack / sofa-jraft

A production-grade java implementation of RAFT consensus algorithm.
https://www.sofastack.tech/projects/sofa-jraft/
Apache License 2.0
3.56k stars 1.14k forks source link

我既要分布式锁,也要自定义状态机可以实现吗? #1126

Closed chunlaiqingke closed 2 weeks ago

chunlaiqingke commented 1 month ago

Your question

我既要分布式锁,也要自定义状态机可以实现吗?

我现在有一个场景,做数据上传,服务端是5台机器的集群,客户端可能有很多个节点,比如有客户端10个节点,10个节点上传的是相同的数据,我想只有一个节点去写数据,需要用到分布式锁。当这个节点的请求完成之后,需要广播这个请求执行之后的状态,让其他机器上的请求,立即响应,返回上传成功,剩余的9个节点就不需要再去上传数据了。当这个10个节点的请求处理完成之后,这个状态就不需要保留了,或者说只需要保留一段时间 了,比如一个小时。

Your scenes

Describe your use scenes (why need this feature)

Your advice

Describe the advice or solution you'd like

Environment

shihuili1218 commented 1 month ago

听起来这个需求,只需要实现保存数据的状态机就好了。

不过这一段有些问题

当这个节点的请求完成之后,需要广播这个请求执行之后的状态,让其他机器上的请求,立即响应,返回上传成功

并不能做到立即响应“上传成功”,只有广播到半数以上的节点后,才算成功

chunlaiqingke commented 1 month ago

因为我是想存储的数据有过期,比如24小时之后就不要了,保证内存中的数据量控制一下

shihuili1218 commented 1 month ago

因为我是想存储的数据有过期,比如24小时之后就不要了,保证内存中的数据量控制一下

你可以在状态机里实现

chunlaiqingke commented 1 month ago

这样是不是我要去实现MemoryRawKVStore?