GatewayBranch
GatewayBanch是一个基于DotNetty的轻量级端口转发工具
开源地址
诞生背景
做tcp通讯的朋友可能深有感触,当一个tcp项目上线之后避免不了需要数据转发
解决问题
频繁新增转发的需求
- 第一次收到转发需求的时候可能花点时间就能实现,测试发布一气呵成
- 第二次收到转发需求的时候可能你就犯嘀咕了
- 第三次…
- 第四次…
项目重构
项目重构后的新旧系统的过渡期
使用
docker
新建docker-compose.yml
文件,键入如下内容(开源库将保持最新内容)后执行docker-compose up -d
version: "3"
networks:
gatewaybranch:
driver: bridge
name: branch
services:
branch-master:
image: "yedajiang44/gatewaybranch:latest"
container_name: branch-master
restart: always
privileged: true
environment:
TZ: Asia/Shanghai
Gateway__TcpPort: 80 # 监听的端口号
Gateway__ReaderIdleTimeSeconds: 500
Gateway__ReaderIdleTimeSeconds: 500
Gateway__BrabchServerReaderIdleTimeSeconds: 500
Gateway__BrabchServerWriterIdleTimeSeconds: 500
Gateway__BrabchServer__0__Ip: 172.20.80.1 # 分流服务1的ip
Gateway__BrabchServer__0__Port: 809 #分流服务1的端口
Gateway__BrabchServer__0__NeedReply: 'true' #分流服务1需要下发回复
Gateway__BrabchServer__1__Ip: 172.20.80.1
Gateway__BrabchServer__1__Port: 810
Gateway__BrabchServer__1__NeedReply : 'true'
NLog__targets__logconsole__type: Console
NLog__rules__0__logger: "*"
NLog__rules__0__minLevel: Info
NLog__rules__0__writeTo: logconsole
logging:
driver: "json-file"
options:
max-size: "50m"
sysctls: #内核优化
- net.ipv4.ip_local_port_range=2048 65535 #可用端口范围
- net.ipv4.tcp_max_tw_buckets=30 #系统允许TIME_WAIT套接字数量的最大值, 如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。
- net.ipv4.tcp_tw_reuse=1 #开启重用,表示是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接 。
- net.ipv4.tcp_fin_timeout=5 #对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。
- net.ipv4.tcp_timestamps=1 #TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323)来启用对RTT 的计算,为实现更好的性能应该启用这个选项。
ports:
- 808:80
networks:
- gatewaybranch