yulangz opened a new pull request, #7301: URL: https://github.com/apache/rocketmq/pull/7301
### Which Issue(s) This PR Fixes <!-- Please ensure that the related issue has already been created, and [link this pull request to that issue using keywords](<https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword>) to ensure automatic closure. --> Fixes #7300 ### Brief Description Use [JRaft](https://github.com/sofastack/sofa-jraft) to Implement Controller. #### New Configuration ```text # 可选 jRaft、DLedger,默认 DLedger controllerType=jRaft # jRaft 相关 # 选举超时时间,默认 1 秒 jRaftElectionTimeoutMs=1000 # 进行 Snapshot 的间隔,默认 1 小时,此处建议更长的时间,如 1 天、3 天 jRaftSnapshotIntervalSecs=3600 # group id jRaftGroupId=jRaft-Controller # 本机 jraft 的地址 jRaftServerId=localhost:9880 # jraft 组的地址 jRaftInitConf=localhost:9880,localhost:9881,localhost:9882 # jRaft Controller 中,jRaft 与 提供给 Broker 的 RPCService 不共用套接字资源,下面设置的是 Controller 上监听 Broker RPC 的端口。注意 IP 与端口要与 jRaftInitConf 一一对应。 jRaftControllerRPCAddr=localhost:9770,localhost:9771,localhost:9772 ``` #### Design On the Broker side, the JRaft Controller did not make any modifications and continued to use all the designs and concepts of DLedger Controller, such as Epoch and SyncStateSet. On the Controller side, JRaft Controller not only migrated, but also refactored the original components and code logic, not only supporting SnapShot functionality, but also solving the unreasonable aspects of the original design, making the Controller conform to linear consistency. ### How Did You Test This Change? Use [Openchaos](https://github.com/openmessaging/openchaos) to test it. <!-- In order to ensure the code quality of Apache RocketMQ, we expect every pull request to have undergone thorough testing. --> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org