内容简介:[TOC]Yar 它是一个 RPC 框架。所以,也具备 RPC 的特性。RPC 框架最终实现了业务的解耦。比如,我们一个庞大的应用,有用户中心、订单中心、物流中心等模块。并且这些模块在长年累月经过不同的人迭代之后,变得异常难以维护。此时,我们可以 RPC 方案进行解耦。然后,在老模块进行调用。
[TOC]
Yar RPC 框架使用指南
Yar
是一个轻量级, 高效的 RPC
框架, 它提供了一种简单方法来让 PHP
项目之间可以互相远程调用对方的本地方法。并且 Yar
也提供了并行调用的能力。可以支持同时调用多个远程服务的方法。
Yar 它是一个 RPC 框架。所以,也具备 RPC 的特性。RPC 框架最终实现了业务的解耦。比如,我们一个庞大的应用,有用户中心、订单中心、物流中心等模块。并且这些模块在长年累月经过不同的人迭代之后,变得异常难以维护。此时,我们可以 RPC 方案进行解耦。然后,在老模块进行调用。
其次,Yar 框架还具备并行请求的功能。即同时可以发起多个请求,然后统一回调。整体用时取决于请求中最长用时的请求。
基于这些特性,我们可以把不同的模块进行拆分分开部分。然后,通过 RPC 方式提供服务。从而达到高并发高吞吐分布式的要求。千万上亿的 PV 毫无压力。
一、安装 Msgpack 扩展
Yar
支持 msgpack
、 json
、 php
三种打包协议。 msgpack
打包协议,相对其他两种打包协议更高效。所以,推荐使用 msgpack
打包协议。
$ wget https://pecl.php.net/get/msgpack-2.0.3.tgz $ tar zxvf msgpack-2.0.3.tgz $ cd msgpack-2.0.3 $ phpize $ ./configure $ make && make install
扩展安装成功之后。还需要在 php.ini
文件中追加如下两行:
[msgpack] extension = msgpack.so
二、安装 Yar 扩展
$ wget https://pecl.php.net/get/yar-2.0.5.tgz $ tar zxvf yar-2.0.5.tgz $ cd yaf-2.0.5 $ phpize $ ./configure --enable-msgpack $ make && make install
由于我们使用了 msgpack
打包协议。所以,我们在 ./configure
后面增加了 --enable-msgpack
。如果不加,则无法使用 msgpack
协议。即使,我们已经正确安装了该扩展。
php.ini
增加:
[yar] extension = yar.so
三、RPC 示例
3.1 Server 端示例
<?php class Operator { /** * Add two operands * @param intergr * @return intergr */ public function add($a, $b) { return $this->_add($a, $b); } /** * Sub */ public function sub($a, $b) { return $a - $b; } /** * Mul */ public function mul($a, $b) { return $a * $b; } /** * Protected methods will not be exposed * @param intergr * @return intergr */ protected function _add($a, $b) { return $a + $b; } } $server = new Yar_Server(new Operator()); $server->handle();
查看示例:
假设,访问 Operator.php 访问地址为 http://local.test.com/rpc/server/Operator.php
。 那么,此时访问该地址会出现相应的文档。
3.2 Client 端示例
<?php $client = new yar_client("http://local.test.com/rpc/server/operator.php"); /* call directly */ var_dump($client->add(1, 2)); /* call via call */ var_dump($client->call("add", array(3, 2))); /* __add can not be called */ // var_dump($client->_add(1, 2));
此时,我们通过浏览器直接访问这个脚本会得到具体的运算结果。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 安装golang web框架 gin
- 安装并使用Golang的Gin框架
- golang 使用beego框架安装bee 报错
- Python网络框架Django和Scrapy安装指南
- Centos7.5安装部署Golang、Beego框架
- Golang 学习之二,beego安装和api服务框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。