dubbo协议层 jsonrpc协议迁移到http协议

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo协议层 jsonrpc协议迁移到http协议相关的知识,希望对你有一定的参考价值。

参考技术A 周末看到社区的协议迁移开始被提交了pr,还没merge,打算拜读一下

看到 HttpRemoteInvocation 被更改了,这里是要把 json-rpc 协议转换为 http 协议

HTTP 请求本身也可以看做是 RPC 的一种具体形式。HTTP 请求也一样是可以从本地发一个信号到服务器,服务器上执行某个函数,然后返回一些信息给客户端。

经常用的一些数据通过HTTP协议来传输,thrift,grpc,xml-rpc,json-rpc都是通过HTTP传输的。也就说json-rpc是依赖http协议传输的,所以新建一个公共的代理协议,凡是用http协议传输的数据格式都设置这个协议,是比较好的方案。

根据dubbo的类机构继承图,是沿用SPI机制实现的 AbstractProxyProtocol
这里比较重要的是 protocolBindingRefer 方法。,构建一个DubboInvoker对象,根据dubbo的动态代理不断找到调用方的目标对象,添加到invoke当中,但这里没有指定要传输的格式,所以在dubbo序列化的时候还是会走默认的hessian协议,需要对协议中传入的格式进行校验

基本思路:将参数中的service(传输格式传入)设置到dubbo的代理,拿到代理之后添加到invoke的责任链当中,返回一个dubbo的代理对象给调用方

Odoo使用jsonrpc协议

    • 在controller添加一个test方法, 不需参数
      @http.route(‘/test‘, type = ‘json‘, auth = ‘public‘)
          def test(self):
              phases = http.request.env[‘project.task.type‘].search([])
              list = []
              dic = {}
              for phase in phases:
                  list.append(phase.name)
              dic[‘phases‘] = list
              return json.dumps(dic)

      注意:project.task.type 这个model需要设置为公开的群组访问控制

 




以上是关于dubbo协议层 jsonrpc协议迁移到http协议的主要内容,如果未能解决你的问题,请参考以下文章

Dubbo中重要的protocol协议层概述

Dubbo协议

Dubbo系列dubbo的核心技术--RPC调用

深入浅出Dubbo3原理及实战「新特性简介」Dubbo3新特性要点之RPC协议介绍

dubbo协议

Odoo使用jsonrpc协议