Merge remote-tracking branch 'origin/zw'
Former-commit-id: 6037cb3c8547d3f24f1f82fb41ee1480205269f7
This commit is contained in:
commit
3fff406038
|
@ -341,7 +341,7 @@ type ImportTasks {
|
||||||
TotalFileCount uint32 `json:"totalFileCount,omitempty"`
|
TotalFileCount uint32 `json:"totalFileCount,omitempty"`
|
||||||
CreateTime uint32 `json:"createTime,omitempty"`
|
CreateTime uint32 `json:"createTime,omitempty"`
|
||||||
ElapsedTime uint32 `json:"elapsedTime,omitempty"`
|
ElapsedTime uint32 `json:"elapsedTime,omitempty"`
|
||||||
AnnotationFormatConfig []interface{} `json:"annotationFormatConfig,omitempty"`
|
AnnotationFormatConfig []interface{} `json:"annotationFormatConfig,omitempty"`
|
||||||
}
|
}
|
||||||
/******************taskList end*************************/
|
/******************taskList end*************************/
|
||||||
/******************ListTrainingJobs start*************************/
|
/******************ListTrainingJobs start*************************/
|
||||||
|
|
|
@ -8,9 +8,6 @@ import (
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-participant-kubernetes/kubernetesclient"
|
"gitlink.org.cn/jcce-pcm/pcm-participant-kubernetes/kubernetesclient"
|
||||||
)
|
)
|
||||||
|
|
||||||
type client struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func SyncParticipantRpc(svc *svc.ServiceContext) {
|
func SyncParticipantRpc(svc *svc.ServiceContext) {
|
||||||
// 查询出所有p端信息
|
// 查询出所有p端信息
|
||||||
var participants []*models.ScParticipantPhyInfo
|
var participants []*models.ScParticipantPhyInfo
|
||||||
|
|
|
@ -56,14 +56,7 @@ func (l *ScheduleTaskByYamlLogic) ScheduleTaskByYaml(req *types.ScheduleTaskByYa
|
||||||
logx.Error(err)
|
logx.Error(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
switch task.TaskType {
|
l.svcCtx.RedisClient.Publish(context.Background(), task.TaskType, reqMessage)
|
||||||
case "cloud":
|
|
||||||
l.svcCtx.ScheduleCloudClient.Push(string(reqMessage))
|
|
||||||
case "hpc":
|
|
||||||
l.svcCtx.ScheduleHpcClient.Push(string(reqMessage))
|
|
||||||
case "ai":
|
|
||||||
l.svcCtx.ScheduleAiClient.Push(string(reqMessage))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package kq
|
package mqs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
@ -10,19 +10,19 @@ import (
|
||||||
*
|
*
|
||||||
Listening to the payment flow status change notification message queue
|
Listening to the payment flow status change notification message queue
|
||||||
*/
|
*/
|
||||||
type ScheduleAiMq struct {
|
type AiQueue struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
svcCtx *svc.ServiceContext
|
svcCtx *svc.ServiceContext
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewScheduleAiMq(ctx context.Context, svcCtx *svc.ServiceContext) *ScheduleAiMq {
|
func NewAiMq(ctx context.Context, svcCtx *svc.ServiceContext) *AiQueue {
|
||||||
return &ScheduleAiMq{
|
return &AiQueue{
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
svcCtx: svcCtx,
|
svcCtx: svcCtx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *ScheduleAiMq) Consume(_, val string) error {
|
func (l *AiQueue) Consume(val string) error {
|
||||||
// 接受消息, 根据标签筛选过滤
|
// 接受消息, 根据标签筛选过滤
|
||||||
aiSchdl := scheduler2.NewAiScheduler(val)
|
aiSchdl := scheduler2.NewAiScheduler(val)
|
||||||
schdl, err := scheduler2.NewScheduler(aiSchdl, val, l.svcCtx.DbEngin)
|
schdl, err := scheduler2.NewScheduler(aiSchdl, val, l.svcCtx.DbEngin)
|
|
@ -1,4 +1,4 @@
|
||||||
package kq
|
package mqs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
@ -10,19 +10,19 @@ import (
|
||||||
*
|
*
|
||||||
Listening to the payment flow status change notification message queue
|
Listening to the payment flow status change notification message queue
|
||||||
*/
|
*/
|
||||||
type ScheduleCloudMq struct {
|
type CloudMq struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
svcCtx *svc.ServiceContext
|
svcCtx *svc.ServiceContext
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewScheduleCloudMq(ctx context.Context, svcCtx *svc.ServiceContext) *ScheduleCloudMq {
|
func NewCloudMq(ctx context.Context, svcCtx *svc.ServiceContext) *CloudMq {
|
||||||
return &ScheduleCloudMq{
|
return &CloudMq{
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
svcCtx: svcCtx,
|
svcCtx: svcCtx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *ScheduleCloudMq) Consume(_, val string) error {
|
func (l *CloudMq) Consume(val string) error {
|
||||||
// 接受消息, 根据标签筛选过滤
|
// 接受消息, 根据标签筛选过滤
|
||||||
cloudScheduler := scheduler2.NewCloudScheduler()
|
cloudScheduler := scheduler2.NewCloudScheduler()
|
||||||
schdl, err := scheduler2.NewScheduler(cloudScheduler, val, l.svcCtx.DbEngin)
|
schdl, err := scheduler2.NewScheduler(cloudScheduler, val, l.svcCtx.DbEngin)
|
|
@ -1,4 +1,4 @@
|
||||||
package kq
|
package mqs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
@ -10,19 +10,19 @@ import (
|
||||||
*
|
*
|
||||||
Listening to the payment flow status change notification message queue
|
Listening to the payment flow status change notification message queue
|
||||||
*/
|
*/
|
||||||
type ScheduleHpcMq struct {
|
type HpcMq struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
svcCtx *svc.ServiceContext
|
svcCtx *svc.ServiceContext
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewScheduleHpcMq(ctx context.Context, svcCtx *svc.ServiceContext) *ScheduleHpcMq {
|
func NewHpcMq(ctx context.Context, svcCtx *svc.ServiceContext) *HpcMq {
|
||||||
return &ScheduleHpcMq{
|
return &HpcMq{
|
||||||
ctx: ctx,
|
ctx: ctx,
|
||||||
svcCtx: svcCtx,
|
svcCtx: svcCtx,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *ScheduleHpcMq) Consume(_, val string) error {
|
func (l *HpcMq) Consume(val string) error {
|
||||||
// 接受消息, 根据标签筛选过滤
|
// 接受消息, 根据标签筛选过滤
|
||||||
hpcSchdl := scheduler2.NewHpcScheduler(val)
|
hpcSchdl := scheduler2.NewHpcScheduler(val)
|
||||||
schdl, err := scheduler2.NewScheduler(hpcSchdl, val, l.svcCtx.DbEngin)
|
schdl, err := scheduler2.NewScheduler(hpcSchdl, val, l.svcCtx.DbEngin)
|
|
@ -0,0 +1,115 @@
|
||||||
|
package mqs
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
"github.com/redis/go-redis/v9"
|
||||||
|
"github.com/zeromicro/go-zero/core/queue"
|
||||||
|
"github.com/zeromicro/go-zero/core/service"
|
||||||
|
"github.com/zeromicro/go-zero/core/threading"
|
||||||
|
)
|
||||||
|
|
||||||
|
type (
|
||||||
|
ConsumeHandle func(v string) error
|
||||||
|
ConsumeHandler interface {
|
||||||
|
Consume(value string) error
|
||||||
|
}
|
||||||
|
redisQueues struct {
|
||||||
|
queues []queue.MessageQueue
|
||||||
|
group *service.ServiceGroup
|
||||||
|
}
|
||||||
|
redisQueue struct {
|
||||||
|
topic string
|
||||||
|
channel chan redis.Message
|
||||||
|
client *redis.Client
|
||||||
|
handler ConsumeHandler
|
||||||
|
consumerRoutines *threading.RoutineGroup
|
||||||
|
producerRoutines *threading.RoutineGroup
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (r *redisQueue) Start() {
|
||||||
|
r.startConsumers()
|
||||||
|
r.startProducers()
|
||||||
|
|
||||||
|
r.producerRoutines.Wait()
|
||||||
|
close(r.channel)
|
||||||
|
r.consumerRoutines.Wait()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *redisQueue) Stop() {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r redisQueues) Start() {
|
||||||
|
for _, each := range r.queues {
|
||||||
|
r.group.Add(each)
|
||||||
|
}
|
||||||
|
r.group.Start()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r redisQueues) Stop() {
|
||||||
|
r.group.Stop()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *redisQueue) startConsumers() {
|
||||||
|
r.consumerRoutines.Run(func() {
|
||||||
|
for message := range r.channel {
|
||||||
|
if err := r.consumeOne(message.Payload); err != nil {
|
||||||
|
fmt.Errorf("consume: %s, error: %v", message.Payload, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *redisQueue) consumeOne(value string) error {
|
||||||
|
err := r.handler.Consume(value)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *redisQueue) startProducers() {
|
||||||
|
r.producerRoutines.Run(func() {
|
||||||
|
for {
|
||||||
|
channel := r.client.Subscribe(context.Background(), r.topic).Channel()
|
||||||
|
for msg := range channel {
|
||||||
|
fmt.Println("生产者获取的值:", msg.Payload)
|
||||||
|
r.channel <- *msg
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func newRedisQueue(topic string, redisClient *redis.Client, handler ConsumeHandler) queue.MessageQueue {
|
||||||
|
return &redisQueue{
|
||||||
|
topic: topic,
|
||||||
|
client: redisClient,
|
||||||
|
channel: make(chan redis.Message),
|
||||||
|
producerRoutines: threading.NewRoutineGroup(),
|
||||||
|
consumerRoutines: threading.NewRoutineGroup(),
|
||||||
|
handler: handler}
|
||||||
|
}
|
||||||
|
|
||||||
|
func MustNewQueue(topic string, redisClient *redis.Client, handler ConsumeHandler) queue.MessageQueue {
|
||||||
|
q, err := NewQueue(topic, redisClient, handler)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("NewQueue报错")
|
||||||
|
}
|
||||||
|
|
||||||
|
return q
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewQueue(topic string, redisClient *redis.Client, handler ConsumeHandler) (queue.MessageQueue, error) {
|
||||||
|
if len(topic) == 0 {
|
||||||
|
return nil, errors.New("topic不能为空")
|
||||||
|
}
|
||||||
|
|
||||||
|
r := redisQueues{
|
||||||
|
group: service.NewServiceGroup(),
|
||||||
|
}
|
||||||
|
r.queues = append(r.queues, newRedisQueue(topic, redisClient, handler))
|
||||||
|
|
||||||
|
return r, nil
|
||||||
|
}
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/aws/session"
|
"github.com/aws/aws-sdk-go/aws/session"
|
||||||
"github.com/aws/aws-sdk-go/service/s3/s3manager"
|
"github.com/aws/aws-sdk-go/service/s3/s3manager"
|
||||||
"github.com/docker/docker/client"
|
"github.com/docker/docker/client"
|
||||||
"github.com/go-redis/redis"
|
"github.com/redis/go-redis/v9"
|
||||||
"github.com/robfig/cron/v3"
|
"github.com/robfig/cron/v3"
|
||||||
"github.com/zeromicro/go-queue/kq"
|
"github.com/zeromicro/go-queue/kq"
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
|
@ -73,25 +73,23 @@ func NewServiceContext(c config.Config) *ServiceContext {
|
||||||
logx.Error(err.Error())
|
logx.Error(err.Error())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
redisClient := redis.NewClient(&redis.Options{
|
||||||
|
Addr: c.Redis.Host,
|
||||||
|
Password: c.Redis.Pass,
|
||||||
|
})
|
||||||
return &ServiceContext{
|
return &ServiceContext{
|
||||||
Cron: cron.New(cron.WithSeconds()),
|
Cron: cron.New(cron.WithSeconds()),
|
||||||
DbEngin: dbEngin,
|
DbEngin: dbEngin,
|
||||||
Config: c,
|
Config: c,
|
||||||
RedisClient: redis.NewClient(&redis.Options{
|
RedisClient: redisClient,
|
||||||
Addr: c.Redis.Host,
|
ModelArtsRpc: modelartsclient.NewModelArts(zrpc.MustNewClient(c.ModelArtsRpcConf)),
|
||||||
Password: c.Redis.Pass,
|
CephRpc: cephclient.NewCeph(zrpc.MustNewClient(c.CephRpcConf)),
|
||||||
}),
|
ACRpc: hpcacclient.NewHpcAC(zrpc.MustNewClient(c.ACRpcConf)),
|
||||||
ScheduleHpcClient: kq.NewPusher(c.KqProducerConf.Brokers, c.KqProducerConf.HpcTopic),
|
OctopusRpc: octopusclient.NewOctopus(zrpc.MustNewClient(c.OctopusRpcConf)),
|
||||||
ScheduleCloudClient: kq.NewPusher(c.KqProducerConf.Brokers, c.KqProducerConf.CloudTopic),
|
OpenstackRpc: openstackclient.NewOpenstack(zrpc.MustNewClient(c.OpenstackRpcConf)),
|
||||||
ScheduleAiClient: kq.NewPusher(c.KqProducerConf.Brokers, c.KqProducerConf.AiTopic),
|
K8sRpc: make(map[int64]kubernetesclient.Kubernetes),
|
||||||
ModelArtsRpc: modelartsclient.NewModelArts(zrpc.MustNewClient(c.ModelArtsRpcConf)),
|
DockerClient: dockerClient,
|
||||||
CephRpc: cephclient.NewCeph(zrpc.MustNewClient(c.CephRpcConf)),
|
Downloader: downloader,
|
||||||
ACRpc: hpcacclient.NewHpcAC(zrpc.MustNewClient(c.ACRpcConf)),
|
Uploader: uploader,
|
||||||
OctopusRpc: octopusclient.NewOctopus(zrpc.MustNewClient(c.OctopusRpcConf)),
|
|
||||||
OpenstackRpc: openstackclient.NewOpenstack(zrpc.MustNewClient(c.OpenstackRpcConf)),
|
|
||||||
K8sRpc: make(map[int64]kubernetesclient.Kubernetes),
|
|
||||||
DockerClient: dockerClient,
|
|
||||||
Downloader: downloader,
|
|
||||||
Uploader: uploader,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
12
api/pcm.go
12
api/pcm.go
|
@ -3,7 +3,6 @@ package main
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"flag"
|
"flag"
|
||||||
"github.com/zeromicro/go-queue/kq"
|
|
||||||
"github.com/zeromicro/go-zero/core/conf"
|
"github.com/zeromicro/go-zero/core/conf"
|
||||||
"github.com/zeromicro/go-zero/core/logx"
|
"github.com/zeromicro/go-zero/core/logx"
|
||||||
"github.com/zeromicro/go-zero/core/service"
|
"github.com/zeromicro/go-zero/core/service"
|
||||||
|
@ -11,7 +10,7 @@ import (
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/config"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/config"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/cron"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/cron"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/handler"
|
||||||
kq3 "gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/mqs/kq"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/mqs"
|
||||||
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
|
"gitlink.org.cn/jcce-pcm/pcm-coordinator/api/internal/svc"
|
||||||
commonConfig "gitlink.org.cn/jcce-pcm/utils/nacos"
|
commonConfig "gitlink.org.cn/jcce-pcm/utils/nacos"
|
||||||
)
|
)
|
||||||
|
@ -56,12 +55,9 @@ func main() {
|
||||||
|
|
||||||
serviceGroup.Add(server)
|
serviceGroup.Add(server)
|
||||||
services := []service.Service{
|
services := []service.Service{
|
||||||
//Listening for changes in consumption flow status
|
mqs.MustNewQueue("ai", ctx.RedisClient, mqs.NewAiMq(context.Background(), ctx)),
|
||||||
kq.MustNewQueue(c.HpcConsumerConf, kq3.NewScheduleHpcMq(context.Background(), ctx)),
|
mqs.MustNewQueue("cloud", ctx.RedisClient, mqs.NewCloudMq(context.Background(), ctx)),
|
||||||
kq.MustNewQueue(c.CloudConsumerConf, kq3.NewScheduleCloudMq(context.Background(), ctx)),
|
mqs.MustNewQueue("hpc", ctx.RedisClient, mqs.NewHpcMq(context.Background(), ctx)),
|
||||||
kq.MustNewQueue(c.AiConsumerConf, kq3.NewScheduleAiMq(context.Background(), ctx)),
|
|
||||||
|
|
||||||
//.....
|
|
||||||
}
|
}
|
||||||
for _, mq := range services {
|
for _, mq := range services {
|
||||||
serviceGroup.Add(mq)
|
serviceGroup.Add(mq)
|
||||||
|
|
1
go.mod
1
go.mod
|
@ -99,6 +99,7 @@ require (
|
||||||
github.com/prometheus/client_model v0.4.0 // indirect
|
github.com/prometheus/client_model v0.4.0 // indirect
|
||||||
github.com/prometheus/common v0.44.0 // indirect
|
github.com/prometheus/common v0.44.0 // indirect
|
||||||
github.com/prometheus/procfs v0.10.1 // indirect
|
github.com/prometheus/procfs v0.10.1 // indirect
|
||||||
|
github.com/redis/go-redis/v9 v9.2.1 // indirect
|
||||||
github.com/segmentio/kafka-go v0.4.38 // indirect
|
github.com/segmentio/kafka-go v0.4.38 // indirect
|
||||||
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
||||||
go.etcd.io/etcd/api/v3 v3.5.9 // indirect
|
go.etcd.io/etcd/api/v3 v3.5.9 // indirect
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -944,6 +944,8 @@ github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPH
|
||||||
github.com/rabbitmq/amqp091-go v1.1.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM=
|
github.com/rabbitmq/amqp091-go v1.1.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM=
|
||||||
github.com/rabbitmq/amqp091-go v1.5.0/go.mod h1:JsV0ofX5f1nwOGafb8L5rBItt9GyhfQfcJj+oyz0dGg=
|
github.com/rabbitmq/amqp091-go v1.5.0/go.mod h1:JsV0ofX5f1nwOGafb8L5rBItt9GyhfQfcJj+oyz0dGg=
|
||||||
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||||
|
github.com/redis/go-redis/v9 v9.2.1 h1:WlYJg71ODF0dVspZZCpYmoF1+U1Jjk9Rwd7pq6QmlCg=
|
||||||
|
github.com/redis/go-redis/v9 v9.2.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
|
||||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||||
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
|
||||||
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||||
|
|
Loading…
Reference in New Issue