KONG专题目录
0x00 前言
本文内容包括:
- 用go语言实现一个grpc的hello服务
- 通过kong为grpc服务添加一个接口配置项
- 命令行方式测试grpc接口服务
注意: 本文只记录了Kong相关的配置, Go
相关内容没有过多详细介绍, 见谅.
0x01 Kong升级安装
nginx 1.3.10 以后版本官方支持grpc协议, 所以, 本文开始要使用的Kong版本为 1.3.0.
由于之前教程里一直使用的是1.2.x 版本, 这里记录一下升级过程.
# 查询可用版本
yum provides kong
# 安装 1.3.0 版本
yum install kong-1.3.0-1.x86_64
接下来, 第一次使用 kong restart
重启服务时, 会提示一些数据库格式不兼容的信息.
但只需要根据提示输入迁移数据库的指令即可完成.(具体指令忘记了记录 :)
再次 kong restart
完成升级
0x02 grpc 服务
go
语言写grpc
还是比较简单的(相比Java
代码少了很多). 这里只记录一下用到的代码 ,具体实施过程 不是本文重点.
- 定义一个proto
syntax = "proto3";
message HelloRequest {
string greeting = 1;
}
message HelloResponse {
string reply = 1;
}
service HelloService {
rpc SayHello (HelloRequest) returns (HelloResponse) {
}
}
- 生成
go
代码
protoc --go_out=plugins=grpc:. protos/order.proto
- 编写服务端代码
package main
import (
"fmt"
"log"
"net"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
order "grpc_demo/protos"
)
type Server struct{}
// SayHello (HelloRequest) returns (HelloResponse)
func (s *Server) SayHello(ctx context.Context, in *order.HelloRequest) (*order.HelloResponse, error) {
return &order.HelloResponse{Reply: "Hello :" + in.Greeting}, nil
}
func main() {
listener, e := net.Listen("tcp", ":50000")
if e != nil {
log.Fatalf("failed to listen : %v", e)
}
s := grpc.NewServer()
order.RegisterHelloServiceServer(s, &Server{})
reflection.Register(s)
if e := s.Serve(listener); e != nil {
log.Fatalf("failed to serve : %v", e)
}
fmt.Println("Server started ...")
}
- 启动服务
go run server.go
到此, 我们就有一个端口为50000
的grpc服务.
0x03 配置Kong
-
添加一个
service
-
为此
service
添加一个router
重点已经给出来了, 记得Paths
和 Protocols
这里输入好字符后, 要回车一下.
OK, Kong已经配置完成, 是不是很简单.
0x04 安装grpc
命令行工具grpcurl
go get github.com/fullstorydev/grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl
-
grpcurl
使用基础
下图展示的是通过grpcurl
来查看服务的细节
- 查看有哪些服务
grpcurl -plaintext localhost:80 list- 查看服务有哪些方法
grpcurl -plaintext localhost:80 list HelloService- 查看方法定义
grpcurl -plaintext localhost:80 describe HelloService.SayHello- 查看参数定义
grpcurl -plaintext localhost:80 describe HelloRequest- 构建参数, 发启调用
grpcurl -d '{"greeting":"国服最坑开发"}' -plaintext localhost:80 HelloService.SayHello
0x05 验证接口
grpcurl -v -d '{"greeting":"world"}' -plaintext localhost:80 HelloService.SayHello
完美!!!
KONG专题目录