dubbo源码之消费端启动的高性能优化方案
一、序言
dubbo作为一款最流行的服务治理框架之一,在底层做了很多的优化,比如消费端在启动的时候做了很多性能提升的设计,接下来从连接的层面、序列化功能的层面进行介绍下。
二、优化点
1、消费端在服务启动的时候会调用DubboProtocol类的protocolBindingRefer方法来创建执行器Invoker,其中这个方法的optimizeSerialization方法做了序列化方面的优化;
2、消费端在服务启动的时候会调用DubboProtocol类的protocolBindingRefer方法来创建执行器Invoker,其中这个方法的getClients(url)方面做了连接方面的优化;
接下来从源码层面介绍下做了具体的什么优化。
三、源码
1、序列化优化
private void optimizeSerialization(URL url) throws RpcException {String className = url.getParameter(OPTIMIZER_KEY, "");if (StringUtils.isEmpty(className) || optimizers.contains(className)) {return;}logger.info("Optimizing the serialization process for Kryo, FST, etc...");try {Class clazz = Thread.currentThread().getContextClassLoader().loadClass(className);if (!SerializationOptimizer.class.isAssignableFrom(clazz)) {throw new RpcException("The seri