日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP遠程調用以及RPC框架

瀏覽:175日期:2022-09-07 17:39:57
前言

一個項目,從開始到版本更新,一直到最后的版本維護。功能在不斷增多,對應的代碼量也在不斷增加,也就意味著項目變得更不可維護,這時候,我們需要用拆分的方式將一個項目打散,以便開發(fā)團隊更好的對項目進行維護。

分模塊

這個階段,一般也是項目的初級階段,由于人手不夠,一個服務端的接口項目只有一個開發(fā)進行維護,根據開發(fā)的習慣,會把項目分成若干個模塊進行開發(fā),在一個項目下進行部署。

這樣做的缺點在于項目會隨著版本更新而變得不可維護。

PHP遠程調用以及RPC框架

分項目

隨著每個模塊功能的不斷完善,代碼變得更加臃腫。這時候需要對項目進行拆分,比如上面的圖,分成用戶體系項目、支付體系項目。

PHP遠程調用以及RPC框架

CURL

開始大家會采用CURL的方式對外部資源進行訪問。

比如某短信平臺SDK,比如各大第三方提供的SDK,糾結到源碼發(fā)現都是直接采用CURL函數的方式進行訪問。

優(yōu)點在于沒有環(huán)境要求,能直接用。 缺點在于并發(fā)訪問的資源占用問題。

//新浪微博SDK的http請求部分源碼 /** * Make an HTTP request * * @return string API results * @ignore */ function http($url, $method, $postfields = NULL, $headers = array()) {$this->http_info = array();$ci = curl_init();/* Curl settings */curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ci, CURLOPT_ENCODING, '');curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);if (version_compare(phpversion(), ’5.4.0’, ’<’)) { curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 1);} else { curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, 2);}curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, ’getHeader’));curl_setopt($ci, CURLOPT_HEADER, FALSE);switch ($method) { case ’POST’:curl_setopt($ci, CURLOPT_POST, TRUE);if (!empty($postfields)) { curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); $this->postdata = $postfields;}break; case ’DELETE’:curl_setopt($ci, CURLOPT_CUSTOMREQUEST, ’DELETE’);if (!empty($postfields)) { $url = '{$url}?{$postfields}';}}if ( isset($this->access_token) && $this->access_token ) $headers[] = 'Authorization: OAuth2 '.$this->access_token;if ( !empty($this->remote_ip) ) { if ( defined(’SAE_ACCESSKEY’) ) {$headers[] = 'SaeRemoteIP: ' . $this->remote_ip; } else {$headers[] = 'API-RemoteIP: ' . $this->remote_ip; }} else { if ( !defined(’SAE_ACCESSKEY’) ) {//$headers[] = 'API-RemoteIP: ' . $_SERVER[’REMOTE_ADDR’]; }}curl_setopt($ci, CURLOPT_URL, $url );curl_setopt($ci, CURLOPT_HTTPHEADER, $headers );curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE );$response = curl_exec($ci);$this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);$this->http_info = array_merge($this->http_info, curl_getinfo($ci));$this->url = $url;if ($this->debug) { echo '=====post data======rn'; var_dump($postfields); echo '=====headers======rn'; print_r($headers); echo ’=====request info=====’.'rn'; print_r( curl_getinfo($ci) ); echo ’=====response=====’.'rn'; print_r( $response );}curl_close ($ci);return $response; }RPC

遠程過程調用協議

RPC(Remote Procedure Call Protocol)——遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發(fā)包括網絡分布式多程序在內的應用程序更加容易。

RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發(fā)送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態(tài)直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發(fā)送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執(zhí)行繼續(xù)進行。

Yar

鳥哥出品的RPC框架,輕量級框架。

<?phpclass API { /** * the doc info will be generated automatically into service info page. * @params * @return */ public function api($parameter, $option = 'foo') { } protected function client_can_not_see() { }}$service = new Yar_Server(new API());$service->handle();?>

調用代碼

<?php$client = new Yar_Client('http://host/api/');$result = $client->api('parameter);?>

注意的是鳥哥出的東西文檔比較少,需要多調試。

Thrift

thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發(fā)。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 這些編程語言間無縫結合的、高效的服務。

遠程調用的意義在于,不同的子項目可以用更適合自己的語言來解決,更有效率的實現需求。

同時,對團隊的開發(fā)來講,更能提高整體的技術水平。

SOAP

由于用的XML就不多描述了,畢竟還是json用的多。

JSON-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'}

    ]

實際上你會發(fā)現我們在給客戶端提供接口的返回值,就是按照這個標準來做的。

相應的,服務端對服務端的數據接收和返回,也要同樣按照這個標準來做。

項目拆分帶來的變化項目細化

一個模塊對應一個項目,項目之間通過基于REST的接口標準進行面向資源的數據訪問。

人員需求

項目拆分的前提是一個項目不足以滿足現有的業(yè)務發(fā)展要求,也就意味著拆分之后的開發(fā)人員數量的擴增。

游擊隊向正規(guī)軍編制的跨越!

文檔

更多的項目也就意味著更多的接口調用文檔,適當的處理文檔才能更好的提高團隊協作效率。

后記

服務的遠程調用在于怎么合理的把一個正在變得不可維護的項目從焦油坑中解救出來,并提高項目整體能承載的業(yè)務量,不過,世界上沒有銀彈。

以上就是PHP遠程調用以及RPC框架的詳細內容,更多關于PHP遠程調用的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品午夜| 日韩av网站免费在线| 国产精品主播| 日韩av不卡在线观看| 日韩欧美2区| 日韩精品久久久久久| 午夜精品免费| 蜜臀av亚洲一区中文字幕| 亚洲乱码久久| 久久国产尿小便嘘嘘| 久久av国产紧身裤| 国产精品久久久久久久久久10秀 | 四虎精品永久免费| 亚洲人www| 日韩高清一区在线| 日韩欧美高清一区二区三区| 日韩精品三级| 免费在线播放第一区高清av| 国产一区二区三区久久| 久久久精品网| 欧美综合另类| 玖玖玖国产精品| 日产欧产美韩系列久久99| 国产精品一区二区av交换 | 日韩国产在线观看| 国产精品亲子伦av一区二区三区| 久久这里只有| 久久五月天小说| 亚洲理论在线| 久久国产日韩欧美精品| 国产91欧美| 欧美日韩国产一区二区三区不卡| 视频一区视频二区中文字幕| 91国内精品| 午夜影院一区| 九九久久婷婷| 日韩国产欧美在线播放| 久久天堂影院| 九九综合九九| 国产伦理一区| 五月天久久久| 国产欧美亚洲精品a| 日韩免费久久| 婷婷亚洲成人| 成人精品国产亚洲| 日韩影院免费视频| 精品一二三区| 日韩精品一卡二卡三卡四卡无卡| 国产精品调教| 99热免费精品| 久久精品国产亚洲aⅴ| 欧美日韩四区| 你懂的国产精品永久在线| 欧美日中文字幕| 国产视频网站一区二区三区| 国产va免费精品观看精品视频| 91成人精品视频| 国产日韩欧美| 亚洲午夜91| 国产探花在线精品一区二区| 91精品国产调教在线观看| 日本成人在线不卡视频| 久久国产直播| 欧美激情91| 综合一区在线| 99精品视频在线观看免费播放| 欧美视频精品全部免费观看| 五月天综合网站| 精品国产18久久久久久二百| 香蕉久久夜色精品国产| 国产成人精品三级高清久久91| 一区二区精彩视频| 成人免费电影网址| 欧美国产另类| 亚洲一区二区毛片| 91综合视频| 国产亚洲欧美日韩在线观看一区二区| 免费精品国产| 精品中文字幕一区二区三区| 奶水喷射视频一区| 高清久久一区| 欧美亚洲tv| 国产亚洲精品久久久久婷婷瑜伽| 日韩伦理在线一区| 欧美日韩一区自拍| 蜜臀a∨国产成人精品| 久久亚洲在线| 精品中文字幕一区二区三区| 亚州精品视频| 成人av三级| 国产免费av一区二区三区| 国产精品婷婷| 亚洲二区精品| 国产专区精品| 欧美一级全黄| 亚洲午夜国产成人| 五月天激情综合网| 日韩精品首页| 日韩国产在线| 超碰在线99| 国产精品二区不卡| 国产精品成人一区二区网站软件| 日韩激情一区二区| 中文字幕日韩欧美精品高清在线| 国产综合婷婷| 久久精品国产大片免费观看| 久久久噜噜噜| 香蕉久久精品| 91高清一区| 好吊日精品视频| 免费成人网www| 久久一级电影| 偷拍欧美精品| 亚洲一区激情| 老牛影视一区二区三区| 红桃视频国产精品| 日韩午夜av在线| 夜夜嗨av一区二区三区网站四季av| 99精品视频在线观看免费播放| 国产一区二区三区四区二区| 精品精品99| 高清一区二区| 中文字幕成在线观看| jizzjizz中国精品麻豆| 国产在线看片免费视频在线观看| 国产理论在线| 99久久www免费| 午夜免费一区| 麻豆成人在线| 亚洲精品欧美| 日本不卡视频在线观看 | 日韩av一区二区三区| 亚洲欧洲美洲国产香蕉| 亚洲午夜国产成人| 日韩欧美中文字幕在线视频| 日韩av中文字幕一区二区三区| 国产午夜久久av| 免费一区二区三区在线视频| 国产一区二区三区探花| 国产精品亚洲一区二区三区在线观看| 99久久久久| 一区二区电影| 久久不见久久见中文字幕免费 | 日韩区一区二| 91精品国产经典在线观看| 国产精品一国产精品| 福利欧美精品在线| 亚洲国产影院| 日韩中出av| 免费观看亚洲天堂| 日韩黄色大片网站| 麻豆精品91| 欧美国产精品| 一区二区小说| 日韩高清在线不卡| 97欧美在线视频| 偷拍欧美精品| 日本成人中文字幕| 国产成人免费精品| 欧美搞黄网站| 四虎精品一区二区免费| 国产精品麻豆成人av电影艾秋| 福利视频一区| 久久福利影视| 久久99久久久精品欧美| 99精品综合| 日韩激情视频网站| www在线观看黄色| 免费观看久久久4p| 国产日韩欧美在线播放不卡| 欧产日产国产精品视频| 久热re这里精品视频在线6| 国产探花一区| 久久亚洲成人| 日欧美一区二区| 高清不卡亚洲| 亚洲一区二区小说| 成人午夜亚洲| 男人操女人的视频在线观看欧美 | 日韩精品一区二区三区免费视频 | 国产剧情在线观看一区| 91精品国产成人观看| 青青草91视频| 日韩免费一区| 欧美日韩精品一区二区三区在线观看| 日韩欧美国产精品综合嫩v| 色综合视频一区二区三区日韩| 中文字幕在线高清| 97精品久久| 亚洲二区三区不卡| 久久免费精品| 一区二区亚洲视频| 国产一区二区三区不卡视频网站 | 国产一在线精品一区在线观看| 欧美日韩1区| 红桃视频国产精品| 91综合视频| 国产欧美日韩在线一区二区| 在线亚洲一区| 日韩欧美一区二区三区在线视频|