chengjianyun commented on issue #3954:
URL: https://github.com/apache/iotdb/issues/3954#issuecomment-919788803


   > Linearizability consists of two aspects: consensus and query 
implementation, we may have spent some efforts on consensus, but little on 
query implementation, and you should not blame one for another. Meanwhile, 
queries in IoTDB may be very different from those in systems like etcd, and the 
concern of query implementation could be also different.
   
   Can't agree more.
   
   > Relying on another library for core functionalities is risky. Other 
projects keep bug fixing and refactoring too, it is hard to say if we can catch 
up with them after some time point. And it would become very difficult to 
implement any improvements on it, which may eventually make IoTDB lack of 
competitiveness, as the most important advantage of current IoTDB lies on its 
superior performance, we would completely lose control if the consensus part 
becomes a bottleneck. Ans should any major bug occur, we will have to wait 
another team to fix it, because fixing it ourselves will create forks.
   
   The raft libraries often only provides the ability of consensus on Raft log, 
it doesn't affect business logic much and doesn't force everything is 
linearization. With proper 3rd party library, we could have enough flexibility 
to optimize and improvement performance. The production 3rd party libraries 
should have been verified by some great productions so that we can believe no 
major bugs happen.
   
   > Also from my personal point of view, I would not hope IoTDB to just become 
an integration of libraries, without owning its core techniques, which will 
make us easily overtaken by those who are more willing to challenge.
   > 
   > Above all, most importantly, before you turn to another method, you should 
answer the following questions:
   > 
   > 1. What is the problem of the current method, do I have any proof?
   Updated in description of the issue.
   > 2. Is the new method really better than the current one, how do I show it?
   From view of availability, maintainability and code structure, I think yes, 
the new method would be better than current one. For performance, I'm not sure 
as it needs experiment. But I think performance lose will be small or no 
performance lose. Because current implementation of Raft doesn't apply most of 
optimizations which has been made in other system such as async append, async 
apply, etc.
   > 3. Is switching to the new method a better choice than improving the 
current one, is it really that easy?
   The safety properties is too agile to guarantee without enough tests for 
Raft. Building up a systematic test cases is really hard and looks is 
impossible under currently implementation(Raft and Business logic mix 
together). Of course, integrate the new library means we may change current 
structure, the effort can be evaluated after investigation. 
   >    Being doubtful is good, but solid evidence is more convincing.
   
   


-- 
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: reviews-unsubscr...@iotdb.apache.org

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


Reply via email to