Skip to content

Go IPs Forward 是一个用 Go 语言编写的高性能 TCP 转发和负载均衡工具。它能够从 CSV 文件中读取目标 IP 地址和数据中心信息,并根据实时测量的网络延迟,将入站连接转发到延迟最低的目标服务器。

Notifications You must be signed in to change notification settings

6Kmfi6HP/Go-IPs-Forward

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Go IPs Forward

项目描述

Go IPs Forward 是一个用 Go 语言编写的高性能 TCP 转发和负载均衡工具。它能够从 CSV 文件中读取目标 IP 地址和数据中心信息,并根据实时测量的网络延迟,将入站连接转发到延迟最低的目标服务器。

主要功能

  1. 从 CSV 文件读取目标 IP 地址和数据中心信息
  2. 按数据中心分组管理多个转发目标
  3. 动态测量目标服务器的网络延迟
  4. 基于最低延迟的负载均衡
  5. 实时更新最佳转发目标(每分钟)
  6. 支持多个数据中心的并行转发

技术特性

  • 使用 Go 的并发特性实现高效的多连接处理
  • 利用 goroutines 和 channels 进行异步操作
  • 使用互斥锁(mutex)确保线程安全
  • TCP 连接用于延迟测量和数据转发

使用说明

  1. 准备 CSV 文件

    创建一个名为 ip.csv 的文件,格式如下:

    IP地址,数据中心,地区,城市,网络延迟
    172.65.90.46,RUH,Middle East,Riyadh,6 ms
    172.65.90.58,SJC,North America,San Jose,6 ms
    

    注意:虽然 CSV 文件包含网络延迟信息,但程序会实时测量实际延迟。

  2. 编译程序

    go build -o go-ips-forward main.go
    
  3. 运行程序

    ./go-ips-forward
    

    程序将开始监听并转发连接。

配置

目前,配置是硬编码在程序中的。主要的配置项包括:

  • CSV 文件名:ip.csv
  • 起始监听端口:10000(每个数据中心递增)
  • 延迟测量间隔:1分钟
  • 连接超时:5秒

Roadmap

  1. 配置文件支持

    • 实现通过 YAML 或 JSON 配置文件读取设置
    • 允许用户自定义 CSV 文件路径、起始端口、更新间隔等
  2. 命令行参数

    • 添加命令行参数支持,允许覆盖默认配置
  3. 监控和日志

    • 实现详细的日志记录系统
    • 添加 Prometheus 指标导出
    • 创建基本的 Web UI 用于查看当前状态和统计信息
  4. 高级负载均衡策略

    • 实现加权轮询算法
    • 添加基于地理位置的路由选项
  5. 安全性增强

    • 添加 TLS 支持
    • 实现简单的认证机制
  6. 容错和恢复

    • 实现优雅关闭
    • 添加自动重试机制
    • 实现目标服务器健康检查
  7. 性能优化

    • 实现连接池
    • 优化内存使用
  8. 插件系统

    • 设计插件接口,允许自定义负载均衡策略和监控
  9. 容器化

    • 创建 Dockerfile
    • 提供 Docker Compose 配置用于快速部署
  10. 文档和测试

    • 编写全面的文档
    • 增加单元测试和集成测试覆盖率

贡献

欢迎提交 issues 和 pull requests。

许可证

MIT License

About

Go IPs Forward 是一个用 Go 语言编写的高性能 TCP 转发和负载均衡工具。它能够从 CSV 文件中读取目标 IP 地址和数据中心信息,并根据实时测量的网络延迟,将入站连接转发到延迟最低的目标服务器。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages