完善通道创建与同步流程

This commit is contained in:
2025-03-29 11:13:10 +08:00
parent 444b1a7b99
commit ec4f499edd
6 changed files with 259 additions and 210 deletions

View File

@@ -1,85 +0,0 @@
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) {
// 查询节点状态
// 筛选在线节点添加到节点池
//
}