本文介绍如何通过 rk-boot 在一个进程里启动多个 gRPC 端口。
为什么要启动多个端口?
大部分情况下,我们是不需要的。如果我们希望在一个进程里通过 flag 启动不同端口时,会用到。
我们会在下面的例子里给出用法。
请访问如下地址获取完整教程:
go get github.com/rookie-ninja/rk-boot
go get github.com/rookie-ninja/rk-grpc
为了验证,我们启动了 commonService,commonService 里包含了一系列常用 API,例如 /rk/v1/healthy。
---
grpc:
- name: alice
port: 1949
enabled: true
commonService:
enabled: true
- name: bob
port: 2008
enabled: true
commonService:
enabled: true
通过 boot.GetGrpcEntry("xxx") 来获取 gRPCEntry 进行 API 注册等操作。
package main
import (
"context"
"github.com/rookie-ninja/rk-boot"
"github.com/rookie-ninja/rk-grpc/boot"
)
func main() {
// Create a new boot instance.
boot := rkboot.NewBoot()
// Get alice Entry via:
boot.GetEntry("alice").(*rkgrpc.GrpcEntry)
//
// Get bob Entry via:
boot.GetEntry("bob").(*rkgrpc.GrpcEntry)
// Bootstrap
boot.Bootstrap(context.Background())
// Wait for shutdown sig
boot.WaitForShutdownSig(context.Background())
}
$ tree
.
├── boot.yaml
├── go.mod
├── go.sum
└── main.go
0 directories, 4 files
$ go run main.go
我们可以通过 --rkset 命令行参数来 disable 掉 2008 端口的 gRPC Entry。
boot.yaml 里 gRPC 是一个数组,所以使用 grpcx 来表示。
$ go build main.go
$ ./main --rkset "grpc[1].enabled=false"
boot.yaml 里的值,使用 --rkset 作为 flag。
使用逗号(注意,是英文逗号)来覆盖多个参数。
类型 | 例子 |
---|---|
Map | app.description="This is description" |
List | grpc0.name="alice",grpc0.port=8081 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。