实现边缘节点下线和由转发服务维护的端口分配机制

This commit is contained in:
2025-05-14 17:45:14 +08:00
parent 2be449e1a7
commit 661616dfc3
3 changed files with 89 additions and 14 deletions

View File

@@ -21,6 +21,7 @@ type RegisterEdgeReq struct {
}
type RegisterEdgeResp struct {
Id int32 `json:"id"`
Host string `json:"host"`
}
@@ -47,10 +48,7 @@ func OnlineEdge(c *fiber.Ctx) (err error) {
}
// 保存节点信息
err = q.Edge.Clauses(clause.OnConflict{
UpdateAll: true,
Columns: []clause.Column{{Name: "name"}},
}).Create(&m.Edge{
var edge = &m.Edge{
Name: req.Name,
Version: int32(req.Version),
Host: c.Context().RemoteIP().String(),
@@ -60,13 +58,41 @@ func OnlineEdge(c *fiber.Ctx) (err error) {
ProxyID: fwd.ID,
Type: int32(edge2.TypeSelfHosted),
Status: 1,
})
}
err = q.Edge.Clauses(clause.OnConflict{
UpdateAll: true,
Columns: []clause.Column{{Name: "name"}},
}).Create(edge)
if err != nil {
return err
}
// 返回服务地址
return c.JSON(RegisterEdgeResp{
Id: edge.ID,
Host: fwd.Host,
})
}
type OfflineEdgeReq struct {
Name string `json:"name" validate:"required"`
}
func OfflineEdge(c *fiber.Ctx) (err error) {
// 验证请求参数
var req = new(OfflineEdgeReq)
err = g.Validator.Validate(c, req)
if err != nil {
return err
}
// 下线转发服务
_, err = q.Edge.
Where(q.Edge.Name.Eq(req.Name)).
UpdateSimple(q.Edge.Status.Value(0))
if err != nil {
return err
}
return c.SendStatus(fiber.StatusOK)
}