hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php怎样搭建微效劳【php题目】

2019-11-26PHP问题搜搜PHP网51°c
A+ A-

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网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php怎样搭建微效劳【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: