1. 概述
1.1 插件名称
- TCP插件
1.2 适用场景
- 处理 TCP 协议请求,将其转发到后端其他 TCP 协议的服务
- 服务负载均衡
1.3 插件功能
- 支持根据配置的 upstream list 做 TCP 代理;
- upstream list 可在 admin 模块自行配置,热同步到 gateway;
- 支持设置请求的负载均衡策略,目前支持 shenyu 负载均衡模块的策略;
- 支持配置开启端口进行监听,可配置 reactor-netty 参数;
- 支持开启多个代理选择器
注意: 负载均衡作用与gateway建立连接时,当连接建立,后续的流 量继续保持负载均衡模块已经选定的upstream
1.4 插件代码
- 核心模块:
shenyu-plugin-tcpshenyu-protocol-tcp
1.5 添加自哪个shenyu版本
- 2.6.0
2. 如何使用插件
2.1 启用插件
- 初次使用时,启动 admin server,在
shenyu-admin--> 基础配置 --> 插件管理 中, 搜索 tcp 插件 并且点击“资源”激活 TCP 插件模块

- 在
shenyu-admin--> 基础配置 --> 插件管理 -->tcp,设置为开启

2.2 配置插件
- TCP 插件是以代理选择器(proxy-selector)为单位创建的,因此配置插件即是配置代理选择器的属性。 创建代理选择器时,点击页面的“添加选择器按钮”,在弹出的选择器表单 中,即可对选择器属性进行配置:

默认配置如下:
{
"loadBalance": "random",
"bossGroupThreadCount": "1",
"workerGroupThreadCount": "12",
"clientMaxConnections": "20",
"clientMaxIdleTimeMs": "30000",
"clientMaxLifeTimeMs": "60000",
"clientPendingAcquireTimeout": "5",
"clientPendingAcquireMaxCount": "5"
}
loadBalanceAlgorithm: shenyu负载均衡算法,默认为randombossGroupThreadCount,workerGroupThreadCount: ReactorNetty TcpServer 配置,详情见shenyu-protocol-tcp#TcpBootstrapServer#startclientMaxConnections,clientMaxIdleTimeMs,clientMaxLifeTimeMs,clientPendingAcquireTimeout,clientPendingAcquireMaxCount: ReactorNettyConnectionProvider配置,详情见shenyu-protocol-tcp#ConnectionContext
用户可以在shenyu-admin --> 基础配置 --> 插件处理管理 中,搜索 tcp 插件,对默认配置进行修改编辑:

2.3 配置服务发现
TCP 插件支持插件级别、选择器级别两种级别的服务发现配置:
服务发现 详情 见 discovery-mode
① 用户点击页面上的“服务发现配置”按钮,便可以在弹出的表单中配置插件级别的服务发现。配置完成后,再次打开表单,可以修改或删除之前的配置。 插件级别discovery配置后,选择器的discovery设置默认与插件级别保持一致:

② 如果用户没有配置插件级别的服务发现,在每次创建代理选择器(proxy-selector)时,都可以对该选择器的discovery进行配置:

目前,TCP 插件支持 Zookeeper 模式和 Local 模式的服务发现。
2.3.1 Zookeeper 模式
-
当服务发现的类型选择zookeeper时,需要填写 Discovery-Zookeeper 配置 培训详情见 discovery-mode
-
zookeeper模式下,discovery模块会自动监听用户的 zookeeper 注册中心,自动维护 discovery_upstream
