Skip to content

Commit 125f723

Browse files
author
Roy
committed
feat(plugin): 支持插件实例副本数量配置
1 parent 0e4a9fb commit 125f723

5 files changed

Lines changed: 17 additions & 12 deletions

File tree

platform-core/api/v1/data-trans/import.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ func RestartPluginInstance(ctx context.Context, pluginPackageId string) (err err
410410
return
411411
}
412412

413-
err = plugin.LaunchPluginFunc(ctx, pluginPackageId, resServer, "system", pluginInstanceObj.Port, pluginInstanceObj.Cpu, pluginInstanceObj.Memory, 1)
413+
err = plugin.LaunchPluginFunc(ctx, pluginPackageId, resServer, "system", pluginInstanceObj.Port, pluginInstanceObj.Cpu, pluginInstanceObj.Memory, pluginInstanceObj.Replicas)
414414
if err != nil {
415415
err = fmt.Errorf("launch plugin:%s fail,%s ", pluginInstanceObj.InstanceName, err.Error())
416416
}

platform-core/api/v1/plugin/package.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -844,6 +844,7 @@ func LaunchPluginFunc(ctx context.Context, pluginPackageId string, resServer *mo
844844
ContainerStatus: "RUNNING",
845845
PackageId: pluginPackageId,
846846
InstanceName: pluginPackageObj.Name,
847+
Replicas: replicas,
847848
}
848849
// 新增k8s资源限制支持
849850
pluginInstance.Cpu = requestCpu

platform-core/models/plugin.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ type PluginInstances struct {
7272
S3bucketResourceId string `json:"s3bucketResourceId" xorm:"s3bucket_resource_id"` // s3资源id
7373
ResourceServerId string `json:"resourceServerId" xorm:"-"` // DockerInstanceResourceId对应的RS id
7474
Cpu string `json:"cpu" xorm:"cpu"` // 插件实际运行CPU,如500m/0.5/1/3等
75-
Memory string `json:"memory" xorm:"memory"` // 插件实际运行内存,如512Mi/0.5Gi/1Gi/3Gi
75+
Memory string `json:"memory" xorm:"memory"`
76+
Replicas int `json:"replicas" xorm:"replicas"` // 实例副本数量(仅k8s)
7677
}
7778

7879
type PluginPackageRuntimeResourcesDocker struct {
@@ -919,10 +920,11 @@ type PluginPackageQueryObj struct {
919920
}
920921

921922
type PluginPackageInstanceObj struct {
922-
Id string `json:"id"`
923-
Address string `json:"address"`
924-
Cpu string `json:"cpu"`
925-
Memory string `json:"memory"`
923+
Id string `json:"id"`
924+
Address string `json:"address"`
925+
Cpu string `json:"cpu"`
926+
Memory string `json:"memory"`
927+
Replicas int `json:"replicas"`
926928
}
927929

928930
type PluginVersionListObj struct {

platform-core/services/database/package.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func QueryPluginPackages(ctx context.Context, param *models.PluginPackageQueryPa
102102
menuItemNameMap[row.Code] = row.LocalDisplayName
103103
}
104104
var instanceRows []*models.PluginInstances
105-
err = db.MysqlEngine.Context(ctx).SQL("select id,host,port,package_id,cpu,memory from plugin_instances").Find(&instanceRows)
105+
err = db.MysqlEngine.Context(ctx).SQL("select id,host,port,package_id,cpu,memory,replicas from plugin_instances").Find(&instanceRows)
106106
if err != nil {
107107
err = exterror.Catch(exterror.New().DatabaseQueryError, err)
108108
return
@@ -138,9 +138,9 @@ func QueryPluginPackages(ctx context.Context, param *models.PluginPackageQueryPa
138138
for _, row := range instanceRows {
139139
address := fmt.Sprintf("%s:%d", row.Host, row.Port)
140140
if existInstanceList, ok := instanceMap[row.PackageId]; ok {
141-
instanceMap[row.PackageId] = append(existInstanceList, &models.PluginPackageInstanceObj{Id: row.Id, Address: address, Cpu: row.Cpu, Memory: row.Memory})
141+
instanceMap[row.PackageId] = append(existInstanceList, &models.PluginPackageInstanceObj{Id: row.Id, Address: address, Cpu: row.Cpu, Memory: row.Memory, Replicas: row.Replicas})
142142
} else {
143-
instanceMap[row.PackageId] = []*models.PluginPackageInstanceObj{{Id: row.Id, Address: address, Cpu: row.Cpu, Memory: row.Memory}}
143+
instanceMap[row.PackageId] = []*models.PluginPackageInstanceObj{{Id: row.Id, Address: address, Cpu: row.Cpu, Memory: row.Memory, Replicas: row.Replicas}}
144144
}
145145
}
146146

@@ -724,7 +724,7 @@ func LaunchPlugin(ctx context.Context, pluginInstance *models.PluginInstances, r
724724
actions = append(actions, &db.ExecAction{Sql: "INSERT INTO resource_item (id,additional_properties,created_by,created_date,is_allocated,name,purpose,resource_server_id,status,`type`,updated_by,updated_date) values (?,?,?,?,?,?,?,?,?,?,?,?)", Param: []interface{}{
725725
resourceItem.Id, resourceItem.AdditionalProperties, resourceItem.CreatedBy, resourceItem.CreatedDate, 1, resourceItem.Name, resourceItem.Purpose, resourceItem.ResourceServerId, "created", "docker_container", resourceItem.CreatedBy, resourceItem.CreatedDate,
726726
}})
727-
insertInsAction := &db.ExecAction{Sql: "INSERT INTO plugin_instances (id,host,container_name,port,container_status,package_id,docker_instance_resource_id,instance_name,plugin_mysql_instance_resource_id,s3bucket_resource_id,cpu,memory) values (?,?,?,?,?,?,?,?,?,?,?,?)", Param: []interface{}{
727+
insertInsAction := &db.ExecAction{Sql: "INSERT INTO plugin_instances (id,host,container_name,port,container_status,package_id,docker_instance_resource_id,instance_name,plugin_mysql_instance_resource_id,s3bucket_resource_id,cpu,memory,replicas) values (?,?,?,?,?,?,?,?,?,?,?,?,?)", Param: []interface{}{
728728
pluginInstance.Id, pluginInstance.Host, pluginInstance.ContainerName, pluginInstance.Port, pluginInstance.ContainerStatus, pluginInstance.PackageId, pluginInstance.DockerInstanceResourceId, pluginInstance.InstanceName,
729729
}}
730730
if pluginInstance.PluginMysqlInstanceResourceId != "" {
@@ -737,7 +737,7 @@ func LaunchPlugin(ctx context.Context, pluginInstance *models.PluginInstances, r
737737
} else {
738738
insertInsAction.Param = append(insertInsAction.Param, nil)
739739
}
740-
insertInsAction.Param = append(insertInsAction.Param, pluginInstance.Cpu, pluginInstance.Memory)
740+
insertInsAction.Param = append(insertInsAction.Param, pluginInstance.Cpu, pluginInstance.Memory, pluginInstance.Replicas)
741741
actions = append(actions, insertInsAction)
742742
//actions = append(actions, &db.ExecAction{Sql: "INSERT INTO plugin_instances (id,host,container_name,port,container_status,package_id,docker_instance_resource_id,instance_name,plugin_mysql_instance_resource_id,s3bucket_resource_id) values (?,?,?,?,?,?,?,?,?,?)", Param: []interface{}{
743743
// pluginInstance.Id, pluginInstance.Host, pluginInstance.ContainerName, pluginInstance.Port, pluginInstance.ContainerStatus, pluginInstance.PackageId, pluginInstance.DockerInstanceResourceId, pluginInstance.InstanceName, pluginInstance.PluginMysqlInstanceResourceId, pluginInstance.S3bucketResourceId,

platform-core/wiki/database/v4.6.0.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ CREATE TABLE `plugin_package_runtime_resources_volume` (
1010
PRIMARY KEY (`id`)
1111
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
1212

13-
13+
-- v4.6.0.1 支持插件资源限制
1414
ALTER TABLE plugin_package_runtime_resources_docker ADD cpu varchar(32) NULL COMMENT '插件建议CPU,如500m/0.5/1/3等';
1515
ALTER TABLE plugin_package_runtime_resources_docker ADD memory varchar(32) NULL COMMENT '插件建议内存,如512Mi/0.5Gi/1Gi/3Gi';
1616

1717
ALTER TABLE plugin_instances ADD cpu varchar(32) NULL COMMENT '插件实际运行CPU,如500m/0.5/1/3等';
1818
ALTER TABLE plugin_instances ADD memory varchar(32) NULL COMMENT '插件实际运行内存,如512Mi/0.5Gi/1Gi/3Gi';
19+
ALTER TABLE plugin_instances ADD replicas INT DEFAULT 1 NULL COMMENT '实例副本数量(仅k8s)';
20+

0 commit comments

Comments
 (0)