看一下“Dubbo 2.7”的三大新特性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看一下“Dubbo 2.7”的三大新特性相关的知识,希望对你有一定的参考价值。

参考技术A 如果你不想将接口的返回值定义为Future类型,或者存在定义好的同步类型接口,则可以额外定义一个异步接口并提供Future类型的方法。

如果你的原始接口定义不是Future类型的返回值,Provider端异步也提供了类似Servlet3.0里的Async Servlet的编程接口: RpcContext.startAsync()

异步过滤器链回调。

从本地的 zookeeper 中取出一条服务数据,通过解码之后,可以看出,的确有很多参数是不必要。

在 2.7 中,如果不进行额外的配置,zookeeper 中的数据格式仍然会和 Dubbo 2.6 保持一致,这主要是为了保证兼容性,让 Dubbo 2.6 的客户端可以调用 Dubbo 2.7 的服务端。如果整体迁移到 2.7,则可以为注册中心开启简化配置的参数:

Dubbo 将会只上传那些必要的服务治理数据,一个简化过后的数据如下所示:

元数据中心的数据可以被用于服务测试,服务 MOCK 等功能。目前注册中心配置中 simplified 的默认值为 false,因为考虑到了迁移的兼容问题,在后续迭代中,默认值将会改为 true。

引入配置中心后,需要注意配置项的覆盖问题。

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带来的性能提升,真的能在实践中普遍应用吗?其实博主并不看好,未来发展如何,让我们拭目以待吧。

以上是关于看一下“Dubbo 2.7”的三大新特性的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo 2.7新特性之异步化改造

新特性

ECMAScript 2019(ES10)新特性简介

java 8 新特性

Dubbo2.7 三大新特性详解

JDK13的 5个新特性,抢先看,开车都追不上了!