rpc、json Rpc和http區別

2021-01-15 DevOps

JSON-RPC示例

1. 帶索引數組參數的rpc調用
--> {"jsonrpc": "2.0", "method": "subtract", "params": [42, 23], "id": 1}
<-- {"jsonrpc": "2.0", "result": 19, "id": 1}

2. 帶關聯數組參數的rpc調用
--> {"jsonrpc": "2.0", "method": "subtract", "params": {"subtrahend": 23, "minuend": 42}, "id": 3}
<-- {"jsonrpc": "2.0", "result": 19, "id": 3}

3. rpc批量調用
--> [{"jsonrpc": "2.0", "method": "sum", "params": [1,2,4], "id": "1"},
{"jsonrpc": "2.0", "method": "notify_hello", "params": [7]},
{"jsonrpc": "2.0", "method": "subtract", "params": [42,23], "id": "2"},
{"foo": "boo"},
{"jsonrpc": "2.0", "method": "foo.get", "params": {"name": "myself"}, "id": "5"},
{"jsonrpc": "2.0", "method": "get_data", "id": "9"}]
<-- [{"jsonrpc": "2.0", "result": 7, "id": "1"},
{"jsonrpc": "2.0", "result": 19, "id": "2"},
{"jsonrpc": "2.0", "error": {"code": -32600, "message": "Invalid Request"}, "id": null},
{"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": "5"},
{"jsonrpc": "2.0", "result": ["hello", 5], "id": "9"}]

1. 不包含調用方法的rpc調用
--> {"jsonrpc": "2.0", "method": "foobar", "id": "1"}
<-- {"jsonrpc": "2.0", "error": {"code": -32601, "message": "Method not found"}, "id": "1"}

2. 包含無效json的rpc調用
--> {"jsonrpc": "2.0", "method": "foobar, "params": "bar", "baz]
<-- {"jsonrpc": "2.0", "error": {"code": -32700, "message": "Parse error"}, "id": null}

3. 無效請求對象的rpc調用
--> {"jsonrpc": "2.0", "method": 1, "params": "bar"}
<-- {"jsonrpc": "2.0", "error": {"code": -32600, "message": "Invalid Request"}, "id": null}

相關焦點

  • Golang 語言使用標準庫 net/rpc/jsonrpc 包跨語言遠程調用
    encoding/gob 包編解碼傳輸數據,gob 編解碼方式僅適用於 Go 應用,如果需要跨語言遠程調用,可以指定支持跨語言的其他編解碼方式,比如 protobuf,或使用 net/rpc 的子包 net/rpc/jsonrpc,它支持JSON-RPC 1.0,通過 json 格式傳輸數據。
  • 從0 到 1:全面理解 RPC 遠程調用!
    首先,給你提兩個問題,帶著這兩個問題再往下看:1、RPC 和 REST 區別是什麼?2、為什麼要採用RPC呢?首先,第一個問題:RPC 和 REST 區別是什麼?你一定會覺得這個問題很奇怪,是的,包括我,但是你在網絡上一搜,會發現類似對比的文章比比皆是,我在想可能很多初學者由於基礎不牢固,才會將不相干的二者拿出來對比吧。
  • 以太坊可用RPC節點列表
    一些RPC節點可能由於不可預知的原因,間歇性的無法訪問,大家使用前可以使用以下命令測試一下RPC節點的連通性:curl RPC_URL -H 'Content-Type: application/json' -X POST --data '{"jsonrpc":"2.0","method
  • 微服務之RPC簡述
    比如說兩臺伺服器A,B,一個應用部署在A伺服器上,想要調用B伺服器上應用提供的函數/方法,由於不在一個內存空間,不能直接調用,就需要通過網絡來表達調用的語義和傳達調用的數據,而這種方式就是rpcRPC 的主要功能目標是讓構建分布式計算(應用)更容易,在提供強大的遠程調用能力時不損失本地調用的語義簡潔性。
  • HTTP-RPC首頁、文檔和下載 - Java的REST庫 - OSCHINA - 中文開源...
    http-rpc
  • gRPC首頁、文檔和下載 - RPC 框架 - OSCHINA - 中文開源技術交流...
    gRPC 是一個高性能、開源和通用的RPC 框架,面向移動和 HTTP/2 設計。目前提供 C、Java 和 Go 語言版本,分別是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.
  • 就能學會以太坊 JSON API 基礎知識!
    我們可以簡單地做以下操作:# Prepare the data we will senddata = {"jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id":1}response = session.post(url, json=data, headers=headers
  • AJAXRPC: javascript調用服務端方法
    它允許你使用Javascript調用服務端方法,基於JSON數據協議,開源授權(LGPL),可同步和異步調用。 使用AJAXRPC,您可以像開發傳統的C/S程序一樣,來開發WEB程序,讓WEB開發更簡單和高效。 支持服務端語言:Java、.Net、PHP。 支持瀏覽器:IE、FireFox、Opera、Safari、Chrome。
  • 微服務RPC框架選美
    我是Google開源的一套面向移動和HTTP/2設計的,高性能的、通用的遠程調用框架。主持人: Xml 配置是用 xml 文件來配置協議 、 服務 、 註冊中心等信息 ,這是 rpc 框架最常用的配置方式,也是最基本的配置方式; 屬性配置 是 用 properties 文件來配置協議 、 服務 、 註冊中心等信息 , 和Xml 配置使用上異曲同工 ; 注釋配置是聲明 Annotation 用來指定需要解析的包名 , 使用 spring-boot
  • Go-HTTP-JSON-RPC
  • 從零開始,徒手擼一個簡單的 RPC 框架,輕鬆搞定!
    由於我們在客戶端調用的是服務端提供的接口,所以我們需要將客戶端調用的信息傳輸過去,那麼我們可以將要傳輸的信息分為兩類第一類是服務端可以根據這個信息找到相應的接口實現類和方法那麼我們就根據要傳輸的兩類信息進行分析,什麼信息能夠找到相應的實現類的相應的方法?
  • 搜狗開源srpc:自研高性能通用RPC框架
    且srpc對於thrift接口描述文件實現了解析和代碼生成,因此用戶在srpc上使用thrift IDL時無需依賴thrift庫。而在baidu-std協議的實現上,吞吐和長尾在大部分場景下依然是srpc更優。且由於workflow支持Windows(同機性能比linux快20%),所以這等同於用戶得以在Windows下使用brpc。
  • 直觀講解一下 RPC 調用和 HTTP 調用的區別!
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫很長時間以來都沒有怎麼好好搞清楚RPC(即Remote Procedure Call,遠程過程調用)和HTTP調用的區別,不都是寫一個服務然後在客戶端調用麼?這裡請允許我迷之一笑~Naive!
  • 五分鐘學後端技術:如何學習Java工程師必須掌握的RPC
    s.serve_forever #開啟循環等待Client.py:fromxmlrpclib importServerProxy #導入xmlrpclib的包s = ServerProxy( "http://172.171.5.205:8080") #定義xmlrpc客戶端prints.fun_add( 2, 3) #調用伺服器端的函數開啟服務端:
  • 【行業資訊】SOFARPC v5.7.4 發布,螞蟻金服開源 Java RPC 框架
    為了用戶和開發者方便的進行功能擴展,SOFARPC 提供了豐富的模型抽象和可擴展接口,包括過濾器、路由、負載均衡等等。同時圍繞 SOFARPC 框架及其周邊組件提供豐富的微服務治理方案。Final jackson-databind 升級到 2.9.10.5 BUG 修復 修復了 Hessian over triple 不支持基本類型的問題 Abstract Enhancements to the sofa-rpc
  • 有了HTTP,為什麼還要RPC?
    「 很長時間以來都沒有怎麼好好搞清楚 RPC(即 Remote Procedure Call,遠程過程調用)和 HTTP 調用的區別,不都是寫一個服務然後在客戶端調用麼?這裡請允許我迷之一笑~Naive!
  • rpc分布式服務 - CSDN
    協議轉換: 原API可能使用http或者其他的協議來實現的,統一封裝為rpc協議。注意,這裡的轉換,是批量轉換。也就是說,原來這一組的API是使用http實現的,現在要轉換為RPC,於是引入網關來統一處理。對於單個服務的轉換,還是單獨開發一個Adapter服務來執行。