成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP程序員如何簡(jiǎn)單的開展服務(wù)治理架構(gòu)(一)

superPershing / 2714人閱讀

摘要:管理這些服務(wù)方案則叫服務(wù)治理。協(xié)議假定某些傳輸協(xié)議的存在,如或,為通信程序之間攜帶信息數(shù)據(jù)。請(qǐng)求程序就是一個(gè)客戶機(jī),而服務(wù)提供程序就是一個(gè)服務(wù)器。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。

不涉及其他的語(yǔ)言及工具,我們從PHP本身來(lái)談如何實(shí)現(xiàn)服務(wù)治理

本猿人已經(jīng)寫好的服務(wù)治理 https://github.com/CrazyCodes...
治理什么?

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

現(xiàn)在在Server上有四項(xiàng)服務(wù),分別為

UserService

ShopService

GoodsService

LiveService

這些服務(wù)我們叫它服務(wù)提供者(既提供對(duì)內(nèi)服務(wù)的應(yīng)用)

調(diào)用服務(wù)的應(yīng)用我們稱它為服務(wù)消費(fèi)者,例如

User-Api

Shop-Api

Goods-Api

Live-Api

Service 是對(duì)內(nèi)服務(wù)的而Api是對(duì)外服務(wù)的


圖片來(lái)源 http://blog.csdn.net/suifeng3...

服務(wù)治理考慮的問(wèn)題就是如何管理這四項(xiàng)服務(wù),讓它們?nèi)绾螌?duì)外服務(wù),如何監(jiān)控服務(wù)進(jìn)程

依托實(shí)現(xiàn)

在實(shí)現(xiàn)服務(wù)治理之前,需要了解以下幾塊知識(shí)點(diǎn)

thrift

rpc

swoole

thrift

暫時(shí)大可理解為可以通過(guò)它去調(diào)用其他開發(fā)語(yǔ)言的方法

rpc
RPC(Remote Procedure Call)—遠(yuǎn)程過(guò)程調(diào)用,它是一種通過(guò)網(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)行。

服務(wù)與服務(wù)之間通信可以通過(guò)RPC通信,當(dāng)然也可以選擇UDP等

swoole

PHP圈內(nèi)跨世紀(jì)的產(chǎn)物,使用他的原因是因?yàn)镾woole本身支持RPC通信,所以我們本章通過(guò)Swoole Rpc的方法去實(shí)現(xiàn)消費(fèi)者與服務(wù)提供者之間的通信

實(shí)現(xiàn)RPC通信

服務(wù)治理非常重要的一個(gè)環(huán)節(jié),要在無(wú)感知的情況讓消費(fèi)者A調(diào)用服務(wù)提供者A,B,C,當(dāng)然實(shí)際情況下,這是永遠(yuǎn)不可能的,根本不在一個(gè)內(nèi)存空間中,我們需要自己模擬出來(lái)這種使用方式

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

在消費(fèi)者內(nèi)沒有UserService,更沒有g(shù)etUserInfo 方法,這些都在服務(wù)提供者的應(yīng)用中,如何去調(diào)用它們?

首先通過(guò)php的__call 方法去截取一個(gè)不存在的方法

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

獲取后調(diào)用自己寫的send 方法,swoole出場(chǎng)

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]);
        // 重組參數(shù),組合成你希望的格式,最后轉(zhuǎn)成json發(fā)送到服務(wù)提供者
        $this->client->send (json_encode ((array)$request));
            
        return $this->client->recv ();
    }
        
    public function __destruct()
    {
        $this->client->close ();
        unset($this->client);
    }
}
鳴謝

周夢(mèng)康 [https://mengkang.net/]

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28321.html

相關(guān)文章

  • PHP序員如何簡(jiǎn)單開展服務(wù)治理架構(gòu)(三)

    摘要:是一種使用松耦合的黑盒子服務(wù)構(gòu)建業(yè)務(wù)應(yīng)用的體系架構(gòu),這些服務(wù)可以通過(guò)編排連接在一起以實(shí)現(xiàn)特定的功能。在一個(gè)中如何實(shí)現(xiàn)松耦合實(shí)現(xiàn)松耦合一種策略是使用服務(wù)接口中為服務(wù)來(lái)限制服務(wù)之間的依賴性,對(duì)消費(fèi)者隱藏服務(wù)實(shí)現(xiàn)。 服務(wù)治理所治理的服務(wù)需要合理的部署與管理,本章我們講一下SOA(面向服務(wù)架構(gòu)),本人語(yǔ)言文筆不好,所以本章內(nèi)容使用問(wèn)答模式,參考了 [SOA面試題(http://www.jdon...

    Dionysus_go 評(píng)論0 收藏0
  • PHP序員如何簡(jiǎn)單開展服務(wù)治理架構(gòu)(二)

    摘要:服務(wù)治理治理的絕筆是服務(wù),在一家公司有玩各種語(yǔ)言的程序員,如何去統(tǒng)一管理他們開發(fā)的服務(wù),這是一個(gè)問(wèn)題。請(qǐng)求程序就是一個(gè)客戶機(jī),而服務(wù)提供者就是一個(gè)服務(wù)器。在服務(wù)器端,進(jìn)程保持睡眠狀態(tài)直到調(diào)用信息到達(dá)為止。 服務(wù)治理 治理的絕筆是服務(wù),在一家公司有玩各種語(yǔ)言的程序員,如何去統(tǒng)一管理他們開發(fā)的服務(wù),這是一個(gè)問(wèn)題。 上一章主要講了下服務(wù)治理需要什么,如何實(shí)現(xiàn),這章我們?cè)敿?xì)的肢解一下服務(wù)治理的...

    wing324 評(píng)論0 收藏0
  • 明星分分合合洪荒點(diǎn)擊量,微博Mesh服務(wù)化改造如何支撐?(附PPT下載)

    摘要:為了解決這一系列問(wèn)題,微博從年開發(fā)了語(yǔ)言的框架,并基于此完成了服務(wù)化改造。這些經(jīng)歷之下微博也積累了一套服務(wù)治理型的服務(wù)化體系。的版,所要解決的是微博平臺(tái)內(nèi)部服務(wù)之間的調(diào)用,因此協(xié)議時(shí),其實(shí)并沒有考慮到跨語(yǔ)言的問(wèn)題,用的是對(duì)比較友好的。 showImg(https://segmentfault.com/img/remote/1460000012601596?w=1080&h=606); ...

    ShowerSun 評(píng)論0 收藏0
  • 華為數(shù)字化轉(zhuǎn)型,你為什么就學(xué)不會(huì)?

    摘要:一引言華為數(shù)字化轉(zhuǎn)型的邏輯和方法,看起來(lái)似乎并不非常復(fù)雜。華為在年提出實(shí)現(xiàn)全聯(lián)接的智能華為,成為行業(yè)標(biāo)桿的數(shù)字化轉(zhuǎn)型目標(biāo)。但是,華為的數(shù)字化轉(zhuǎn)型之道真的好學(xué)嗎其實(shí)不然。華為真正提出數(shù)字化轉(zhuǎn)型,是在年。一、引言華為數(shù)字化轉(zhuǎn)型的邏輯和方法,看起來(lái)似乎并不非常復(fù)雜。筆者將《華為.數(shù)字化轉(zhuǎn)型必修課》課程的主要內(nèi)容,概括為一個(gè)愿景、三大目標(biāo)、四個(gè)基礎(chǔ)、五大內(nèi)容、三大要求、六大案例,用下圖來(lái)表示:?一個(gè)...

    不知名網(wǎng)友 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<