Atitit.atiRI 與 遠程調用的理論and 設計 1. 怎麼做到透明化遠程服務調用?1 2. 2 怎麼對消息進行編碼和解碼1 2.1. 確定消息數據結構dsl1 2.1.1. 消息里為什麼要帶有requestID?2 2.2. 序列化與反序列化 json2 3. 通信 http2 4. 發佈 ...
Atitit.atiRI 與 遠程調用的理論and 設計
1. 怎麼做到透明化遠程服務調用?
怎麼封裝通信細節才能讓用戶像以本地調用方式調用遠程服務呢?對java來說就是使用代理!java代理有兩種方式:1) jdk 動態代理;
2. 2 怎麼對消息進行編碼和解碼
作者:: ★(attilax)>>> 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 漢字名:艾龍, EMAIL:[email protected]
轉載請註明來源: http://www.cnblogs.com/attilax/
2.1. 確定消息數據結構dsl
介面名稱(class).method(param) 參數類型&參數值
要是只一個method,可以反射參數型...貝兒,就要手動指定型..
4)超時時間
5)requestID,標識唯一請求id,在下麵一節會詳細描述requestID的用處。
同理服務端返回的消息結構一般包括以下內容。
1)返回值
2)狀態code
3)requestID
2.1.1. 消息里為什麼要帶有requestID?
為非同步處理
2.2. 序列化與反序列化 json
3. 通信 http
4. 發佈自己的服務
有沒有一種方法能實現自動告知,即機器的增添、剔除對調用方透明,調用者不再需要寫死服務提供方地址?當然可以,現如今zookeeper被廣泛用於實現服務自動註冊與發現功能!
簡單來講,zookeeper可以充當一個服務註冊表(Service Registry),讓多個服務提供者形成一個集群,讓服務消費者通過服務註冊表獲取具體的服務訪問地址(ip+埠)去訪問具體的服務提供者。如下圖所示:
參考
你應該知道的 RPC 原理 - 文章 - 伯樂線上.html