GRPC: 如何在启动多个端口?-阿里云开发者社区

开发者社区> 尹东勋> 正文

GRPC: 如何在启动多个端口?

简介: 本文介绍如何通过 rk-boot 在一个进程里启动多个 gRPC 端口。
+关注继续查看

介绍

本文介绍如何通过 rk-boot 在一个进程里启动多个 gRPC 端口。

为什么要启动多个端口?

大部分情况下,我们是不需要的。如果我们希望在一个进程里通过 flag 启动不同端口时,会用到。

我们会在下面的例子里给出用法。

请访问如下地址获取完整教程:

安装

go get github.com/rookie-ninja/rk-boot

快速开始

1.创建 boot.yaml

为了验证,我们启动了 commonServicecommonService 里包含了一系列常用 API,例如 /rk/v1/healthy。

---
grpc:
  - name: alice
    port: 1949
    enabled: true
    commonService:
      enabled: true
  - name: bob
    port: 2008
    enabled: true
    commonService:
      enabled: true

2.创建 main.go

通过 boot.GetGrpcEntry("xxx") 来获取 gRPCEntry 进行 API 注册等操作。

package main

import (
    "context"
    "github.com/rookie-ninja/rk-boot"
)

func main() {
    // Create a new boot instance.
    boot := rkboot.NewBoot()

    // Get alice Entry via: 
    //   boot.GetGrpcEntry("alice")
    // 
    // Get bob Entry via: 
    //   boot.GetGrpcEntry("bob")

    // Bootstrap
    boot.Bootstrap(context.Background())
    
    // Wait for shutdown sig
    boot.WaitForShutdownSig(context.Background())
}

3.文件夹结构

$ tree
.
├── boot.yaml
├── go.mod
├── go.sum
└── main.go

0 directories, 4 files

4.启动 main.go

$ go run main.go

5.验证

  • 发送请求到 1949
$ curl -X GET localhost:1949/rk/v1/healthy
{"healthy":true}
  • 发送请求到 2008
$ curl -X GET localhost:2008/rk/v1/healthy
{"healthy":true}

只启动 1949 端口

我们可以通过 --rkset 命令行参数来 disable 掉 2008 端口的 gRPC Entry。

boot.yaml 里 gRPC 是一个数组,所以使用 grpc[x] 来表示。

1.启动 main.go with --rkset

$ go build main.go
$ ./main --rkset "grpc[1].enabled=false"

2.验证

  • 发送请求到 1949
$ curl -X GET localhost:1949/rk/v1/healthy
{"healthy":true}
  • 发送请求到 2008
$ curl -X GET localhost:2008/rk/v1/healthy
curl: (7) Failed to connect to localhost port 2008: Connection refused

rkset 覆盖 boot.yaml 里的值

boot.yaml 里的值,使用 --rkset 作为 flag。

使用逗号(注意,是英文逗号)来覆盖多个参数。

类型例子
Mapapp.description="This is description"
Listgrpc[0].name="alice",grpc[0].port=8081

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Boot 在程序中获取启动端口号
import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.annotati
3581 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4068 0
[20161227]打开多个监听端口.txt
[20161227]打开多个监听端口.txt --安全等保的需求,需要在1台数据库打开2个监听端口,并且还不能是1521缺省端口.看了一些文档,做一些记录. --参考连接:http://blog.
712 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4485 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10768 0
+关注
尹东勋
点目科技创始人
62
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载