package main import ( "context" "log/slog" "os" "os/signal" "platform/pkg/env" "platform/pkg/logs" "time" ) func main() { // 初始化环境 env.Init() logs.Init() // 上下文 ctx, cancel := context.WithCancel(context.Background()) // 监听退出 exit := make(chan os.Signal, 1) defer close(exit) signal.Notify(exit, os.Interrupt, os.Kill) defer signal.Stop(exit) // 启动管理子线程 errCh := make(chan error, 1) go func() { defer close(errCh) err := start(ctx) if err != nil { errCh <- err } }() select { case <-exit: slog.Debug("exit by signal") cancel() case err := <-errCh: slog.Error("exit by error", "error", err) } } // 连接池,硬编码提供 10000 的容量 var idle = 100 var maximum = 10000 var pool = make(map[string]*Node, 10000) var tick = 1 * time.Minute type Node struct { Ip string } var last time.Time func start(ctx context.Context) error { ticker := time.NewTicker(tick) go func() { <-ctx.Done() ticker.Stop() }() for curr := range ticker.C { last = curr go func() { process(ctx, curr) }() } return nil } func process(ctx context.Context, curr time.Time) { // 查询节点状态 // 筛选在线节点添加到节点池 // }