Henry2SS opened a new issue, #17941:
URL: https://github.com/apache/doris/issues/17941

   ### Search before asking
   
   - [X] I had searched in the 
[issues](https://github.com/apache/doris/issues?q=is%3Aissue) and found no 
similar issues.
   
   
   ### Description
   
   ### Background
   Background
   Now doris uses BDBJE to process metadata log. In the scenario of high 
concurrent writing, there are performance problems.
   
   The write latency of BDBJE is between 1 ms and tens of ms, and only supports 
single concurrent write. The theoretical maximum TPS is around 1000. Therefore, 
there are serious performance problems in high-concurrency writing scenarios.
   
   ### Pressure test
   We tested doris' BDBJE with only one FE node on creating databases. In the 
locked state, the write TPS is about 800+; in the case of removing the lock, 
the write TPS is about 1500+.
   
   ### Industry Mainstream
   ZK writes TPS 30000+.
   RaftKeeper writes TPS at 70000+. [RaftKeeper 
Benchmark](https://github.com/JDRaftKeeper/RaftKeeper/blob/master/benchmark%2FBenchmark.md)
   
   
   
   ### The scheme to use raft
   #### Current situation of Doris FE:
   
   
    
   
![image](https://user-images.githubusercontent.com/45096548/226235855-ae7581a5-a787-48e1-a653-78308dc64566.png)
   
   
   #### The general idea of Raft management Log:
   1. Implement the RaftCore module with C++, realize Doris FE log storage, and 
replace the original BDBJE.
   2. The Java layer implements RaftJournal to implement the Journal interface.
   
   
   
   #### RaftCore Design:
   1. Interface module: C++ RaftCore, adding, deleting, checking, member 
changing, and initialization and closing
   interface. Just provide a JNI interface. The write and read JNI interfaces 
support concurrent calls.
   2.log module, state machine module, leader election
   
   
   #### RaftJournal Design:
   1. When FE initializes RaftJournal, it calls the JNI interface to initialize 
the underlying C++ implementation
   The RaftCore.
   2. RaftJournal internally uses the JNI interface to store and read metadata.
   3. When closing FE, call the JNI interface to close the RaftCore implemented 
by the underlying C++.
   4. Members change the JNI interface.
   
   
   
   ### Solution
   
   use RaftKeeper instead of BDBJE
   
   ### Are you willing to submit PR?
   
   - [X] Yes I am willing to submit a PR!
   
   ### Code of Conduct
   
   - [X] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
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...@doris.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to