Dubbo中的那些坑(四)HTTP调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo中的那些坑(四)HTTP调用相关的知识,希望对你有一定的参考价值。

参考技术A

Dubbo实现了HTTP调用,但只是走了HTTP协议而已,并没有使用诸如REST的调用方式。换句话说,其他语言不能直接调用Dubbo的HTTP协议。而如今异构的系统的REST调用都比较常见,也出现了对Dubbo的REST协议的各种实现。

当当网改进的Dubbox,用了JBOSS的RESTEasy实现REST功能,比Jersey、Restlet、CXF好用。具体参见当当网开源项目: Dubbox

热心网友在GitHub上向当当网提交了基于SpringMVC的REST调用实现( Pull request地址 )。互联网项目中SpringMVC用的挺多,基于SpingMVC的实现还是挺好的。(SpringCloud用的也是SpringMVC,将Dubbo作为SpringCloud服务后,可以提供服务给SpringCloud端使用。感兴趣可以参阅,Dubbo的Spring-boot化)

GitHub上的热心网友(好像是阿里巴巴员工)写了个Dubbo-Plus的项目,有实现Dubbo的HTTP调用( 项目地址 ),没用啥框架,手动解析HTTP请求。

以上几种调换用都存在一个问题,并没有传入RpcContext对象,导致一些Dubbo的原生功能如Token校验等无法使用。这里用RestExpress(基于Netty,可脱离Tomcat或者Jetty等servlet容器运行,以极高的性能著称。参见 Benchmark , Benchmark2 )写了简单的实现。通过将HTTP请求头的值,写入RpcContext中来解决这一问题。项目地址: GitHub:xydonne/dubbo-rpc-restexpress

以上是关于Dubbo中的那些坑(四)HTTP调用的主要内容,如果未能解决你的问题,请参考以下文章

文件预览——一路躺过来的那些坑

ionic打包中的那些坑

Netty中的那些坑

程序员面试中会遇到那些坑,如何必坑

JAVASCRIPT 调用 OCX 的那些坑

友盟社交分享中的那些坑