mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	边缘节点支持设置多个缓存目录
This commit is contained in:
		@@ -1146,6 +1146,7 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config.CacheDiskDir = node.CacheDiskDir
 | 
						config.CacheDiskDir = node.CacheDiskDir
 | 
				
			||||||
 | 
						config.CacheDiskSubDirs = node.DecodeCacheDiskSubDirs()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TOA
 | 
						// TOA
 | 
				
			||||||
	toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(tx, primaryClusterId, cacheMap)
 | 
						toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(tx, primaryClusterId, cacheMap)
 | 
				
			||||||
@@ -1621,7 +1622,7 @@ func (this *NodeDAO) UpdateNodeSystem(tx *dbs.Tx, nodeId int64, maxCPU int32) er
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UpdateNodeCache 设置缓存相关
 | 
					// UpdateNodeCache 设置缓存相关
 | 
				
			||||||
func (this *NodeDAO) UpdateNodeCache(tx *dbs.Tx, nodeId int64, maxCacheDiskCapacityJSON []byte, maxCacheMemoryCapacityJSON []byte, cacheDiskDir string) error {
 | 
					func (this *NodeDAO) UpdateNodeCache(tx *dbs.Tx, nodeId int64, maxCacheDiskCapacityJSON []byte, maxCacheMemoryCapacityJSON []byte, cacheDiskDir string, cacheDiskSubDirs []*serverconfigs.CacheDir) error {
 | 
				
			||||||
	if nodeId <= 0 {
 | 
						if nodeId <= 0 {
 | 
				
			||||||
		return errors.New("invalid nodeId")
 | 
							return errors.New("invalid nodeId")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -1634,7 +1635,17 @@ func (this *NodeDAO) UpdateNodeCache(tx *dbs.Tx, nodeId int64, maxCacheDiskCapac
 | 
				
			|||||||
		op.MaxCacheMemoryCapacity = maxCacheMemoryCapacityJSON
 | 
							op.MaxCacheMemoryCapacity = maxCacheMemoryCapacityJSON
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	op.CacheDiskDir = cacheDiskDir
 | 
						op.CacheDiskDir = cacheDiskDir
 | 
				
			||||||
	err := this.Save(tx, op)
 | 
					
 | 
				
			||||||
 | 
						if cacheDiskSubDirs == nil {
 | 
				
			||||||
 | 
							cacheDiskSubDirs = []*serverconfigs.CacheDir{}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						cacheDiskSubDirsJSON, err := json.Marshal(cacheDiskSubDirs)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						op.CacheDiskSubDirs = cacheDiskSubDirsJSON
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = this.Save(tx, op)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -38,7 +38,8 @@ type Node struct {
 | 
				
			|||||||
	DnsRoutes              dbs.JSON `field:"dnsRoutes"`              // DNS线路设置
 | 
						DnsRoutes              dbs.JSON `field:"dnsRoutes"`              // DNS线路设置
 | 
				
			||||||
	MaxCacheDiskCapacity   dbs.JSON `field:"maxCacheDiskCapacity"`   // 硬盘缓存容量
 | 
						MaxCacheDiskCapacity   dbs.JSON `field:"maxCacheDiskCapacity"`   // 硬盘缓存容量
 | 
				
			||||||
	MaxCacheMemoryCapacity dbs.JSON `field:"maxCacheMemoryCapacity"` // 内存缓存容量
 | 
						MaxCacheMemoryCapacity dbs.JSON `field:"maxCacheMemoryCapacity"` // 内存缓存容量
 | 
				
			||||||
	CacheDiskDir           string   `field:"cacheDiskDir"`           // 缓存目录
 | 
						CacheDiskDir           string   `field:"cacheDiskDir"`           // 主缓存目录
 | 
				
			||||||
 | 
						CacheDiskSubDirs       dbs.JSON `field:"cacheDiskSubDirs"`       // 其他缓存目录
 | 
				
			||||||
	DnsResolver            dbs.JSON `field:"dnsResolver"`            // DNS解析器
 | 
						DnsResolver            dbs.JSON `field:"dnsResolver"`            // DNS解析器
 | 
				
			||||||
	EnableIPLists          bool     `field:"enableIPLists"`          // 启用IP名单
 | 
						EnableIPLists          bool     `field:"enableIPLists"`          // 启用IP名单
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -78,7 +79,8 @@ type NodeOperator struct {
 | 
				
			|||||||
	DnsRoutes              any // DNS线路设置
 | 
						DnsRoutes              any // DNS线路设置
 | 
				
			||||||
	MaxCacheDiskCapacity   any // 硬盘缓存容量
 | 
						MaxCacheDiskCapacity   any // 硬盘缓存容量
 | 
				
			||||||
	MaxCacheMemoryCapacity any // 内存缓存容量
 | 
						MaxCacheMemoryCapacity any // 内存缓存容量
 | 
				
			||||||
	CacheDiskDir           any // 缓存目录
 | 
						CacheDiskDir           any // 主缓存目录
 | 
				
			||||||
 | 
						CacheDiskSubDirs       any // 其他缓存目录
 | 
				
			||||||
	DnsResolver            any // DNS解析器
 | 
						DnsResolver            any // DNS解析器
 | 
				
			||||||
	EnableIPLists          any // 启用IP名单
 | 
						EnableIPLists          any // 启用IP名单
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,9 @@ package models
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/ddosconfigs"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/ddosconfigs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
@@ -181,3 +183,16 @@ func (this *Node) DecodeLnAddrs() []string {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	return result
 | 
						return result
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *Node) DecodeCacheDiskSubDirs() []*serverconfigs.CacheDir {
 | 
				
			||||||
 | 
						if IsNull(this.CacheDiskSubDirs) {
 | 
				
			||||||
 | 
							return nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var result = []*serverconfigs.CacheDir{}
 | 
				
			||||||
 | 
						err := json.Unmarshal(this.CacheDiskSubDirs, &result)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							remotelogs.Error("Node.DecodeCacheDiskSubDirs", err.Error())
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -673,6 +673,7 @@ func (this *NodeService) FindEnabledNode(ctx context.Context, req *pb.FindEnable
 | 
				
			|||||||
		MaxCacheDiskCapacity:   pbMaxCacheDiskCapacity,
 | 
							MaxCacheDiskCapacity:   pbMaxCacheDiskCapacity,
 | 
				
			||||||
		MaxCacheMemoryCapacity: pbMaxCacheMemoryCapacity,
 | 
							MaxCacheMemoryCapacity: pbMaxCacheMemoryCapacity,
 | 
				
			||||||
		CacheDiskDir:           node.CacheDiskDir,
 | 
							CacheDiskDir:           node.CacheDiskDir,
 | 
				
			||||||
 | 
							CacheDiskSubDirsJSON:   node.CacheDiskSubDirs,
 | 
				
			||||||
		Level:                  int32(node.Level),
 | 
							Level:                  int32(node.Level),
 | 
				
			||||||
		LnAddrs:                node.DecodeLnAddrs(),
 | 
							LnAddrs:                node.DecodeLnAddrs(),
 | 
				
			||||||
		DnsRoutes:              pbRoutes,
 | 
							DnsRoutes:              pbRoutes,
 | 
				
			||||||
@@ -1708,7 +1709,16 @@ func (this *NodeService) UpdateNodeCache(ctx context.Context, req *pb.UpdateNode
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = models.SharedNodeDAO.UpdateNodeCache(tx, req.NodeId, maxCacheDiskCapacityJSON, maxCacheMemoryCapacityJSON, req.CacheDiskDir)
 | 
						// cache sub dirs
 | 
				
			||||||
 | 
						var cacheSubDirs = []*serverconfigs.CacheDir{}
 | 
				
			||||||
 | 
						if len(req.CacheDiskSubDirsJSON) > 0 {
 | 
				
			||||||
 | 
							err = json.Unmarshal(req.CacheDiskSubDirsJSON, &cacheSubDirs)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, errors.New("decode 'cacheDiskSubDirsJSON' failed: " + err.Error())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = models.SharedNodeDAO.UpdateNodeCache(tx, req.NodeId, maxCacheDiskCapacityJSON, maxCacheMemoryCapacityJSON, req.CacheDiskDir, cacheSubDirs)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user