1.什么是RPC
RPC是一种进程间的通讯方式,全称是“远程调用过程”。
当客户端向服务器发出请求时,并不是至直接发送给目标服务器,而是发送给RPC Server,由RPC Server进行调度。
RPC提供与调用本地方法无差别的远程调用方法。
2.Hprose简介
Hprose是一个轻量级的高性能跨语言RPC服务框架;提供同步,异步,写成等多种调用方式。
Hprose的简单架构如下图所示
3.Hprose具体实例
Hprose支持多种协议,以下展示多种协议中demo
1)Http协议
客户端:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Client;
$client = Client::create('http://hprose.com/example/', false);
服务器:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return "Hello $name!";
}
$server = new Server();
$server->addFunction('hello');
$server->start();
2)TCP协议
客户端:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Client;
$client = Client::create('tcp://127.0.0.1:1234', false);
服务器:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return "Hello $name!";
}
$server = new Server("tcp://0.0.0.0:1234");
$server->addFunction('hello');
$server->start();
3)创建UNIX Socket服务器
客户端:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Client;
$client = Client::create('unix:/tmp/my.sock');
服务器:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return "Hello $name!";
}
$server = new Server("unix:/tmp/my.sock");
$server->addFunction('hello');
$server->start();
4)异步的 WebSocket 客户端
客户端:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Client;
$client = Client::create('ws://127.0.0.1:8080/');
服务器:
<?php
require_once "vendor/autoload.php";
use Hprose\Swoole\Server;
function hello($name) {
return "Hello $name!";
}
$server = new Server("ws://0.0.0.0:8088");
$server->addFunction('hello');
$server->start();
4.Hprose-Swoole
Hprose-Swoole支持swoole的on,set,listen方法
使用步骤如下:
1)创建Hprose服务对象
2)设置服务器参数及回调函数
3)在onStart回调中初始化框架
4)在onWorkerStart回调中初始化PDO等连接
5)注册服务接口并启动服务