本篇文章开始写利用swoole的Hyperf框架搭建一个微服务架构。
首先我们安装一个Hyperf的项目,按照官方文档来利用composer安装,最好用阿里云的源。
composer create-project hyperf/hyperf-skeleton user-srv
选择rpc的时候选择grpc。其他的看自己的需求。
进入user-srv的根目录,创建一个protoc的文件,用户书写我们的协议文件。并且在protoc文件夹下新建一个user.proto的文件。文件如下
syntax = "proto3";
package php.micro.srv.user;
service user {
rpc find (Request) returns (Response) {}
rpc create(User) returns (Response) {}
}
// 用户信息
message User {
// 用户ID
int64 userId = 1;
// 用户名称
string username = 2;
string phone = 3;
string password = 4;
string email = 5;
string nickname = 6;
string avatar = 7;
string signature = 8;
}
// 错误码
message Error {
int64 code = 1;
string message = 2;
}
// 请求
message Request {
int64 userId = 1;
string username = 2;
string email = 3;
string phone = 4;
enum Type {
ID = 0;
USERNAME = 1;
EMAIL = 2;
PHONE = 3;
}
Type type = 5;
}
// 响应
message Response {
Error error = 1;
User user = 2;
}
我们定义了两个接口,一个查询find一个create。具体关于protoc的教程可以百度和谷歌。
然后生成protocbuf文件
protoc --php_out=grpc protoc/user.proto
这时候会在根目录下的grpc文件夹中生成依赖的文件。
├── GPBMetadata
│ └── Protoc
│ └── User.php
└── Php
└── Micro
└── Srv
└── User
├── Error.php
├── Request
│ └── Type.php
├── Request.php
├── Request_Type.php
├── Response.php
└── User.php
修改composer.json文件,在psr-4下面新增依赖,加完之后如下
"psr-4": {
"App": "app/",
"GPBMetadata": "grpc/GPBMetadata",
"Php": "grpc/Php"
}
然后执行命令行
根据刚刚定义的proto创建自己的user表。我简单创建如下
CREATE TABLE `user`