日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Hyperf (推薦學(xué)習(xí):php視頻教程)

對于 JAVA 開發(fā)者來說,有技術(shù)相當(dāng)成熟的微服務(wù)框架可供選擇:

[Dubbo](https://dubbo.Apache.org/zh-cn/)

[Spring Cloud](https://www.springcloud.cc/)

作為一名 PHPer,我用 google 查了一下「PHP + 微服務(wù)」,發(fā)現(xiàn)有用的相關(guān)內(nèi)容少之又少 ,沒有什么實質(zhì)性的參考價值,無限惆悵。

幸好,有大神在基于 Swoole 擴展的基礎(chǔ)上,實現(xiàn)了高性能、高靈活性的 PHP 協(xié)程框架 [Hyperf](https://www.hyperf.io/) ,并提供了微服務(wù)架構(gòu)的相關(guān)組件。

Hyperf 是基于 `Swoole 4.3+` 實現(xiàn)的高性能、高靈活性的 PHP 協(xié)程框架,內(nèi)置協(xié)程服務(wù)器及大量常用的組件,性能較傳統(tǒng)基于 `PHP-FPM` 的框架有質(zhì)的提升,提供超高性能的同時,也保持著極其靈活的可擴展性,標(biāo)準(zhǔn)組件均基于 [PSR 標(biāo)準(zhǔn)](https://www.php-fig.org/psr) 實現(xiàn),基于強大的依賴注入設(shè)計,保證了絕大部分組件或類都是 `可替換` 與 `可復(fù)用` 的。

于是,我在學(xué)習(xí)了微服務(wù)架構(gòu)相關(guān)的基礎(chǔ)知識之后,使用 Hyperf 框架構(gòu)建了一個基于 PHP 的微服務(wù)集群,這是項目源碼地址:

https://github.com/Jochen-z/php-microservice-demo

該項目使用 Dokcer 搭建,`Docker-compose.yml` 代碼如下:

version:"3"

services:

consul-server- leader:

image:consul:latest

container_name:consul-server-leader

command:"agent -server -bootstrap -ui -node=consul-server-leader -client=0.0.0.0"

environment:

- CONSUL_BIND_INTERFACE=eth 0

ports:

- "8500:8500"

networks:

- microservice

microservice- 1:

build:

context:.

container_name:"microservice-1"

command:"php bin/hyperf.php start"

depends_on:

- "consul-server-leader"

volumes:

- ./www/microservice- 1:/var/www

networks:

- microservice

tty:true

microservice- 2:

build:

context:.

container_name:"microservice-2"

command:"php bin/hyperf.php start"

depends_on:

- "consul-server-leader"

volumes:

- ./www/microservice- 2:/var/www

networks:

- microservice

tty:true

App:

build:

context:.

container_name:"app"

command:"php bin/hyperf.php start"

depends_on:

- "microservice-1"

volumes:

- ./www/ web:/var/www

ports:

- "9501:9501"

networks:

- microservice

tty:true

networks:

microservice:

driver:bridge

volumes:

microservice:

driver:local

這里啟動了一個 Consul 容器 `consul-server-leader` 作為服務(wù)注冊和服務(wù)發(fā)現(xiàn)的組件,容器 `microservice-1` 和 `microservice-2` 分別提供了加法運算和除法運算的服務(wù)。

容器 `app` 作為服務(wù)調(diào)用方,配置了 `consul-server-leader` 容器的 URL,通過訪問 `consul-server-leader` 獲取 `microservice-1` 和 `microservice-2` 服務(wù)的 IP 地址和端口,然后 `app` 通過 RPC 協(xié)議調(diào)用加法運算和除法運算的服務(wù)獲取結(jié)果并返回給用戶。

`app` 容器為 Web 應(yīng)用,部署了一個 Hyperf 項目并對外提供 HTTP 服務(wù)。

例如,在 `AppControllerIndexController` 控制器里有 `add` 方法:

publicfunctionadd(AdditionService $addition)

{

$a = (int) $this->request->input( 'a', 1); # 接受前端用戶參數(shù)

$b = (int) $this->request->input( 'b', 2);

return[

'a'=> $a,

'b'=> $b,

'add'=> $addition->add($a, $b) # RPC調(diào)用

];

}

在 `AppJsonRpcAdditionService` 中 `add` 的實現(xiàn):

classAdditionServiceextendsAbstractServiceClient

{

/**

* 定義對應(yīng)服務(wù)提供者的服務(wù)名稱

* @varstring

*/

protected$serviceName = 'AdditionService';

/**

* 定義對應(yīng)服務(wù)提供者的服務(wù)協(xié)議

* @varstring

*/

protected$protocol = 'jsonrpc-http';

publicfunctionadd(int $a, int $b): int

{

return$this->__request( __FUNCTION__, compact( 'a', 'b'));

}

}

繼承了 `AbstractServiceClient` 即可創(chuàng)建一個微服務(wù)客戶端請求類,Hyperf 在底層幫我們實現(xiàn)了與 Consul 和服務(wù)提供者交互的細(xì)節(jié),我們只要 `AdditionService` 類里的 `add` 方法即可遠(yuǎn)程調(diào)用 `microservice-1` 和 `microservice-2` 提供的服務(wù)。

至此,PHP 微服務(wù)集群搭建就完成了!

以上就是php如何搭建微服務(wù)的詳細(xì)內(nèi)容,更多請關(guān)注其它相關(guān)文章!

分享到:
標(biāo)簽:微服 php
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定