移除节点归属地查询功能,归属地查询放到网关实现;优化节点上线流程,网关根据节点状态提交增量更新数据
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user