Yar RPC 框架安装与基础使用

栏目: 服务器 · 发布时间: 7年前

内容简介:[TOC]Yar 它是一个 RPC 框架。所以,也具备 RPC 的特性。RPC 框架最终实现了业务的解耦。比如,我们一个庞大的应用,有用户中心、订单中心、物流中心等模块。并且这些模块在长年累月经过不同的人迭代之后,变得异常难以维护。此时,我们可以 RPC 方案进行解耦。然后,在老模块进行调用。

[TOC]

Yar RPC 框架使用指南

Yar 是一个轻量级, 高效的 RPC 框架, 它提供了一种简单方法来让 PHP 项目之间可以互相远程调用对方的本地方法。并且 Yar 也提供了并行调用的能力。可以支持同时调用多个远程服务的方法。

Yar 它是一个 RPC 框架。所以,也具备 RPC 的特性。RPC 框架最终实现了业务的解耦。比如,我们一个庞大的应用,有用户中心、订单中心、物流中心等模块。并且这些模块在长年累月经过不同的人迭代之后,变得异常难以维护。此时,我们可以 RPC 方案进行解耦。然后,在老模块进行调用。

其次,Yar 框架还具备并行请求的功能。即同时可以发起多个请求,然后统一回调。整体用时取决于请求中最长用时的请求。

基于这些特性,我们可以把不同的模块进行拆分分开部分。然后,通过 RPC 方式提供服务。从而达到高并发高吞吐分布式的要求。千万上亿的 PV 毫无压力。

一、安装 Msgpack 扩展

Yar 支持 msgpackjsonphp 三种打包协议。 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 。 那么,此时访问该地址会出现相应的文档。

Yar RPC 框架安装与基础使用

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));

此时,我们通过浏览器直接访问这个脚本会得到具体的运算结果。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

小程序大时代

小程序大时代

即速应用 / 哈尔滨工业大学出版社 / 2018-10 / 58元

2017年1月9日微信小程序的问世,是中国互联网发展史上的又一个里程碑。支付宝、百度、今日头条等各大巨头的陆续进场,无不证明小程序这种轻应用形态已经成为移动互联网的发展趋势。我们希望可以通过这本书,帮助零基础的小程序爱好者,了解小程序的市场走向和生态发展,学会小程序的制作与运营,读懂小程序这个全新物种。 全书分为入门篇、制作篇、运营篇三大篇章。 入门篇首先揭开小程序的神秘面纱,盘点小程......一起来看看 《小程序大时代》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换