今天就跟大家聊聊有關如何進行Yar并行的RPC框架使用分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
廬山ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
RPC,就是Remote Procedure Call的簡稱呀,翻譯成中文就是遠程過程調用
RPC要解決的兩個問題:
解決分布式系統(tǒng)中,服務之間的調用問題。
遠程調用時,要能夠像本地調用一樣方便,讓調用者感知不到遠程調用的邏輯
如果模仿B/S架構的調用方式,每次調用時,都需要寫一串發(fā)起http請求的代碼。比如new Curl()...之類的,能不能像本地調用一樣,去發(fā)起遠程調用,讓使用者感知不到遠程調用的過程。
實際情況下,RPC很少用到http協(xié)議來進行數據傳輸,畢竟我只是想傳輸一下數據而已,何必動用到一個文本傳輸的應用層協(xié)議。 為什么不直接使用二進制傳輸。
$ pecl install yar $ pecl install msgpack
服務端代碼:
sms = new Sms(); $this->email = new Email(); } /** * @param $mobile * @return string */ public function sendSms($mobile, $content = '短信內容') { return $this->sms->send($mobile, $content); } /** * @param $email * @return string */ public function sendEmail($email) { return $this->email->send($email); } } $service = new Yar_Server(new Service()); $service->handle();
客戶端代碼:
SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000); //$result = $client->sendSms('18234065200', '我是短信內容'); //echo $result; // 二、并行調用 // public static call ( string $uri , string $method [, array $parameters [, callable $callback [, callable $error_callback [, array $options ]]]] ) // callback 回掉函數, 在遠程服務的返回到達的時候被Yar調用, 從而可以處理返回內容 如果沒有設置則調用loop中的callback // error_callback // $options Yar_Concurrent_Client::call("http://192.168.2.138/api/", "sendSms", ['18234065200', '歡迎注冊']); Yar_Concurrent_Client::call("http://192.168.2.138/api/", "sendEmail", ['12580@qq.com'], "callback", "callError", [YAR_OPT_TIMEOUT => 10]); // 發(fā)送請求 // public static loop ([ callable $callback [, callable $error_callback ]] ) Yar_Concurrent_Client::loop("loopCallback", "loopError"); function callback($retval, $callinfo) { echo 'call自己的回調:' . $callinfo['method'] . '方法返回數據' . $retval . PHP_EOL; } // 錯誤回掉函數, 如果設置了, Yar在發(fā)送出所有的請求之后立即調用一次這個回掉函數(此時還沒有任何請求返回), 調用的時候$callinfo參數是NULL function loopCallback($retval, $callinfo) { if (is_null($callinfo)) { echo '所有rpc請求發(fā)送完畢調用' . PHP_EOL; } else { echo '調用成功后返回' . PHP_EOL; var_dump($retval); var_dump($callinfo); } } // 錯誤回調 function callError() { echo '發(fā)送rpc出錯' . PHP_EOL; } // 錯誤回掉函數, 如果設置了, 那么Yar在出錯的時候會調用這個回掉函數 function loopError() { echo '發(fā)送rpc出錯' . PHP_EOL; }
看完上述內容,你們對如何進行Yar并行的RPC框架使用分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。