内容简介:[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服务框架
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ANSI Common Lisp
Paul Graham / Prentice Hall / 1995-11-12 / USD 116.40
For use as a core text supplement in any course covering common LISP such as Artificial Intelligence or Concepts of Programming Languages. Teaching students new and more powerful ways of thinking abo......一起来看看 《ANSI Common Lisp》 这本书的介绍吧!