zl程序教程

您现在的位置是:首页 >  后端

当前栏目

dubbo-http-thrift随笔

dubboHTTP 随笔 thrift
2023-09-14 09:02:12 时间

前几天应两个哥们的需求,需要一个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响应里的异常处理。


gRPC(一)入门:什么是RPC? RPC是一种方法,而HTTP是一种协议。两者都常用于实现服务,在这个层面最本质的区别是RPC服务主要工作在TCP协议之上(也可以在HTTP协议),而HTTP服务工作在HTTP协议之上。由于HTTP协议基于TCP协议,所以RPC服务天然比HTTP更轻量,效率更胜一筹。
HTTP和RPC区别(通俗易懂超级好) 用户只要在其之前进行二次开发就行,对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说的话需要学习特定领域语言这个特性,还是有一定成本的。
SSM(十三) 将dubbo暴露出HTTP服务(上) 通常来说一个dubbo服务都是对内给内部调用的,但也有可能一个服务就是需要提供给外部使用,并且还不能有使用语言的局限性。 比较标准的做法是对外的服务我们统一提供一个openAPI,这样的调用方需要按照标准提供相应的appID以及密钥来进行验签才能使用。这样固然是比较规范和安全,但复杂度也不亚于开发一个单独的系统了。
SSM(十三) 将dubbo暴露出HTTP服务(下) 通常来说一个dubbo服务都是对内给内部调用的,但也有可能一个服务就是需要提供给外部使用,并且还不能有使用语言的局限性。 比较标准的做法是对外的服务我们统一提供一个openAPI,这样的调用方需要按照标准提供相应的appID以及密钥来进行验签才能使用。这样固然是比较规范和安全,但复杂度也不亚于开发一个单独的系统了。
http协议基础教程 HTTP 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
Dubbo 在跨语言和协议穿透性方向上的探索:支持 HTTP/2 gRPC 和 Protobuf 本文整理自刘军在 Dubbo 成都 meetup 上分享的《Dubbo 在多语言和协议穿透性方向上的探索》。 本文总体上可分为基础产品简介、Dubbo 对 gRPC (HTTP/2) 和 Protobuf 的支持及示例演示三部分,在简介部分介绍了 Dubbo、HTTP/2、gRPC、Protobuf 的基本概念和特点;第二部分介绍了 Dubbo 为何要支持 gRPC (HTTP/2) 和 P