mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	可以在集群设置中修改节点最大并发读/写数
This commit is contained in:
		@@ -126,7 +126,7 @@ func (this *NodeClusterDAO) FindAllEnableClusterIds(tx *dbs.Tx) (result []int64,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CreateCluster 创建集群
 | 
			
		||||
func (this *NodeClusterDAO) CreateCluster(tx *dbs.Tx, adminId int64, name string, grantId int64, installDir string, dnsDomainId int64, dnsName string, dnsTTL int32, cachePolicyId int64, httpFirewallPolicyId int64, systemServices map[string]maps.Map, globalServerConfig *serverconfigs.GlobalServerConfig, autoInstallNftables bool, autoSystemTuning bool, autoTrimDisks bool) (clusterId int64, err error) {
 | 
			
		||||
func (this *NodeClusterDAO) CreateCluster(tx *dbs.Tx, adminId int64, name string, grantId int64, installDir string, dnsDomainId int64, dnsName string, dnsTTL int32, cachePolicyId int64, httpFirewallPolicyId int64, systemServices map[string]maps.Map, globalServerConfig *serverconfigs.GlobalServerConfig, autoInstallNftables bool, autoSystemTuning bool, autoTrimDisks bool, maxConcurrentReads int32, maxConcurrentWrites int32) (clusterId int64, err error) {
 | 
			
		||||
	uniqueId, err := this.GenUniqueId(tx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return 0, err
 | 
			
		||||
@@ -191,6 +191,14 @@ func (this *NodeClusterDAO) CreateCluster(tx *dbs.Tx, adminId int64, name string
 | 
			
		||||
	op.AutoInstallNftables = autoInstallNftables
 | 
			
		||||
	op.AutoSystemTuning = autoSystemTuning
 | 
			
		||||
	op.AutoTrimDisks = autoTrimDisks
 | 
			
		||||
 | 
			
		||||
	if maxConcurrentReads > 0 {
 | 
			
		||||
		op.MaxConcurrentReads = maxConcurrentReads
 | 
			
		||||
	}
 | 
			
		||||
	if maxConcurrentWrites > 0 {
 | 
			
		||||
		op.MaxConcurrentWrites = maxConcurrentWrites
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	op.State = NodeClusterStateEnabled
 | 
			
		||||
	err = this.Save(tx, op)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -201,7 +209,7 @@ func (this *NodeClusterDAO) CreateCluster(tx *dbs.Tx, adminId int64, name string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateCluster 修改集群
 | 
			
		||||
func (this *NodeClusterDAO) UpdateCluster(tx *dbs.Tx, clusterId int64, name string, grantId int64, installDir string, timezone string, nodeMaxThreads int32, autoOpenPorts bool, clockConfig *nodeconfigs.ClockConfig, autoRemoteStart bool, autoInstallTables bool, sshParams *nodeconfigs.SSHParams, autoSystemTuning bool, autoTrimDisks bool) error {
 | 
			
		||||
func (this *NodeClusterDAO) UpdateCluster(tx *dbs.Tx, clusterId int64, name string, grantId int64, installDir string, timezone string, nodeMaxThreads int32, autoOpenPorts bool, clockConfig *nodeconfigs.ClockConfig, autoRemoteStart bool, autoInstallTables bool, sshParams *nodeconfigs.SSHParams, autoSystemTuning bool, autoTrimDisks bool, maxConcurrentReads int32, maxConcurrentWrites int32) error {
 | 
			
		||||
	if clusterId <= 0 {
 | 
			
		||||
		return errors.New("invalid clusterId")
 | 
			
		||||
	}
 | 
			
		||||
@@ -231,6 +239,13 @@ func (this *NodeClusterDAO) UpdateCluster(tx *dbs.Tx, clusterId int64, name stri
 | 
			
		||||
	op.AutoSystemTuning = autoSystemTuning
 | 
			
		||||
	op.AutoTrimDisks = autoTrimDisks
 | 
			
		||||
 | 
			
		||||
	if maxConcurrentReads >= 0 {
 | 
			
		||||
		op.MaxConcurrentReads = maxConcurrentReads
 | 
			
		||||
	}
 | 
			
		||||
	if maxConcurrentWrites >= 0 {
 | 
			
		||||
		op.MaxConcurrentWrites = maxConcurrentWrites
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if sshParams != nil {
 | 
			
		||||
		sshParamsJSON, err := json.Marshal(sshParams)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
@@ -1030,7 +1045,7 @@ func (this *NodeClusterDAO) FindClusterBasicInfo(tx *dbs.Tx, clusterId int64, ca
 | 
			
		||||
	cluster, err := this.Query(tx).
 | 
			
		||||
		Pk(clusterId).
 | 
			
		||||
		State(NodeClusterStateEnabled).
 | 
			
		||||
		Result("id", "name", "timeZone", "nodeMaxThreads", "cachePolicyId", "httpFirewallPolicyId", "autoOpenPorts", "webp", "uam", "cc", "httpPages", "http3", "isOn", "ddosProtection", "clock", "globalServerConfig", "autoInstallNftables", "autoSystemTuning", "networkSecurity", "autoTrimDisks", "secret").
 | 
			
		||||
		Result("id", "name", "timeZone", "nodeMaxThreads", "cachePolicyId", "httpFirewallPolicyId", "autoOpenPorts", "webp", "uam", "cc", "httpPages", "http3", "isOn", "ddosProtection", "clock", "globalServerConfig", "autoInstallNftables", "autoSystemTuning", "networkSecurity", "autoTrimDisks", "maxConcurrentReads", "maxConcurrentWrites", "secret").
 | 
			
		||||
		Find()
 | 
			
		||||
	if err != nil || cluster == nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
 
 | 
			
		||||
@@ -46,6 +46,8 @@ const (
 | 
			
		||||
	NodeClusterField_AutoSystemTuning     dbs.FieldName = "autoSystemTuning"     // 是否自动调整系统参数
 | 
			
		||||
	NodeClusterField_NetworkSecurity      dbs.FieldName = "networkSecurity"      // 网络安全策略
 | 
			
		||||
	NodeClusterField_AutoTrimDisks        dbs.FieldName = "autoTrimDisks"        // 是否自动执行TRIM
 | 
			
		||||
	NodeClusterField_MaxConcurrentReads   dbs.FieldName = "maxConcurrentReads"   // 节点并发读限制
 | 
			
		||||
	NodeClusterField_MaxConcurrentWrites  dbs.FieldName = "maxConcurrentWrites"  // 节点并发写限制
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// NodeCluster 节点集群
 | 
			
		||||
@@ -93,6 +95,8 @@ type NodeCluster struct {
 | 
			
		||||
	AutoSystemTuning     bool     `field:"autoSystemTuning"`     // 是否自动调整系统参数
 | 
			
		||||
	NetworkSecurity      dbs.JSON `field:"networkSecurity"`      // 网络安全策略
 | 
			
		||||
	AutoTrimDisks        bool     `field:"autoTrimDisks"`        // 是否自动执行TRIM
 | 
			
		||||
	MaxConcurrentReads   uint32   `field:"maxConcurrentReads"`   // 节点并发读限制
 | 
			
		||||
	MaxConcurrentWrites  uint32   `field:"maxConcurrentWrites"`  // 节点并发写限制
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type NodeClusterOperator struct {
 | 
			
		||||
@@ -139,6 +143,8 @@ type NodeClusterOperator struct {
 | 
			
		||||
	AutoSystemTuning     any // 是否自动调整系统参数
 | 
			
		||||
	NetworkSecurity      any // 网络安全策略
 | 
			
		||||
	AutoTrimDisks        any // 是否自动执行TRIM
 | 
			
		||||
	MaxConcurrentReads   any // 节点并发读限制
 | 
			
		||||
	MaxConcurrentWrites  any // 节点并发写限制
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewNodeClusterOperator() *NodeClusterOperator {
 | 
			
		||||
 
 | 
			
		||||
@@ -1254,6 +1254,8 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, dataMap *shared
 | 
			
		||||
			config.AutoInstallNftables = nodeCluster.AutoInstallNftables
 | 
			
		||||
			config.AutoSystemTuning = nodeCluster.AutoSystemTuning
 | 
			
		||||
			config.AutoTrimDisks = nodeCluster.AutoTrimDisks
 | 
			
		||||
			config.MaxConcurrentReads = int(nodeCluster.MaxConcurrentReads)
 | 
			
		||||
			config.MaxConcurrentWrites = int(nodeCluster.MaxConcurrentWrites)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// 安全设置
 | 
			
		||||
 
 | 
			
		||||
@@ -80,7 +80,7 @@ func (this *NodeClusterService) CreateNodeCluster(ctx context.Context, req *pb.C
 | 
			
		||||
			req.DnsTTL = 0
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		clusterId, err = models.SharedNodeClusterDAO.CreateCluster(tx, adminId, req.Name, req.NodeGrantId, req.InstallDir, req.DnsDomainId, req.DnsName, req.DnsTTL, req.HttpCachePolicyId, req.HttpFirewallPolicyId, systemServices, serverGlobalConfig, req.AutoInstallNftables, req.AutoSystemTuning, req.AutoTrimDisks)
 | 
			
		||||
		clusterId, err = models.SharedNodeClusterDAO.CreateCluster(tx, adminId, req.Name, req.NodeGrantId, req.InstallDir, req.DnsDomainId, req.DnsName, req.DnsTTL, req.HttpCachePolicyId, req.HttpFirewallPolicyId, systemServices, serverGlobalConfig, req.AutoInstallNftables, req.AutoSystemTuning, req.AutoTrimDisks, req.MaxConcurrentReads, req.MaxConcurrentWrites)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
@@ -127,7 +127,7 @@ func (this *NodeClusterService) UpdateNodeCluster(ctx context.Context, req *pb.U
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = models.SharedNodeClusterDAO.UpdateCluster(tx, req.NodeClusterId, req.Name, req.NodeGrantId, req.InstallDir, req.TimeZone, req.NodeMaxThreads, req.AutoOpenPorts, clockConfig, req.AutoRemoteStart, req.AutoInstallNftables, sshParams, req.AutoSystemTuning, req.AutoTrimDisks)
 | 
			
		||||
	err = models.SharedNodeClusterDAO.UpdateCluster(tx, req.NodeClusterId, req.Name, req.NodeGrantId, req.InstallDir, req.TimeZone, req.NodeMaxThreads, req.AutoOpenPorts, clockConfig, req.AutoRemoteStart, req.AutoInstallNftables, sshParams, req.AutoSystemTuning, req.AutoTrimDisks, req.MaxConcurrentReads, req.MaxConcurrentWrites)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -235,6 +235,8 @@ func (this *NodeClusterService) FindEnabledNodeCluster(ctx context.Context, req
 | 
			
		||||
		AutoInstallNftables:  cluster.AutoInstallNftables,
 | 
			
		||||
		AutoSystemTuning:     cluster.AutoSystemTuning,
 | 
			
		||||
		AutoTrimDisks:        cluster.AutoTrimDisks,
 | 
			
		||||
		MaxConcurrentReads:   int32(cluster.MaxConcurrentReads),
 | 
			
		||||
		MaxConcurrentWrites:  int32(cluster.MaxConcurrentWrites),
 | 
			
		||||
	}}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -109876,7 +109876,7 @@
 | 
			
		||||
      "name": "edgeNodeClusters",
 | 
			
		||||
      "engine": "InnoDB",
 | 
			
		||||
      "charset": "utf8mb4_general_ci",
 | 
			
		||||
      "definition": "CREATE TABLE `edgeNodeClusters` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `isOn` tinyint(1) unsigned DEFAULT '1' COMMENT '是否启用',\n  `name` varchar(255) DEFAULT NULL COMMENT '名称',\n  `useAllAPINodes` tinyint(1) unsigned DEFAULT '1' COMMENT '是否使用所有API节点',\n  `apiNodes` json DEFAULT NULL COMMENT '使用的API节点',\n  `installDir` varchar(512) DEFAULT NULL COMMENT '安装目录',\n  `order` int(11) unsigned DEFAULT '0' COMMENT '排序',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `grantId` int(11) unsigned DEFAULT '0' COMMENT '默认认证方式',\n  `sshParams` json DEFAULT NULL COMMENT 'SSH默认参数',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `autoRegister` tinyint(1) unsigned DEFAULT '1' COMMENT '是否开启自动注册',\n  `uniqueId` varchar(32) DEFAULT NULL COMMENT '唯一ID',\n  `secret` varchar(32) DEFAULT NULL COMMENT '密钥',\n  `healthCheck` json DEFAULT NULL COMMENT '健康检查',\n  `dnsName` varchar(255) DEFAULT NULL COMMENT 'DNS名称',\n  `dnsDomainId` int(11) unsigned DEFAULT '0' COMMENT '域名ID',\n  `dns` json DEFAULT NULL COMMENT 'DNS配置',\n  `toa` json DEFAULT NULL COMMENT 'TOA配置',\n  `cachePolicyId` int(11) unsigned DEFAULT '0' COMMENT '缓存策略ID',\n  `httpFirewallPolicyId` int(11) unsigned DEFAULT '0' COMMENT 'WAF策略ID',\n  `accessLog` json DEFAULT NULL COMMENT '访问日志设置',\n  `systemServices` json DEFAULT NULL COMMENT '系统服务设置',\n  `timeZone` varchar(64) DEFAULT NULL COMMENT '时区',\n  `nodeMaxThreads` int(11) unsigned DEFAULT '0' COMMENT '节点最大线程数',\n  `ddosProtection` json DEFAULT NULL COMMENT 'DDoS防护设置',\n  `autoOpenPorts` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动尝试开放端口',\n  `isPinned` tinyint(1) unsigned DEFAULT '0' COMMENT '是否置顶',\n  `webp` json DEFAULT NULL COMMENT 'WebP设置',\n  `uam` json DEFAULT NULL COMMENT 'UAM设置',\n  `clock` json DEFAULT NULL COMMENT '时钟配置',\n  `globalServerConfig` json DEFAULT NULL COMMENT '全局服务配置',\n  `autoRemoteStart` tinyint(1) unsigned DEFAULT '1' COMMENT '自动远程启动',\n  `autoInstallNftables` tinyint(1) unsigned DEFAULT '0' COMMENT '自动安装nftables',\n  `isAD` tinyint(1) unsigned DEFAULT '0' COMMENT '是否为高防集群',\n  `httpPages` json DEFAULT NULL COMMENT '自定义页面设置',\n  `cc` json DEFAULT NULL COMMENT 'CC设置',\n  `http3` json DEFAULT NULL COMMENT 'HTTP3设置',\n  `autoSystemTuning` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动调整系统参数',\n  `networkSecurity` json DEFAULT NULL COMMENT '网络安全策略',\n  `autoTrimDisks` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动执行TRIM',\n  PRIMARY KEY (`id`),\n  KEY `uniqueId` (`uniqueId`),\n  KEY `grantId` (`grantId`),\n  KEY `dnsDomainId` (`dnsDomainId`),\n  KEY `cachePolicyId` (`cachePolicyId`),\n  KEY `httpFirewallPolicyId` (`httpFirewallPolicyId`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='节点集群'",
 | 
			
		||||
      "definition": "CREATE TABLE `edgeNodeClusters` (\n  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',\n  `adminId` int(11) unsigned DEFAULT '0' COMMENT '管理员ID',\n  `userId` int(11) unsigned DEFAULT '0' COMMENT '用户ID',\n  `isOn` tinyint(1) unsigned DEFAULT '1' COMMENT '是否启用',\n  `name` varchar(255) DEFAULT NULL COMMENT '名称',\n  `useAllAPINodes` tinyint(1) unsigned DEFAULT '1' COMMENT '是否使用所有API节点',\n  `apiNodes` json DEFAULT NULL COMMENT '使用的API节点',\n  `installDir` varchar(512) DEFAULT NULL COMMENT '安装目录',\n  `order` int(11) unsigned DEFAULT '0' COMMENT '排序',\n  `createdAt` bigint(11) unsigned DEFAULT '0' COMMENT '创建时间',\n  `grantId` int(11) unsigned DEFAULT '0' COMMENT '默认认证方式',\n  `sshParams` json DEFAULT NULL COMMENT 'SSH默认参数',\n  `state` tinyint(1) unsigned DEFAULT '1' COMMENT '状态',\n  `autoRegister` tinyint(1) unsigned DEFAULT '1' COMMENT '是否开启自动注册',\n  `uniqueId` varchar(32) DEFAULT NULL COMMENT '唯一ID',\n  `secret` varchar(32) DEFAULT NULL COMMENT '密钥',\n  `healthCheck` json DEFAULT NULL COMMENT '健康检查',\n  `dnsName` varchar(255) DEFAULT NULL COMMENT 'DNS名称',\n  `dnsDomainId` int(11) unsigned DEFAULT '0' COMMENT '域名ID',\n  `dns` json DEFAULT NULL COMMENT 'DNS配置',\n  `toa` json DEFAULT NULL COMMENT 'TOA配置',\n  `cachePolicyId` int(11) unsigned DEFAULT '0' COMMENT '缓存策略ID',\n  `httpFirewallPolicyId` int(11) unsigned DEFAULT '0' COMMENT 'WAF策略ID',\n  `accessLog` json DEFAULT NULL COMMENT '访问日志设置',\n  `systemServices` json DEFAULT NULL COMMENT '系统服务设置',\n  `timeZone` varchar(64) DEFAULT NULL COMMENT '时区',\n  `nodeMaxThreads` int(11) unsigned DEFAULT '0' COMMENT '节点最大线程数',\n  `ddosProtection` json DEFAULT NULL COMMENT 'DDoS防护设置',\n  `autoOpenPorts` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动尝试开放端口',\n  `isPinned` tinyint(1) unsigned DEFAULT '0' COMMENT '是否置顶',\n  `webp` json DEFAULT NULL COMMENT 'WebP设置',\n  `uam` json DEFAULT NULL COMMENT 'UAM设置',\n  `clock` json DEFAULT NULL COMMENT '时钟配置',\n  `globalServerConfig` json DEFAULT NULL COMMENT '全局服务配置',\n  `autoRemoteStart` tinyint(1) unsigned DEFAULT '1' COMMENT '自动远程启动',\n  `autoInstallNftables` tinyint(1) unsigned DEFAULT '0' COMMENT '自动安装nftables',\n  `isAD` tinyint(1) unsigned DEFAULT '0' COMMENT '是否为高防集群',\n  `httpPages` json DEFAULT NULL COMMENT '自定义页面设置',\n  `cc` json DEFAULT NULL COMMENT 'CC设置',\n  `http3` json DEFAULT NULL COMMENT 'HTTP3设置',\n  `autoSystemTuning` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动调整系统参数',\n  `networkSecurity` json DEFAULT NULL COMMENT '网络安全策略',\n  `autoTrimDisks` tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动执行TRIM',\n  `maxConcurrentReads` int(11) unsigned DEFAULT '0' COMMENT '节点并发读限制',\n  `maxConcurrentWrites` int(11) unsigned DEFAULT '0' COMMENT '节点并发写限制',\n  PRIMARY KEY (`id`),\n  KEY `uniqueId` (`uniqueId`),\n  KEY `grantId` (`grantId`),\n  KEY `dnsDomainId` (`dnsDomainId`),\n  KEY `cachePolicyId` (`cachePolicyId`),\n  KEY `httpFirewallPolicyId` (`httpFirewallPolicyId`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='节点集群'",
 | 
			
		||||
      "fields": [
 | 
			
		||||
        {
 | 
			
		||||
          "name": "id",
 | 
			
		||||
@@ -110049,6 +110049,14 @@
 | 
			
		||||
        {
 | 
			
		||||
          "name": "autoTrimDisks",
 | 
			
		||||
          "definition": "tinyint(1) unsigned DEFAULT '1' COMMENT '是否自动执行TRIM'"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "name": "maxConcurrentReads",
 | 
			
		||||
          "definition": "int(11) unsigned DEFAULT '0' COMMENT '节点并发读限制'"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "name": "maxConcurrentWrites",
 | 
			
		||||
          "definition": "int(11) unsigned DEFAULT '0' COMMENT '节点并发写限制'"
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "indexes": [
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user