`

对dubbo进行重构,支持thrift原生协议直接调用

阅读更多

整体思路:不入侵,不改变dubbo原来的任何特性,新增对thrift原生协议支持,原生协议的调用,同样可以进行原来的监控统计。

唯一丢失的特性,就是没有了软路由。因为原生协议不是使用dubbo客户端调用。

 

网上有一种改造的方法,对整条调用链都改了,包括:protocol,exchange,transport,request,response都改了,使用thrift原生server解释执行方法。

这种做法入侵太大,而且完全没有必要。如果你认真看内置的thrift解码、编码模块,你会发现dubbo本身在内部就是模仿了thrift原生client和server进行编码解码,实际上执行效果和性能是完全一样的。

 

重构方法:

1、对dubbo schema的service标签增加一个属性:thrift_native="true"

2、对内置的thrift解码、编码模块进行改造,根据thrift_native值,去兼容原生调用,关键在于原生调用的时候,正确解码出request和编码response。

 

重构只用了一天时间,但研究源码要花很多时间。经过简单测试,已经能正常使用,稍后放到git上。

分享到:
评论
1 楼 wq13480 2016-09-23  
求分享的GIT!!!

相关推荐

    thrift官方代码+与dubbo集成支持原生thrift协议

    描述中提到的"与dubbo集成支持原生thrift协议"是指将Thrift与Dubbo框架结合使用。Dubbo是阿里巴巴开源的一个高性能、轻量级的Java服务治理框架,它专注于服务的暴露、调用、监控和治理。Thrift的原生协议是二进制的...

    nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用.

    标题中的“nodejs使用原生的dubbo协议打通了dubbo的rpc方法调用”意味着在Node.js环境中,开发者成功地实现了对Dubbo服务的RPC(远程过程调用)访问,利用了Dubbo协议的特性。Dubbo是阿里巴巴开源的一个高性能、轻量...

    dubbo-rpc-thrift-2.8.4.jar

    java运行依赖jar包

    ice-dubbo-thrift-grpc性能测试对比

    《ice-dubbo-thrift-grpc性能测试对比》 ...如果对性能有极高要求,ice可能是不错的选择,而其他框架如dubbo、thrift和grpc则在特定场景下可能更具优势。在实际应用中,开发者需要结合实际情况进行详细评估和选型。

    Dubbo调用java接口程序

    5. **协议(Protocol)**:服务交互的规则,Dubbo支持多种协议,如Dubbo协议(高效,适合内部通信)、RMI、Hessian等。 6. **集群(Cluster)**:隐藏服务提供者的细节,如多台服务器,负载均衡,容错等。 7. **...

    Dubbo 实现远程调用

    1、Dubbo 远程调用实现 2、内带zookeeper-3.4.5消息服务 3、直接导入myeclipse运行:dubbo-server导入tomcat中运行 4、dubbo-client 运行测试类/dubbo-client/src/com/fengjx/main/Consumer.java

    Dubbo Dubbo

    使用Dubbo进行远程调用实现服务交互,它支持多种协议,如Hessian、HTTP、RMI、Memcached、Redis、Thrift等等。由于Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要...

    dubbo提供与调用

    Dubbo是中国阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,它主要负责服务的发布、发现、调用以及监控。在"**dubbo提供与调用**"这个主题下,我们将深入探讨Dubbo的核心概念、配置文件以及Web配置。 1. **...

    springboot 调用dubbo实例

    同时,Spring Boot与Dubbo的整合也支持使用Spring Cloud的API Gateway进行路由和过滤,以及Spring Cloud Config进行配置中心管理,以提升整体系统的灵活性和可维护性。 通过以上步骤,你可以在Spring Boot应用中...

    基于groovy实现 java脚本动态编译、部署、发布;可以通过脚本直接调用dubbo接口.zip

    本文将深入探讨如何基于Groovy实现Java脚本的动态编译、部署和发布,并且介绍如何通过Groovy脚本直接调用Dubbo接口,从而提高开发效率和灵活性。 Groovy是一种基于Java平台的强大的动态编程语言,它具有简洁的语法...

    34_dubbo都支持哪些通信协议以及序列化协议?.zip

    标题 "34_dubbo都支持哪些通信协议以及序列化协议?" 暗示了我们即将探讨的是关于Dubbo框架在网络通信和数据序列化方面的内容。Dubbo是阿里巴巴开源的一个高性能、轻量级的Java服务治理框架,它为分布式应用提供了...

    xmljava系统源码-dubbo-thrift:改自yankai913的项目

    thrift协议扩展 ` (thrift2(?),thrift093(建议在系统里都使用这个协议),swift(暂时不支持)),以原生协议提供服务. thrift0.9.1之后开始支持多路复用;这里我新增的部分没有使用这一特性,所以理论上是支持从thrift0.8.0...

    dubbo xsd的支持

    在IT行业中,Dubbo是一个非常知名的Java开源框架,主要...同时,随着Dubbo版本的更新,xsd文件也会相应地进行修订和扩展,以适应新的功能和特性。因此,时刻保持xsd文件与Dubbo版本的同步也是开发者需要注意的事项。

    dubbo-hessian协议http请求demo(java)

    - 在消费者端的代码中,你可以像调用本地方法一样直接调用服务接口的方法,Dubbo会通过Hessian协议将调用转换为HTTP请求发送给服务提供者。 - 由于Hessian的序列化特性,数据类型可以被准确地传输,包括基本类型、...

    dubbo调用的例子

    Dubbo调用例子详解 在分布式系统开发中,Dubbo是一个广泛应用的服务框架,它由阿里巴巴开源,旨在提高服务治理的效率和灵活性。本教程将深入探讨一个基于Dubbo的调用例子,涵盖从接口定义、服务提供者到消费者的...

    使用Dubbo对传统工程进行服务化改造后的服务调用测试--源码.zip

    本篇文章将深入探讨如何使用Dubbo对传统非服务化工程进行改造重构,以及服务化改造后的服务调用测试。 首先,让我们了解Dubbo的核心功能。Dubbo提供了服务注册与发现、远程调用、负载均衡、容错、监控等关键特性,...

    (源码)基于Thrift和Dubbo框架的微服务系统.zip

    传输协议支持多种传输协议(如二进制协议、压缩协议、JSON协议等),优化数据传输效率。 服务模型提供多种服务模型(如单线程服务、多线程服务、非阻塞服务等),适应不同的应用场景。 ### Dubbo 服务注册与发现...

    dubbo示例代码dubbo-sample

    Dubbo支持多种通信协议,如dubbo、rmi、hessian等。在`dubbo.properties`配置文件中,可以设置服务使用的通信协议,例如默认的dubbo协议。不同的协议会影响服务调用的性能和特性。 5. **负载均衡(Load Balance)*...

    Dubbo+Dubbo生产者,Dubbo消费者+Dubbo消费者调用生产者的服务的小demo

    本项目案例“妻子”作为消费者去调用生产者(“丈夫”)的服务--洗碗 本项目需要注意 @DubboReference private HusbandService husbandService; @EnableDubbo @DubboService 这几个注解不能忘,否则会报错,或者...

    Springcloud项目调用dubbo项目.zip

    使用注解DubboRefence可以标注接口类为调用dubbo api的接口,同时 @DubboReference 的注解可以像Dubbo的Refence一样指定接口的调用参数,@DubboReference 注解标注的接口类会执行Http协议转Dubbo协议,之后的接口...

Global site tag (gtag.js) - Google Analytics