组件端口

云原生应用“12 要素”中关于端口的部分的描述“通过端口绑定(Port binding)来提供服务,互联网应用通过端口绑定来提供服务”。在 Rainbond 中同样的概念,组件定义端口实则是定义当前组件对外提供的服务。端口控制包括端口号,端口协议,端口访问控制、对内组件端口别名变量设置等操作,下图是不同团队、不同端口的组件开启了不同访问控制后的示意图:

组件端口 - 图1

端口号设置

组件端口与容器内部程序监听的端口是完全对应的关系,也就是说,当程序启动后监听的端口是 8080,那组件的端口就应该设置为 8080。可以通过【添加端口】功能为组件添加其他的端口,需要确保添加的端口与程序监听的端口一致,并选择对应的端口协议。 Rainbond 不建议开发者设置组件的监听端口为 80,这可能与 Rainbond mesh 层通信治理相冲突。建议组件代码支持识别环境变量 PORT 的值来建立监听。如此即可实现在平台上动态调整组件代码的监听端口。

一个组件可以有多个端口,其可能有不同的开放策略。比如一个端口是对外提供 HTTP 服务。一个端口对内部组件提供数据查询服务。

源码构建的组件,若源代码中未定义监听端口配置,系统默认添加端口号为 5000。

端口协议

端口可以指定不同的协议类型,目前 Rainbond 支持 HTTPTCPUDPMySQL 协议,请确保选择的协议与你程序监听的协议一致。

协议的选择会影响组件的后续操作:

  • 性能分析功能

不同协议的组件启动了 性能分析插件 后,其性能分析的方式会有所不同,如 HTTP 协议会分析 HTTP 相关的数据,MySQL 协议会分析 MySQL 语句相关的数据。

  • 打开对外组件后的访问

当端口打开对外组件后,HTTP 协议会分配默认的域名,非 HTTP 协议会分配 IP+端口的访问方式。

  • Mesh 层的治理

为组件提供几层的治理与组件端口的协议直接相关。

端口访问控制

端口的访问控制分为两类:

  • 对内服务

这里的是指团队内,开启组件对团队内部的访问许可,这时当前组件端口将被注册到团队的内部组件可用池、该团队内部的组件可以通过【添加依赖组件】的方式访问到该组件。 参考 组件之间的通信

  • 对外服务

打开对外组件后,平台会将该组件端口注册到团队对外组件可用池,这时应用网关可以以用户配置的访问策略访问到该组件,此时平台外部以及平台内部其他团队的组件都可以通过应用网关分配的域名或 IP 访问到该组件。 参考 外网访问组件

  • 端口打开对内服务后,其他组件要想连接到该组件,需要先【添加依赖组件】建立关联,然后通过连接地址或环境变量连接。
  • 端口访问控制可以根据需要开启和关闭,可单独开启,也可以全部开启,如果组件是个 worker 程序,只需要连接别的组件,本身没有端口监听就没有必要开启端口访问。

组件访问策略管理

Rainbond 为每一个 HTTP 组件自动生成一个默认的域名,一般情况下这个域名都比较长,不方便记忆。你可以在组件端口管理面板中快捷绑定自定义域名。 关于组件访问策略的几种管理和高级设置,请参考 外网访问组件