【问题标题】:Go JSON RPC v2 over HTTP通过 HTTP 转到 JSON RPC v2
【发布时间】:2014-09-24 08:53:11
【问题描述】:

Go 世界中有没有实现 JSON RPC 2.0 (HTTP) 的项目,尤其是批量查询的特性?

一些背景知识,我知道有一个 Go 内置的,但它不是通过 HTTP 的,而且 Gorilla 看起来支持 V2(在 v2 文件夹中,但我找不到它的文档),但正如我测试的那样它响应像“[{valid_request...},{valid_request...}]”这样的组合请求的空结果。也许它还没有实施批处理。 (我是否遗漏了什么来做对?)

【问题讨论】:

  • 请参阅gorillatoolkit.org/pkg/rpc/json#overview。上次我查看时,Gorilla 只是 JSON-RPC v1。我目前还不知道 Go 的 v2 客户端,但希望其他人会知道。
  • 是的,但是在代码库中的“gorilla/rpc”下有一个名为“v2”的文件夹。我做了一些测试,发现这个编解码器在请求中需要一个额外的字段“jsonrpc”:“2.0”才能工作,params字段中的“[...]”也消失了..但是我没有找到任何关于的逻辑批量查询。一个好处是代码不复杂,可以自己添加批处理。
  • 如果您设法添加批处理,请向 Gorilla 团队发送拉取请求,以防他们想要合并您的更改。
  • 是的,我设法让批处理工作。以我的方式,我需要修改那些基本接口以将批处理查询视为默认情况,并将单个查询视为普通批处理查询的特殊情况。变化有点太大了。我不知道 Gorilla 团队是否真的感兴趣。此外,还有一些生产阈值控制尚未完成,例如限制一批最大查询等。

标签: json go rpc


【解决方案1】:

由于我目前找不到对 JsonRpc 2.0 的现成 Go 服务器支持,我修改了 gorilla JsonRPC 2.0 以支持批处理查询。分叉的仓库位于 https://github.com/jason-xxl/rpc 。只需将导入路径从“gorilla/rpc/v2”更改为“jason-xxl/rpc/v2_batch”即可获得可测试的批处理查询启用服务器。 (如果我错过了已经支持 2.0 批处理的任何一个,请告诉我。)

【讨论】:

  • 谢谢杰森!您的工作是否已合并回 gorilla/rpc/v2?还是我应该继续去拿你的叉子?
  • 嗨,我没有撤回请求,因为它更适合我们的用例(尚未完全测试覆盖),更重要的是,在生产中,您需要设置允许的最大子请求的阈值单个父请求,否则您的服务器很容易被有效的巨大请求关闭。但是代码显示了您可以参考的可能实现。
猜你喜欢
  • 1970-01-01
  • 2013-12-11
  • 2017-10-19
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
  • 2012-07-24
  • 1970-01-01
相关资源
最近更新 更多