如何进行Yar并行的RPC框架使用分析

85次阅读
没有评论

共计 2239 个字符,预计需要花费 6 分钟才能阅读完成。

今天就跟大家聊聊有关如何进行 Yar 并行的 RPC 框架使用分析,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

前言:

RPC,就是 Remote Procedure Call 的简称呀,翻译成中文就是远程过程调用

RPC 要解决的两个问题:

解决分布式系统中,服务之间的调用问题。

远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑

如果模仿 B / S 架构的调用方式,每次调用时,都需要写一串发起 http 请求的代码。比如 new Curl()… 之类的,能不能像本地调用一样,去发起远程调用,让使用者感知不到远程调用的过程。

实际情况下,RPC 很少用到 http 协议来进行数据传输,毕竟我只是想传输一下数据而已,何必动用到一个文本传输的应用层协议。为什么不直接使用二进制传输。

安装:

$ pecl install yar
$ pecl install msgpack

服务端代码:

?php
require_once  Email.php 
require_once  Sms.php 
class Service
 private $sms;
 private $email;
 public function __construct()
 { $this- sms = new Sms();
 $this- email = new Email();
 }
 /**
 * @param $mobile
 * @return string
 */
 public function sendSms($mobile, $content =  短信内容)
 { return $this- sms- send($mobile, $content);
 }
 /**
 * @param $email
 * @return string
 */
 public function sendEmail($email)
 { return $this- email- send($email);
 }
$service = new Yar_Server(new Service());
$service- handle();

客户端代码:

?php
//  一、直接调用
//$client = new Yar_Client( http://192.168.2.138/api/ 
//$client- SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);
//$result = $client- sendSms( 18234065200 ,  我是短信内容 
//echo $result;
//  二、并行调用
// public static call ( string $uri , string $method [, array $parameters [, callable $callback [, callable $error_callback [, array $options ]]]] )
// callback  回掉函数,  在远程服务的返回到达的时候被 Yar 调用,  从而可以处理返回内容   如果没有设置则调用 loop 中的 callback
// error_callback
// $options
Yar_Concurrent_Client::call( http://192.168.2.138/api/ ,  sendSms , [ 18234065200 ,  欢迎注册 
Yar_Concurrent_Client::call(http://192.168.2.138/api/ ,  sendEmail , [ 12580@qq.com],  callback ,  callError , [YAR_OPT_TIMEOUT =  10]);
//  发送请求
// public static loop ([ callable $callback [, callable $error_callback ]] )
Yar_Concurrent_Client::loop( loopCallback ,  loopError 
function callback($retval, $callinfo)
 echo  call 自己的回调: . $callinfo[method] .  方法返回数据  . $retval . PHP_EOL;
//  错误回掉函数,  如果设置了, Yar 在发送出所有的请求之后立即调用一次这个回掉函数 (此时还没有任何请求返回),  调用的时候 $callinfo 参数是 NULL
function loopCallback($retval, $callinfo)
 if (is_null($callinfo)) {
 echo  所有 rpc 请求发送完毕调用  . PHP_EOL;
 } else {
 echo  调用成功后返回  . PHP_EOL;
 var_dump($retval);
 var_dump($callinfo);
 }
//  错误回调
function callError()
 echo  发送 rpc 出错  . PHP_EOL;
//  错误回掉函数,  如果设置了,  那么 Yar 在出错的时候会调用这个回掉函数
function loopError()
 echo  发送 rpc 出错  . PHP_EOL;
}

看完上述内容,你们对如何进行 Yar 并行的 RPC 框架使用分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计2239字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)