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

您的位置:首頁技術(shù)文章
文章詳情頁

PHP遠(yuǎn)程調(diào)用以及RPC框架

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

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

分模塊

這個(gè)階段,一般也是項(xiàng)目的初級(jí)階段,由于人手不夠,一個(gè)服務(wù)端的接口項(xiàng)目只有一個(gè)開發(fā)進(jìn)行維護(hù),根據(jù)開發(fā)的習(xí)慣,會(huì)把項(xiàng)目分成若干個(gè)模塊進(jìn)行開發(fā),在一個(gè)項(xiàng)目下進(jìn)行部署。

這樣做的缺點(diǎn)在于項(xiàng)目會(huì)隨著版本更新而變得不可維護(hù)。

PHP遠(yuǎn)程調(diào)用以及RPC框架

分項(xiàng)目

隨著每個(gè)模塊功能的不斷完善,代碼變得更加臃腫。這時(shí)候需要對(duì)項(xiàng)目進(jìn)行拆分,比如上面的圖,分成用戶體系項(xiàng)目、支付體系項(xiàng)目。

PHP遠(yuǎn)程調(diào)用以及RPC框架

CURL

開始大家會(huì)采用CURL的方式對(duì)外部資源進(jìn)行訪問。

比如某短信平臺(tái)SDK,比如各大第三方提供的SDK,糾結(jié)到源碼發(fā)現(xiàn)都是直接采用CURL函數(shù)的方式進(jìn)行訪問。

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

//新浪微博SDK的http請(qǐng)求部分源碼 /** * 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

遠(yuǎn)程過程調(diào)用協(xié)議

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

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

Yar

鳥哥出品的RPC框架,輕量級(jí)框架。

<?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();?>

調(diào)用代碼

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

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

Thrift

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

遠(yuǎn)程調(diào)用的意義在于,不同的子項(xiàng)目可以用更適合自己的語言來解決,更有效率的實(shí)現(xiàn)需求。

同時(shí),對(duì)團(tuán)隊(duì)的開發(fā)來講,更能提高整體的技術(shù)水平。

SOAP

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

JSON-RPC

下面是返回值的標(biāo)準(zhǔn)

--> [

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

    ]

實(shí)際上你會(huì)發(fā)現(xiàn)我們?cè)诮o客戶端提供接口的返回值,就是按照這個(gè)標(biāo)準(zhǔn)來做的。

相應(yīng)的,服務(wù)端對(duì)服務(wù)端的數(shù)據(jù)接收和返回,也要同樣按照這個(gè)標(biāo)準(zhǔn)來做。

項(xiàng)目拆分帶來的變化項(xiàng)目細(xì)化

一個(gè)模塊對(duì)應(yīng)一個(gè)項(xiàng)目,項(xiàng)目之間通過基于REST的接口標(biāo)準(zhǔn)進(jìn)行面向資源的數(shù)據(jù)訪問。

人員需求

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

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

文檔

更多的項(xiàng)目也就意味著更多的接口調(diào)用文檔,適當(dāng)?shù)奶幚砦臋n才能更好的提高團(tuán)隊(duì)協(xié)作效率。

后記

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

以上就是PHP遠(yuǎn)程調(diào)用以及RPC框架的詳細(xì)內(nèi)容,更多關(guān)于PHP遠(yuǎn)程調(diào)用的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
一区二区91| 免费观看不卡av| 香蕉久久久久久久av网站| jizzjizz中国精品麻豆| 美腿丝袜在线亚洲一区| 啪啪亚洲精品| 中文国产一区| 午夜在线一区二区| 麻豆9191精品国产| 免费精品视频最新在线| 石原莉奈一区二区三区在线观看| 欧美精品一区二区久久| 欧美特黄视频| 西西人体一区二区| 四虎精品一区二区免费| 日产欧产美韩系列久久99| 日韩黄色av| 国产日韩免费| 国产不卡精品| 久久免费高清| 狠狠干综合网| 国产一级一区二区| 日韩精品福利一区二区三区| 国产精品永久| 日产午夜精品一线二线三线| 中文字幕人成乱码在线观看 | 久久久久99| 午夜视频精品| 日韩高清不卡一区二区| 国产精品视频一区二区三区综合| 精品国产精品久久一区免费式 | 成人午夜网址| 欧美日韩一二| 黄色亚洲在线| 中文视频一区| 欧美精品导航| 99成人超碰| 在线精品一区二区| 国产精品日本一区二区不卡视频| 国产999精品在线观看| 婷婷亚洲综合| 日本在线一区二区三区| 欧美经典一区| 日韩国产专区| 欧美日韩少妇| 国产精品毛片aⅴ一区二区三区| 久久亚洲人体| 亚洲激情中文| 国产欧美亚洲精品a| 日韩福利一区| 日本一区中文字幕| av日韩中文| 蜜桃一区二区三区在线观看| 麻豆高清免费国产一区| 欧美日韩国产高清| 国产免费av一区二区三区| 国产乱码午夜在线视频| 国产精品社区| 欧美精品aa| 一区二区三区四区在线看| 蜜桃视频一区二区| 精品久久一区| 在线看片日韩| 91看片一区| 日韩成人午夜精品| 亚洲午夜在线| 美女在线视频一区| 亚洲黄页一区| 久久精品国产成人一区二区三区| 亚洲国产不卡| 久久免费精品| 亚洲精品乱码日韩| 在线看片福利| 午夜电影一区| 四虎4545www国产精品 | 夜夜精品视频| 成人高清一区| 四虎在线精品| 亚洲无线一线二线三线区别av| 日本va欧美va精品发布| 影视先锋久久| 精品久久亚洲| 国产日本久久| 美日韩精品视频| 欧美13videosex性极品| 国产欧美日韩免费观看| 欧美日韩中文一区二区| 久久a爱视频| 日韩一区二区三区在线看| 亚洲二区视频| 国产日产精品_国产精品毛片| 99pao成人国产永久免费视频 | 欧美片第1页综合| 亚洲永久字幕| 少妇精品导航| 国产+成+人+亚洲欧洲在线| 日韩在线网址| 亚洲视频www| 激情欧美亚洲| 国产成人免费av一区二区午夜| 久久精品99国产精品| 中文字幕av亚洲精品一部二部 | 亚洲天堂资源| 精品一区二区三区中文字幕在线| 青青草视频一区| 亚洲欧美日本国产专区一区| 午夜av成人| 欧美日韩国产v| 波多野结衣久久精品| 精品一区二区三区中文字幕视频| 国产欧美日韩免费观看| 日韩1区2区3区| 免费不卡在线视频| 日韩精品一二三四| 石原莉奈在线亚洲二区| 午夜在线视频一区二区区别| 五月综合激情| 久久精品国产68国产精品亚洲| 国内自拍视频一区二区三区| 久久99偷拍| 国产精品magnet| 欧美中文日韩| 亚洲免费观看| 在线视频精品| 久久婷婷丁香| 91亚洲国产成人久久精品| 奇米狠狠一区二区三区| 亚洲综合另类| 女人天堂亚洲aⅴ在线观看| 不卡专区在线| 欧美日韩精品免费观看视完整| 免费一级欧美片在线观看网站| 国产精品一区二区三区美女| 久久先锋影音| 亚洲精品极品| 激情久久中文字幕| 欧美在线影院| 欧美日韩国产高清电影| 成人自拍av| 激情婷婷综合| 欧美午夜精彩| 好看的亚洲午夜视频在线| 亚洲国内精品| 亚洲欧美视频一区二区三区| 国产精品99一区二区| 在线视频精品| 久热精品在线| 欧美一区二区三区久久精品| 日韩极品在线观看| 久久成人高清| 久久99国产精品视频| 黄色在线网站噜噜噜| 精品在线网站观看| 丝袜美腿诱惑一区二区三区 | 日本午夜精品久久久久| 国产精品最新| 久久亚洲道色| 久久亚洲国产| 日韩精品看片| 亚洲香蕉久久| 国产日韩欧美高清免费| 麻豆久久一区二区| 国产精品66| 国产aa精品| 中文日韩在线| 日韩国产欧美三级| 欧美天堂一区二区| 国产精品一区二区三区四区在线观看| 欧美黄页在线免费观看| 97人人精品| 国产精品99一区二区| 丝袜脚交一区二区| 日本不卡视频在线观看| 国产日韩亚洲欧美精品| 国产一区二区三区天码| 久久国产毛片| 日韩中文字幕不卡| 国产精品99久久久久久董美香| 日本一区二区高清不卡| 亚洲少妇自拍| 日韩精品一页| 日本久久精品| 亚州精品视频| 国产一区不卡| 蜜乳av另类精品一区二区| 91精品在线免费视频| 国产一区2区| 亚洲免费播放| 国产精品网在线观看| 国产欧美一区二区三区精品酒店| 蜜桃国内精品久久久久软件9| 亚洲字幕久久| 精品久久久中文字幕| 亚洲少妇一区| 激情黄产视频在线免费观看| 99热精品在线| 久久女人天堂| 久久精品高清| 国产精品一区2区3区| 国产精品日韩久久久|