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 协议》,转载必须注明作者和本文链接
推荐文章: