Laravel 5 使用 Grpc 构建的微服务

最近有用微服务相关的项目,所以记录一下。
服务端采用的是 NodeJS 代码就不贴了(主要是计算DY签名的),这里贴一下 .proto 文件的代码

proto 文件

syntax = "proto3";

package app.grpc; // 包名

// 定义通用的 Grpc 服务
service CommonService {
    // 处理请求
  rpc handle ( Request ) returns ( Response ) {}
}

// 定义通用的 Grpc 请求体
message Request {
    int32 serialize = 1;
    bytes request = 2;
}

// 定义通用的 Grpc 响应体
message Response {
    bytes response = 1;
}

生成 PHP端的类库文件

需要依赖 proto 支持,不知道怎么安装的可以到这篇文章看看 https://www.jianshu.com/p/1d550bb8509d

执行以下命令

protoc --proto_path=./ --php_out=./ --grpc_out=./ --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin ./server/service.proto

我的 .proto 文件名称是 service 放在 server 目录下。
执行完命令之后,会在根目录生成 App 和 GPBMetadata 文件夹。

在laravel中使用

1,复制 App目录下的 Grpc 文件夹到你的 laravel 项目的 app 目录下。

2,复制 GPBMetadata 文件夹到你的 laravel 项目根目录

3,修改 composer.json 文件的 classmap 字段加上 GPBMetadata

...
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories",
            "GPBMetadata"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    }
...

4,执行 composer dump-autoload 命令重新加载类库

5,现在就可以在控制器里面使用引入的类文件了。use App\Grpc\YourClassName 在文件顶部即可引入。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

大佬,怎么实现grpc交互,有demo吗?

2年前 评论
MIYA28118 (楼主) 2年前

可以私聊想你学习这方面知识吗?

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!