Hi community

Currently ShardingSphere integrates Vert.x as the database driver of
ShardingSphere-Proxy [1]. ShardingSphere-Proxy MySQL using Vert.x as
the database driver does have a certain performance improvement
compared to using JDBC, but the improvement is not as large as
expected.
During the actual development and use of Vert.x-based
ShardingSphere-Proxy, we encountered many problems:
- Vert.x-based asynchronous code increases coding complexity and
debugging costs.
- The existing metadata loading logic is developed based on JDBC
(blocking I/O model), and the workload of refactoring the metadata
loading logic into asynchronous Vert.x is very heavy. Therefore,
ShardingSphere-Proxy driven by Vert.x database cannot use cluster
mode.
- The metadata code is coupled with JDBC, and requires some
refactoring before working with Vert.x to decouple the code from JDBC.
- Vert.x does not have a mature solution for distributed transactions,
and transactions have not reached a production-ready state.
- The ShardingSphere team doesn't have much energy to put into Vert.x driver.
- JDBC is standard for Java compared to Vert.x.
- Java 19 introduced Virtual Thread to improve performance without
changing Java's multithreaded programming model. Although the
performance of Virtual Thread has not yet reached the ideal state, it
may be able to help ShardingSphere to improve the performance in the
future without a lot of code modification.
Therefore, we intend to separate the current Vert.x code in
ShardingSphere into a separate branch for maintenance to reduce the
cost of understanding and maintaining the main code.
Please voice your opinions as fully as possible. Thank you.

[1] https://github.com/apache/shardingsphere/issues/13957

Regards,
Weijie

-----------------------------------------------

Wu Weijie 吴伟杰
Apache ShardingSphere PMC
GitHub@TeslaCN

Reply via email to