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` 代码如下:
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如何搭建微做事的详细内容,更多请关注其它干系文章!
更多技巧请《转发 + 关注》哦!