dubbo-http-thrift随笔

简介:

前几天应两个哥们的需求,需要一个http协议的thrift服务,具体的需求2点:
1.请求方式是http,然后采用thrift序列化。
2.能够传递隐藏参数在http的header里。

这个周末,2个下午,在公司整出了一个beta版本,具体还有很多地方需要优化,下面会列出具体的优化点。代码地址:https://github.com/yankai913/dubbo-http-thrift,感兴趣的哥们可以去看下。

先说说thrift,如果Getting Started,直接官网http://thrift.apache.org/即可,这里说一下目前最新的版本是0.9.1的新特性,地址:https://issues.apache.org/jira/browse/THRIFT-563,简单点说就是,以前的版本一个端口只能暴漏一个服务,原因取决于TMessage的只传了methodName,而最新的版本methodName里包含了serviceName和methodName,这样,就算方法名相同,但是还有serviceName可以区分,这样一个端口就可以暴露多个服务了。

再说说dubbo,如果Getting Started,直接官方https://github.com/alibaba/dubbo,这里说下关于http的,dubbo暴露http服务时,httpServer有2种,一种是内嵌jetty,在jetty里开个用来处理请求的线程池,这种是默认的,另一种是servlet,配置里是server=servlet,但是它依赖于servlet容器启动来暴露服务,例如tomcat,处理线程交给tomcat管理,这种是推荐的。使用http时,采用了2种序列化,hessian和java自身的序列化,这里加了一种thrift的序列化。

接着说说优化点:
1.代码里写着需要优化或者TODO的地方都要修复。
2.注意类的加载避免内存溢出,减少字节数组的复制。
3.thrift里的序列化方式,代码里hardCode了是二进制,其他的方式应该还有json什么的,需要做个开关,自由选择。
4.序列化和反序列化的优化。
5.暴漏扩展handler。
6.异常容错的处理和response响应里的异常处理。


相关文章
|
3月前
|
负载均衡 网络协议 小程序
SpringCloud远程调用为啥要采用HTTP,而不是RPC?
【8月更文挑战第28天】在微服务架构日益盛行的今天,SpringCloud凭借其强大的生态系统和灵活的集成能力,成为了众多企业构建微服务系统的首选框架。在微服务之间的远程调用中,一个常见的问题是选择HTTP还是RPC(远程过程调用)作为通信协议。本文将深入探讨SpringCloud为何更倾向于采用HTTP而非RPC进行远程调用。
330 5
|
6月前
|
网络协议 Java 程序员
SpringCloud 远程调用为啥要采用HTTP,而不是RPC?
关于SpringCloud远程调用采用HTTP而非RPC。
119 0
|
Dubbo 网络协议 Cloud Native
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
15260 12
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
|
Dubbo Java 应用服务中间件
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(7)
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(7)
111 6
|
Dubbo Java 应用服务中间件
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(6)
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(6)
128 3
|
Dubbo 应用服务中间件 API
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(9)
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(9)
117 4
|
自然语言处理 Kubernetes Dubbo
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(2)
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(2)
163 1
|
自然语言处理 Kubernetes Dubbo
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(1)
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(1)
215 6
|
自然语言处理 运维 Dubbo
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(3)
带你读《Apache Dubbo微服务开发从入门到精通》——二、 HTTP/2(Triple)协议(3)
115 7
|
JSON Java Apache
Http客户端--Feign简介
Http客户端--Feign简介
110 0