
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怎样搭建微效劳的细致内容,更多请关注ki4网别的相干文章!