Feature features |
Maturity Maturity Level |
Strength Strength |
Problem Problems |
Advise recommendations |
User Users |
Zookeeper Registration Center |
Stable |
Support network-based clustering, there are a wide range of open-source products, we recommend the use of dubbo-2.3.3 or above version (recommended) |
Dependent on the stability of the zookeeper |
Can be used in production environments |
|
Redis Registration Center |
Stable |
Supports a client-based, dual-write clustering approach with high performance |
Requires server time synchronization to check for heartbeat stale dirty data |
Can be used in production environments |
|
Multicast Registration Center |
Tested |
De-centralized, no need to install registration center |
relies on network tuopu and routing, and is at risk across engine rooms |
Small-scale application or development test environment |
|
Simple Registration Center |
Tested |
Dogfooding, the registry itself is also a standard RPC service |
No cluster support, possibly single point of failure |
Trial |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Simple Monitoring Center |
Stable |
Support Jfreechart Statistics Report |
No cluster support, possibly single point of failure, but does not affect RPC operation after a failure |
Can be used in production environments |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Dubbo Protocol |
Stable |
A single long connection with NiO multiplexing, and the use of thread pools to process requests concurrently, reducing handshakes and increasing concurrency, performance is better (recommended) |
Single connection becomes a bottleneck in large file transfers |
Can be used in production environments |
Alibaba |
RMI Protocol |
Stable |
Interoperable with native RMI, based on TCP protocol |
Occasionally the connection fails and the stub needs to be rebuilt |
Can be used in production environments |
Alibaba |
Hessian protocol |
Stable |
Interoperable with native Hessian, based on HTTP protocol |
Requires Hessian.jar support, the overhead of HTTP short connection |
Can be used in production environments |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Netty Transporter |
Stable |
JBoss NIO Framework with better performance (recommended) |
One request to dispatch two kinds of events, to block unwanted events |
Can be used in production environments |
Alibaba |
Mina Transporter |
Stable |
Established NIO framework, stable |
To send a message queue out of time, under great pressure, there will be FULLGC |
Can be used in production environments |
Alibaba |
Grizzly Transporter |
Tested |
Sun's NIO framework, applied to the GlassFish server |
The thread pool is not extensible and filter cannot intercept the next filter |
Trial |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Hessian serialization |
Stable |
Good performance, multi-lingual support (recommended) |
Hessian version compatibility is not good, and the application may use the Hessian conflict, Dubbo embedded hessian3.2.1 source code |
Can be used in production environments |
Alibaba |
Dubbo serialization |
Tested |
By not transmitting the pojo of the class meta information, in a large number of Pojo transmission, performance is better |
External file declaration is required when the Parameter object increments the field |
Trial |
|
Json serialization |
Tested |
Plain text, can be resolved across languages, by default with Fastjson parsing |
Poor performance |
Trial |
|
Java serialization |
Stable |
Java Native support |
Poor performance |
Can be used in production environments |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Javassist proxyfactory |
Stable |
Better performance (recommended) with byte code generation instead of reflection |
Depending on the Javassist.jar package, which consumes the JVM's perm memory, Perm may have to be larger: java-xx:permsize=128m |
Can be used in production environments |
Alibaba |
JDK proxyfactory |
Stable |
JDK native support |
Poor performance |
Can be used in production environments |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Failover Cluster |
Stable |
Failed automatic switchover, when a failure occurs, retry other servers, usually for read operations (recommended) |
Retry brings a longer delay |
Can be used in production environments |
Alibaba |
Failfast Cluster |
Stable |
Fast failure, only one call, failure immediate error, usually for non-idempotent write operations |
Call failure may occur if a machine is rebooting |
Can be used in production environments |
Alibaba |
Failsafe Cluster |
Stable |
Fail-safe, directly ignored when an exception occurs, usually for operations such as writing audit logs |
Loss of Call information |
Can be used in production environments |
Monitor |
Failback Cluster |
Tested |
Failed auto-recovery, background logging failed requests, timed re-sending, usually for message notification operations |
Unreliable, restart lost |
Can be used in production environments |
Registry |
Forking Cluster |
Tested |
Multiple servers are called in parallel, as long as a success is returned, typically for high-real-time read operations that require higher |
Need to waste more service resources |
Can be used in production environments |
|
Broadcast Cluster |
Tested |
Broadcast call all providers, call each one, an error error, usually used to update the provider local state |
Speed is slow, any one error is error |
Can be used in production environments |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Random LoadBalance |
Stable |
Random, set random probability by weight (recommended) |
High probability of collisions on a cross section, and transient pressure may occur when retrying |
Can be used in production environments |
Alibaba |
Roundrobin LoadBalance |
Stable |
Round robin, set round-robin ratio by weight after convention |
There is a slow machine build-up request problem, and extreme conditions can create avalanches |
Can be used in production environments |
|
Leastactive LoadBalance |
Stable |
Minimum number of active calls, random of the same active number, active number means the count difference before and after the call, so that slow machines receive fewer requests |
Weight is not supported, in capacity planning, can not be weighted to the pressure of a machine pressure measurement capacity |
Can be used in production environments |
|
Consistenthash LoadBalance |
Stable |
Consistent hash, the same parameter requests are always sent to the same provider, when a provider hangs, the original request to the provider, based on the virtual node, divided into other providers, will not cause drastic changes |
Uneven pressure sharing |
Can be used in production environments |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Conditional Routing Rules |
Stable |
Conditional expression-based routing rules for easy and easy-to-use functions |
Some complex multi-branch conditions, the rules are difficult to describe |
Can be used in production environments |
Alibaba |
Script Routing Rules |
Tested |
Scripting engine-based routing rules with powerful features |
Without running the sandbox, scripting is too powerful to be a backdoor |
Trial |
|
Feature |
Maturity |
Strength |
problem |
Advise |
User |
Spring Container |
Stable |
Automatically load all spring configurations under the Meta-inf/spring directory |
|
Can be used in production environments |
Alibaba |
Jetty Container |
Stable |
Launches an inline jetty for reporting status |
When a large number of pages are accessed, the server's threads and memory are affected |
Can be used in production environments |
Alibaba |
log4j Container |
Stable |
Automatic configuration of the log4j, automatically to log files by process when multi-process startup |
User cannot control the configuration of log4j, not flexible |
Can be used in production environments |
Alibaba |