亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

PHP程序員簡單的開展服務治理架構操作詳解(一)

瀏覽:93日期:2022-09-10 13:25:00

本文實例講述了PHP程序員簡單的開展服務治理架構操作。分享給大家供大家參考,具體如下:

不涉及其他的語言及工具,我們從PHP本身來談如何實現服務治理

本猿人已經寫好的服務治理 https://github.com/CrazyCodes/Service-Govern.git 治理什么?

這個專業名詞很容易發現治理的是服務,而服務則是我們的項目。管理這些服務方案則叫服務治理。

現在在Server上有四項服務,分別為

UserService ShopService GoodsService LiveService

這些服務我們叫它服務提供者(既提供對內服務的應用)

調用服務的應用我們稱它為服務消費者,例如

User-Api Shop-Api Goods-Api Live-Api

Service 是對內服務的而Api是對外服務的

PHP程序員簡單的開展服務治理架構操作詳解(一)

服務治理考慮的問題就是如何管理這四項服務,讓它們如何對外服務,如何監控服務進程

依托實現

在實現服務治理之前,需要了解以下幾塊知識點

thrift rpc swoolethrift

暫時大可理解為可以通過它去調用其他開發語言的方法

rpcRPC(Remote Procedure Call)—遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程序在內的應用程序更加容易。RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息,獲得進程結果,然后調用執行繼續進行。

服務與服務之間通信可以通過RPC通信,當然也可以選擇UDP等

swoole

PHP圈內跨世紀的產物,使用他的原因是因為Swoole本身支持RPC通信,所以我們本章通過Swoole Rpc的方法去實現消費者與服務提供者之間的通信

實現RPC通信

服務治理非常重要的一個環節,要在無感知的情況讓消費者A調用服務提供者A,B,C,當然實際情況下,這是永遠不可能的,根本不在一個內存空間中,我們需要自己模擬出來這種使用方式

$userSerivce = $client->client (’UserService’);$result = $userSerivce->getUserInfo ([’user_id’ => 100]);var_dump($result);

在消費者內沒有UserService,更沒有getUserInfo 方法,這些都在服務提供者的應用中,如何去調用它們?

首先通過php的__call 方法去截取一個不存在的方法

public function __call($name, $arguments){ $client = new ClientRpc($this->serviceName);$response = $client->send ($this->serviceName, $name, $arguments);return (json_decode ($response, true)); }

獲取后調用自己寫的send 方法,swoole出場

class ClientRpc{ protected $client; public function __construct($service_name, $centerConfig) { $this->client = new swoole_client(SWOOLE_SOCK_TCP); $center = Dispatcher::loadBalance ($service_name, $centerConfig); $this->client->connect ($center[’ip’], $center[’port’], 0.5); } public function send($service, $action, $arguments) { $request = new Request();$request->setService ($service); $request->setAction ($action); $request->setParameters ($arguments[0]); // 重組參數,組合成你希望的格式,最后轉成json發送到服務提供者 $this->client->send (json_encode ((array)$request)); return $this->client->recv (); } public function __destruct() { $this->client->close (); unset($this->client); }}

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

標簽: PHP
相關文章:
主站蜘蛛池模板: 久久婷婷国产综合精品青草 | 久久免费激情视频 | 欧美刺激午夜性久久久久久久 | 亚洲欧美视频一区二区三区 | 黄色高清视频在线观看 | 欧美国产人妖另类色视频 | 久久免费观看国产精品88av | 久久久社区| 国产日韩欧美综合在线 | 男女交性粗大视频播放 | 91短视频在线观看免费最新91 | 亚洲国产免费 | 99久久精品免费看国产麻豆 | 老头边吃奶边做边爱 | 成人午夜在线观看国产 | 欧美人成在线观看网站高清 | 亚洲国产高清美女在线观看 | 一级特黄aa大片免费 | 亚洲高清在线视频 | 日本欧美国产精品第一页久久 | 九九九九九九 | 日韩欧免费一区二区三区 | 免费看欧美日韩一区二区三区 | 在线日韩 | 日鲁夜鲁天天鲁视频 | 成人一级黄色大片 | 国产亚洲女人久久久久久 | 久久www成人看片 | 日韩在线视频线视频免费网站 | 国产精品亚洲欧美大片在线看 | 国产一区二区三区不卡免费观看 | 91久久综合九色综合欧美亚洲 | 国产又污又爽又色的网站 | 综合图片亚洲 | 久久6免费视频 | 国产成人免费在线观看 | 久久免费视频3 | 又爽又叫的毛片欧美 | 欧美综合图片一区二区三区 | 亚洲狠狠网站色噜噜 | 在线观看亚洲精品专区 |