不同服務調用方式的比較
1.同步服務調用
上圖是同步調用的原理圖,用戶線程在完成消息序列化之後,把消息投遞到通信框架,然後同步阻塞,等待通信線程發送
請求並接收到應答之後,喚醒用戶同步阻塞的線程,用戶線程獲取到應答後返回。
2.異步服務調用
異步調用是基於JDK的Future機制,Future代表了異步操作的結果,用戶可以通過調用它的get方法獲取結果。
原理如圖所示。
1.消費者調用服務端發布接口,接口調用由服務框架封裝成動態代理,發起遠程服務調用。
2.通信框架異步發送消息,如果沒有發生I/O異常,返回。
3.消息發送成功,I/O線程構造Future對象,設置到RPC上下文中。
4.用戶線程通過RPC上下文獲取Future對象。
5.構造Listener對象,將其添加到Future中,用於應答服務端異步回調通知。
6.用戶線程返回,不阻塞等待應答。
7.服務端返回應答消息,通信框架反序列化等。
8.I/O將應答設置到Future對象的操作結果中。
9.Future對象掃描註冊監聽器列表,將結果通知給監聽器,監聽器獲取到結果之後,繼續後續業務邏輯的執行。異步調用結束。
不同服務調用方式的比較
相關推薦
不同服務調用方式的比較
blog 方式 通信 ner mage 喚醒 它的 比較 遠程服務 1.同步服務調用 上圖是同步調用的原理圖,用戶線程在完成消息序列化之後,把消息投遞到通信框架,然後同步阻塞,等待通信線程發送 請求並接收到應答之後,喚醒用戶同步阻塞的線程,用戶線程獲取到應答後返回。 2.
線程調用方式
線程1 直接調用import threadingimport time def sayhi(num): #定義每個線程要運行的函數 print("running on number:%s" %num) time.sleep(3) if __name__ == ‘__main__‘: t
Spring Cloud 聲明式服務調用 Feign
start etag 結束 value val template ide default true 一、簡介 在上一篇中,我們介紹註冊中心Eureka,但是沒有服務註冊和服務調用,服務註冊和服務調用本來應該在上一章就應該給出例子的,但是我覺得還是和Feign一起講比較好,
Saltstack的API接口與調用方式
ebs ports 主動 get api -a 網上 函數 出了 saltstack看起來是成為一個大規模自己主動化運維和雲計算管理的一個框架,類似於SDK,並非像puppet僅僅成為一個工具.基於良好設計的API和清楚的思路,讓salt的二次開發變得非常easy.寫
線程安全的事件調用方式
方式 vol pro public bsp 之前 != 註冊 問題 通常事件調用方式為 //版本1 public event NewEventHandler NewEvent;protected virtual void OnNewEvent(EventArgs e){
服務調用框架DataStrom
不發送 進行 -c 分享 分包 自己 ssi ast 傳輸 根據以前的命名服務,從新構建了下服務框架; 結構模式;c-center-s; 1.服務端: 服務端啟動,講自己的IP,端口註冊到註冊中心節點(master),然後註冊自己的處理類(需要繼承對應接口);
一個接口有多個實現類的調用方式
article 調用 his ace div test 準備 color qualifier 1、普通方式實現: // 定義一個接口 interface Person { void eat(String str); } // 第一個實現類 class Firs
JavaScript中四種不同的屬性檢測方式比較
bject 如果 cnblogs thead != () 繼承 rip left JavaScript中四種不同的屬性檢測方式比較 1. 用in方法 var o = {x:1}; "x" in o; //true "y" in o; //false "toStrin
建立一個漂亮的PHP驗證碼類文件及調用方式
去掉 -1 cti elephant orm random 上一個 ott 狀態 //驗證碼類class ValidateCode { private $charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ2345678
Java學習筆記八---類的靜態變量與靜態方法的訪問與調用方式
solved 對象 getname cannot hang variable bsp protected some 靜態變量又稱類變量,靜態方法又稱類方法,它們統稱為靜態成員或類成員。靜態成員由static修飾,是屬於整個類的,所有的對象共享這些靜態成員。不需要創建任何對象
Vue組件的三種調用方式
out 根據 tor 好的 屬性 date else return modifier 最近在寫fj-service-system的時候,遇到了一些問題。那就是我有些組件,比如Dialog、Message這樣的組件,是引入三方組件庫,比如element-ui這樣的,還是自己實
Spring Cloud Feign 1(聲明式服務調用Feign 簡介)
mvc info 定義 log con 通過 post loser 一個 Spring Cloud Feign基於Netflix Feign 同時整合了Spring Cloud Ribbon和Spring Cloud Hytrix,除了提供兩者的強大功能外,它還提供了一種聲
幹貨分享微服務spring-cloud(5.聲明式服務調用feign)
ace request pre sha 通過 san rest process white Spring cloud feign基於Netflix feign實現,整合了spring cloud ribbon與spring cloud hystrix,除了提供這兩者的強大功
整理類的調用方式和構造方法
-c .com per reading 實現 super 變量 image next 前言:簡單版:類加括號執行__init__()對象加括號執行__call__(), 全版:類是type創建的,創建類的時候type的__init__()方法自動執行,類加括號的時候
Python模塊調用方式詳解
style 作者 轉載 創作 clas div blog python body Python模塊調用方式詳解 作者:尹正傑 版權聲明:原創作
Python中包(package)的調用方式
inf none 普通 bfd 是否 open usr -a pack Python中包(package)的調用方式 作者:尹正傑 版權聲明:原創
SpringBoot系列十一:SpringBoot整合Restful架構(使用 RestTemplate 模版實現 Rest 服務調用、Swagger 集成、動態修改日誌級別)
attribute tar ring 動態修改 包含 分布式 restfu pen 負載 1、概念:SpringBoot整合Restful架構 2、背景 Spring 與 Restful 整合才是微架構的核心,雖然在整個 SpringBoot(SpringCloud)之中提
函數的四種調用方式
ole ext on() 構造 his fun lang ood lac 1.函數模式 function show(){ } show() var show=function(){ } show() 2.方法模式 var obj={ } function show(){ }
tinydate.js[v0.2] 優化了調用方式
ear typeof 調用 fine ont || 時間差 con regexp 存在的問題 調用方式過於繁瑣,部分函數需要實例化後才能調用,這個與便利的初衷不符合,所以做出如下調整。 tinydate.js v0.2 Date.prototype.format = fun
JS高級(三)--原型鏈、閉包、作用域、函數的四種調用方式
PE javascrip lB 修改 需要 fine 屬性 作用 cat 一、原型鏈(家族族譜) 概念:JS裏面的對象可能會有父對象,父對象還會有父對象,。。。。。祖先 根本:繼承 屬性:對象中幾乎都會有一個__proto__屬性,指向他的父對象 意