移除节点归属地查询功能,归属地查询放到网关实现;优化节点上线流程,网关根据节点状态提交增量更新数据

This commit is contained in:
2025-05-28 14:28:57 +08:00
parent 36013d7d04
commit 49f60b3e87
13 changed files with 160 additions and 193 deletions

View File

@@ -32,40 +32,56 @@ var (
EdgeUpdates = make(chan *core.Edge, 1000) // 节点更新通知通道
)
func NewEdge(id int32, port uint16, addr *net.TCPAddr) {
var host = addr.IP.String()
var edge = &core.Edge{
Id: id,
Host: &host,
Port: &port,
func NewEdge(id int32, port uint16, addr *net.TCPAddr) error {
if addr == nil {
return fmt.Errorf("边缘节点 %d 地址无效", id)
}
info, err := IpGeo(addr.IP)
if err != nil {
return fmt.Errorf("查询 geo 信息失败:%w", err)
}
// todo 查询 geo 信息
var host = addr.IP.String()
var edge = &core.Edge{
Id: id,
Host: &host,
Port: &port,
Prov: &info.Prov,
City: &info.City,
Isp: &info.Isp,
Status: &core.EdgeOnline,
}
Edges.Store(id, edge)
Assigns.Store(port, id)
EdgeUpdates <- edge
return nil
}
func TryUpdateEdge(id int32, addr *net.TCPAddr) error {
if addr == nil {
return fmt.Errorf("边缘节点 %d 地址无效", id)
}
edge, ok := Edges.Load(id)
if !ok {
return fmt.Errorf("边缘节点 %d 不存在", id)
}
edge.Status = &core.EdgeOnline
toUpdate := &core.Edge{
Id: edge.Id,
Status: &core.EdgeOnline,
}
host := addr.IP.String()
if edge.Host == nil || *edge.Host != host {
edge.Host = &host
EdgeUpdates <- &core.Edge{
Id: edge.Id,
Host: &host,
}
toUpdate.Host = &host
}
EdgeUpdates <- toUpdate
return nil
}