-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DSIP-9][Feature][Server] Add new registry plugin based on raft #10874
Comments
Search before asking
DescriptionThe current role of zookeeper
Problems caused by zookeeper
remove zookeeper's point
remove zookeeper scheme
Use caseNo response Related issuesAre you willing to submit a PR?
Code of Conduct
|
Thank you for your feedback, we have received your issue, Please wait patiently for a reply.
|
Great feature, this feature has been discussed before, it's needed to give a detailed design, such like how we store the log, how to solve the split-brain..., this is a good begin. |
@ruanwenjun ok, I'll give detail design later |
@zhuxt2015 Greate feature,could you please introduce more detail about the leader master and other masters. |
leader选举
监控及信息存储
Leader election
Monitoring and information storage
|
Hi @zhuxt2015 I am also interested in implementing this issue. Maybe I can join the discussion of design and implementation |
@leo-lao Great! Thank you for joining, I'm completed most of mostly functions, I will submit a PR this week, then let's discuss the subsequent division of development work. |
Before submit PR, it's better to provide a detail design. The current design is not enough, we need to consider how to persistent data in disk, and how to implement the lock, how to maintain the data. Do we need to use some lib or we will implement the raft by ourselves. |
I will use sofa-jraft lib, here is Github Repository and User Guide sofa-jraft introductionSOFAJRAFT is a production-grade java implementation of RAFT consensus algorithm. SOFAJRaft is licensed under the Apache License 2.0. SOFAJRaft relies on some third-party components, and their open source protocol is also Apache License 2.0. The core component is StateMachine and RheaKV . StateMachine is an implementation of users’ core logic. It calls the onApply(Iterator) method to apply log entries that are submitted with Node#apply(task) to the business state machine. RheaKV is a lightweight, distributed, and embedded KV storage library, which is included in the JRaft project as a submodule. Ephemeral NodeAll node information is stored in StateMachine's memory, StateMachine manages the registration and downtime of nodes, When a new node joins the cluster, a heartbeat packet is sent to the leader master, The last update time of the node is recorded and synchronized to all masters。When there is a node down, Ephemeral Node Refresh Thread scan records in StateMachine , When the last update time differs from the current time by more than a certain amount of time, nodes are removed and the removed results are synchronized to other masters. Subscribe/NotifyThe design of Subscribe/Notify is the same with ephemeral node, when leader master' StateMachine senses a data change in the server , then it will trigger the subscribed listener. Global LockThe design of global lock is the same with ephemeral node, there will be a KVStore in the StateMachine to store the lock info. RheaKVStore will store the lock of master server and clear the expiry lock. |
@zhuxt2015 Please follow the dsip https://dolphinscheduler.apache.org/en-us/community/DSIP.html process to create DSIP, thanks |
@zhuxt2015 I searched available raft implementations, and found apache ratis may be one better choice?
this is not so acceptable for one Apache Project. On the other hand, I found apache ratis used by apache ozone and alluxio, which add more credit |
@leo-lao |
Is it is a must to implement |
This is not a good idea, you need to import the |
We need to reach a consensus that we import raft just as a new registry plugin, this will not affect our existing plugin. |
@leo-lao For the time being, backward compatibility should be guaranteed, The user can choose to use raft registry or zookeeper registry. |
Gotcha, then your idea works |
Search before asking
Description
The role of zookeeper
Problems caused by zookeeper
Advantages of remove zookeeper
Blue print of remove zookeeper
Use case
No response
Related issues
#6680
Are you willing to submit a PR?
Code of Conduct
The text was updated successfully, but these errors were encountered: