RPC Protocol Triple&Dubbo Benchmark Testing
- The implementation of the Dubbo protocol in Dubbo3 is basically on par with the Dubbo2 version in terms of performance.
- Since the Triple protocol is built on HTTP/2, RPC calls over a single link do not show an improvement compared to Dubbo2 based on TCP, and there is actually a certain decrease in some calling scenarios. However, the Triple protocol has greater advantages in gateway penetration, universality, and overall throughput improvement brought by the Stream communication model.
- Triple is expected to perform better under gateway proxy scenarios, and benchmarks were not provided in the current stress test environment.
1.1 Environment
| Description |
---|
Machine | 4C8G Linux JDK 1.8 (Provider) 4C8G Linux JDK 1.8 (Consumer) |
Stress Test Cases | RPC method types include: no-parameter no return value, ordinary pojo return value, pojo list return value
Version 2.7 Dubbo protocol (Hessian2 serialization) Version 3.0 Dubbo protocol (Hessian2 serialization) Version 3.0 Dubbo protocol (Protobuf serialization) Version 3.0 Triple protocol (Protobuf serialization) Version 3.0 Triple protocol (Protobuf plus Hessian2 serialization) |
Stress Testing Method | In a single link scenario, the consumer starts 32 concurrent threads (the current machine configuration has a balanced qps rt concurrency), continuously collecting test data Test data is obtained from https://github.com/apache/dubbo-benchmark |
1.2 Data Analysis
| Dubbo + Hessian2 2.7 | Dubbo + Hessian2 3.0 | Dubbo + Protobuf 3.0 | Triple + Protobuf 3.0 | Triple + Protobuf(Hessian) 3.0 |
---|
No-parameter Method | 30333 ops/s 2.5ms P99 | 30414 ops/s 2.4ms P99 | 24123 ops/s 3.2ms P99 | 7016 ops/s 8.7ms P99 | 6635 ops/s 9.1ms P99 |
Pojo Return Value | 8984 ops/s 6.1 ms P99 | 12279 ops/s 5.7 ms P99 | 21479 ops/s 3.0 ms P99 | 6255 ops/s 8.9 ms P99 | 6491 ops/s 10 ms P99 |
Pojo List Return Value | 1916 ops/s 34 ms P99 | 2037 ops/s 34 ms P99 | 12722 ops/s 7.7 ms P99 | 6920 ops/s 9.6 ms P99 | 2833 ops/s 27 ms P99 |
1.2.1 Comparison of Different Versions of Dubbo Protocol Implementations
Figure 3 Comparison of Dubbo protocol implementations across different versions
- In terms of the default combination of Dubbo RPC + Hessian, Dubbo3 and Dubbo2 are basically on par in performance across different calling scenarios.
1.2.2 Dubbo Protocol vs. Triple Protocol
Figure 4 Triple vs Dubbo
- Looking solely at point-to-point calls between Consumer and Provider, it can be seen that the Triple protocol does not have an advantage; similarly using Protobuf serialization, Dubbo RPC protocol overall performance still outperforms Triple.
- The implementation of Triple in version 3.0 will continue to be optimized, but it cannot completely change the disadvantage of “HTTP/2-based RPC protocol” compared to “TCP-based RPC protocol” in certain scenarios.
1.2.3 Additional Gateway Scenarios
TBD
1.2.4 Throughput Improvement Simulating Stream Communication Scenarios
TBD