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 协议》,转载必须注明作者和本文链接
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

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

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

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

2年前 评论

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