濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP程序員簡單的開展服務治理架構操作詳解(一)

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

熱門標簽:南寧電話外呼系統(tǒng)線路 邢臺400電話辦理 濟源百應電銷機器人聯(lián)系方式 南京3D地圖標注 咸陽電銷 重慶外呼電銷系統(tǒng)多少錢 正規(guī)電銷機器人系統(tǒng) 辦理400電話哪家好點 嘟嘟云外呼系統(tǒng)

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

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

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

治理什么?

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

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

  • UserService
  • ShopService
  • GoodsService
  • LiveService

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

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

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

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


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

依托實現

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

  • thrift
  • rpc
  • swoole

thrift

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

rpc

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

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

swoole

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

實現RPC通信

服務治理非常重要的一個環(huán)節(jié),要在無感知的情況讓消費者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發(fā)送到服務提供者
    $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程序員簡單的開展服務治理架構操作詳解(三)
  • PHP程序員簡單的開展服務治理架構操作詳解(二)
  • PHP數據源架構模式之表入口模式實例分析
  • PHP架構及原理知識點詳解
  • thinkPHP5.0框架整體架構總覽【應用,模塊,MVC,驅動,行為,命名空間等】
  • php代碼架構的八點注意事項
  • 四種php中webservice實現的簡單架構方法及實例
  • php之深入理解架構布局講解

標簽:唐山 通遼 平頂山 南通 隴南 武漢 河南 黃山

巨人網絡通訊聲明:本文標題《PHP程序員簡單的開展服務治理架構操作詳解(一)》,本文關鍵詞  PHP,程序員,簡單,的,開展,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP程序員簡單的開展服務治理架構操作詳解(一)》相關的同類信息!
  • 本頁收集關于PHP程序員簡單的開展服務治理架構操作詳解(一)的相關信息資訊供網民參考!
  • 推薦文章
    宝应县| 化德县| 屏南县| 夏河县| 杭锦后旗| 蓬安县| 佛山市| 乐清市| 庆阳市| 吉水县| 泰和县| 新密市| 宝丰县| 文安县| 治县。| 宁陕县| 曲水县| 米林县| 藁城市| 南华县| 常德市| 博野县| 石柱| 托克逊县| 龙岩市| 长寿区| 岢岚县| 宿松县| 嘉峪关市| 三明市| 浙江省| 辉县市| 永仁县| 临清市| 英德市| 饶平县| 青冈县| 嵊州市| 思南县| 台北县| 正蓝旗|