增加分布式更新方法

This commit is contained in:
2025-10-27 19:07:48 +08:00
parent 10c349b82f
commit c48c85f075
15 changed files with 345 additions and 112 deletions

View File

@@ -2,6 +2,7 @@ package cmd
import (
"context"
"fmt"
"time"
"github.com/ayflying/p2p/internal/consts"
@@ -13,6 +14,7 @@ import (
"github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/gtimer"
"github.com/gogf/gf/v2/util/grand"
)
func init() {
@@ -47,7 +49,24 @@ var (
})
addr := g.Cfg().MustGet(ctx, "ws.address").String()
ws := parser.GetOpt("ws", addr).String()
//port := parser.GetOpt("port", 0).Int()
if ws == "" {
listVar := g.Cfg().MustGet(ctx, "p2p.list")
var p2pItem []struct {
Host string `json:"host"`
Port int `json:"port"`
SSL bool `json:"ssl"`
Ws string `json:"ws"`
}
listVar.Scan(&p2pItem)
key := grand.Intn(len(p2pItem) - 1)
wsData := p2pItem[key]
ws = fmt.Sprintf("ws://%s:%d/ws", wsData.Host, wsData.Port)
}
port := parser.GetOpt("port", 0).Int()
if port > 0 {
s.SetPort(port)
}
s.Group("/", func(group *ghttp.RouterGroup) {
group.Middleware(ghttp.MiddlewareHandlerResponse)
@@ -66,8 +85,6 @@ var (
}
})
//s.SetPort(port)
// 延迟启动
gtimer.SetTimeout(ctx, time.Second*5, func(ctx context.Context) {
g.Log().Debug(ctx, "开始执行客户端")
@@ -75,12 +92,6 @@ var (
err = service.P2P().Start(ws)
g.Log().Debugf(ctx, "当前监听端口:%v", s.GetListenedPort())
//addrs, _ := net.InterfaceAddrs()
//for _, addr := range addrs {
// if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() && ipnet.IP.To4() != nil {
// g.Log().Infof(ctx, "访问地址:http://%v:%d", ipnet.IP.String(), s.GetListenedPort())
// }
//}
})

View File

@@ -74,9 +74,6 @@ var (
case "client":
// 获取客户端模式所需的参数
g.Log().Debug(ctx, "开始执行client")
//addrs := []string{"/ip4/127.0.0.1/tcp/51888", "/ip4/192.168.50.173/tcp/51888"}
//addr := "/ip4/192.168.50.173/tcp/51888/p2p/12D3KooWJKBB9bF9MjqgsFYUUsPBG249FDq7a3ZdaYc9iw8G78JQ"
//addrs := "WyIvaXA0LzEyNy4wLjAuMS90Y3AvNTE4ODgiLCIvaXA0LzE5Mi4xNjguNTAuMTczL3RjcC81MTg4OCJd"
wsStr := "ws://192.168.50.173:51888/ws"
err = service.P2P().Start(wsStr)
case "dht":

View File

@@ -41,13 +41,14 @@ var (
// 拼接操作系统和架构格式OS_ARCH
platform := fmt.Sprintf("%s_%s", runtime.GOOS, runtime.GOARCH)
var versionFile = make(map[string]string)
rootDir := "server_update"
var versionFile = make(map[string]string)
var filePath = path.Join(pathMain, version, platform, name)
dirList, _ := gfile.ScanDir(path.Join(pathMain, version), "*", false)
for _, v := range dirList {
updatePlatform := gfile.Name(v)
updateFilePath := path.Join("server_update", name, version, updatePlatform)
updateFilePath := path.Join(rootDir, name, version, updatePlatform)
var obj bytes.Buffer
g.Log().Debugf(ctx, "读取目录成功:%v", v)
@@ -70,14 +71,14 @@ var (
// 写入文件版本文件
fileByte := gjson.MustEncode(versionFile)
service.S3().PutObject(ctx, bytes.NewReader(fileByte), path.Join("server_update", name, "version.json"))
service.S3().PutObject(ctx, bytes.NewReader(fileByte), path.Join(rootDir, name, "version.json"))
if err != nil {
g.Log().Error(ctx, err)
}
}
g.Log().Debugf(ctx, "当前获取到的地址为:%v", filePath)
versionUrl := service.S3().GetCdnUrl(path.Join("server_update", name, "version.json"))
versionUrl := service.S3().GetCdnUrl(path.Join(rootDir, name))
listVar := g.Cfg().MustGet(ctx, "p2p.list")
var p2pItem []struct {
Host string `json:"host"`
@@ -96,7 +97,8 @@ var (
g.Log().Debugf(ctx, "开始上传到服务器:%v,file=%v", url, versionUrl)
_, err := g.Client().Get(ctx, url, systemV1.UpdateReq{
Url: versionUrl,
Url: versionUrl,
Version: version,
})
if err != nil {
g.Log().Error(ctx, err)