Yar RPC 框架安装与基础使用

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

内容简介:[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));

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


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

查看所有标签

猜你喜欢:

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

Web性能优化

Web性能优化

Patrick Killelea 谢 / 谢文亮 / 清华大学出版社 / 2003-11-01 / 49.00元

本书讲述如何将Web性能调至最佳状态。书中不仅谈到了Web服务器软件的优化,而且还涉及到如何流水化处理Web内容,如何从浏览器端着手优化性能,如何调校客户端和服务器的硬件,以及如何最大限度地使用网络本身的特性。 书中的内容涉及到影响性能好坏的本质,并为得到立竿见影的效果提供了具体建议。本书向您娓娓道出评价计算性能高低的准则,并在后半部分讲述从客户端、网络直到服务器这一链条中每个环节的薄弱之一起来看看 《Web性能优化》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

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

URL 编码/解码