think-swoole应用-微服务之RPC远程调用通信实战

RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。

解决问题:
解决分布式系统中,服务之间的调用问题。
远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。

Think-Swoole中已经实现了的基于TCP的PRC,这样我们使用传统型框架也可以做简单的分布式架构应用了。

一、配置服务端
1,修改 config/swoole.php

    'rpc'        => [
        'server' => [
            'enable'   => true,
            'port'     => 9000,
            'services' => [
                \app\rpc\service\UserService::class            ],
        ],
        'client' => [
        ],
    ],

2,新增rpc目录结构如下:


3,定义接口抽象方法

http://www.najingquan.com ;All rights reserved.// +----------------------------------------------------------------------// | Author: 救火队队长namespace app\rpc\interfaces;interface UserInterface{
    public function add($name);}

4,实现接口方法

http://www.najingquan.com ;All rights reserved.// +----------------------------------------------------------------------// | Author: 救火队队长namespace app\rpc\service;use app\rpc\interfaces\UserInterface;class UserService implements UserInterface{
    public function add($name)
    {
        return "您要新增的用户名是:{$name}";
    }}

服务端的操作就已经完成。 可以开启swoole 命令 php think swoole start

二、配置客户端
1,修改 config/swoole.php


'rpc'        => [
        'server' => [
            'enable'   => false,
            'port'     => 9000,
            'services' => [  
            ],
        ],
        'client' => [
            'userservice'=>[
                 //RPC服务端的ip地址
                'host' => '127.0.0.1',
                 //RPC服务端的端口
                'port' => 9000

            ]
        ],
    ],

2,生成RPC服务接口

php think rpc:interface

会在app目录下生成一个rpc.php的文件,它就是RPC服务接口文件
文件内容大致:


 ['rpc\contract\userservice\UserInterface']];

注意return中就是每个服务接口的命名空间;在控制器中使用该命名空间实例对象就可以调用

3,Controller调用


add("救火队队长");
    }}

4,浏览器访问客户端Controller

6 收藏 点击回复

留下评论