Dubbo 3.0新特性记录
前言
Dubbo更新了3.0版本,博主抱着好奇的心态一睹芳华。最终的感受就是dubbo3.0针对之前版本的问题进行了一系列的改造和提升。且Dubbo3.0的特性有些还在开发当中。一些已经提供的功能也尚待完善,有bug存在的情况出现。综上所述,如果在dubbo2.x版本能够满足需求的情况下,不建议升级成3.0版本。如果想升级成3.0版本,还需要等dubbo3.0迭代几次,更加成熟后,再考虑升级。下面就简单记录一下Dubbo3.0的新特性。
一、注册模型的改变
在dubbo2.X版本,dubbo提供服务都是以接口的方式注册到注册中心。一个接口注册一个节点,多个接口就注册多个节点。当dubbo提供的服务较多时,这种设计会给注册中心带来很大的压力。因此dubbo3.0对这个问题进行了优化。
dubbo3.0引入了服务级别的注册。只需将应用名和对应的ip、端口注册到注册中心即可。无需再对每个接口进行注册。以此来减少注册中心的压力。
那么只注册了应用,如何查找消费端具体调用的是哪个服务呢?3.0引入了元数据服务的概念。具体接口提供服务的映射关系,都存在了元数据服务里。元数据服务的数据可以默认存在dubbo内部实现的一个服务里,可以手动指定存入ZK等服务中。这样,消费端通过注册中心获取服务列表,然后通过元数据服务映射具体某个接口,进行远程调用。
由此可见,虽然以应用进行了注册,减轻了注册中心的压力,但是引入了元数据服务,提高了使用复杂度。
二、Triple协议
Dubbo3.0新引入了Triple协议。Triple协议可以视为gRPC协议的copy版本。什么是gRPC?如果你在了解dubbo3.0之前,完全没听过gRPC,说明你所涉及的业务或者数据量不需要用到gRPC来达到很高的性能的。所以Triple协议所带来的性能的提升对你而言也是可有可无的。这里只是记录一下dubbo3.0为何引入这个协议。
首先,http1.X版本性能比较低,因为协议的数据格式复杂,解析带来的一定的性能瓶颈,所以http2.0对性能进行了提升。而Triple协议就是基于http2.0的高性能的基础上,又支持了gRPC的远程调用,更具兼容性。这就是Triple协议的特性。
在dubbo2.X版本,dubbo协议是默认的协议,而在3.0版本,Triple协议成为了默认协议。相比dubbo协议,Triple协议的特点有:
- triple协议兼容了gPRC(Triple服务可以直接调用gRPC服务,反过来也可以)
- dubbo协议不是基于的HTTP,不够通用,triple协议底层基于HTTP所以更通用(比如跨语言、跨异构系统实现起来比较方便)
- dubbo协议不支持流式调用。
三、跨语言调用
支持go语言,python语言等应用进行接口的调用。涉及到跨语言调用的服务接口,可以考虑使用dubbo作为服务。可以使用protobuf格式的数据作为数据传输格式,来进行跨语言调用。具体步骤不再详细记录,先了解可以跨语言调用即可。
四、Dubbo与SpringCloud的互通
至目前而已,Dubbo3.0与SpringCloud的互通方式也是很繁琐,但是看趋势以后的发展中肯定会很方便的和SpringCloud进行互通。所以在微服务架构中,使用Dubbo3,0作为远程调用框架的实践尚不成熟。博主预测想要在微服务架构中很普便的使用Dubbo3.0,还需要很长的一段时间。当然这也看Dubbo框架以后更新迭代的方向,也要看实际的业务场景需要。毕竟,在现有的微服务技术架构中,绝大多数情况是满足性能要求和使用要求的,Dubbo3.0带来的性能提升,真的能在实践中普遍应用吗?其实博主并不看好,未来发展如何,让我们拭目以待吧。