亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

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

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

Hyperf (推薦學習:php視頻教程)

對于 JAVA 開發者來說,有技術相當成熟的微服務框架可供選擇:

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

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

作為一名 PHPer,我用 google 查了一下「PHP + 微服務」,發現有用的相關內容少之又少 ,沒有什么實質性的參考價值,無限惆悵。

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

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

于是,我在學習了微服務架構相關的基礎知識之后,使用 Hyperf 框架構建了一個基于 PHP 的微服務集群,這是項目源碼地址:

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` 作為服務注冊和服務發現的組件,容器 `microservice-1` 和 `microservice-2` 分別提供了加法運算和除法運算的服務。

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

`app` 容器為 Web 應用,部署了一個 Hyperf 項目并對外提供 HTTP 服務。

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

publicfunctionadd(AdditionService $addition)

{

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

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

return[

'a'=> $a,

'b'=> $b,

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

];

}

在 `AppJsonRpcAdditionService` 中 `add` 的實現:

classAdditionServiceextendsAbstractServiceClient

{

/**

* 定義對應服務提供者的服務名稱

* @varstring

*/

protected$serviceName = 'AdditionService';

/**

* 定義對應服務提供者的服務協議

* @varstring

*/

protected$protocol = 'jsonrpc-http';

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

{

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

}

}

繼承了 `AbstractServiceClient` 即可創建一個微服務客戶端請求類,Hyperf 在底層幫我們實現了與 Consul 和服務提供者交互的細節,我們只要 `AdditionService` 類里的 `add` 方法即可遠程調用 `microservice-1` 和 `microservice-2` 提供的服務。

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

以上就是php如何搭建微服務的詳細內容,更多請關注其它相關文章!

分享到:
標簽:微服 php
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

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

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定