mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-06 19:02:18 +08:00
This PR includes the following adjustments: 1. To prevent channelCP update task backlog, only one task with the same vchannel is retained in the updater. Additionally, the lastUpdateTime is refreshed after the flowgraph submits the update task, rather than in the callBack function. 2. Batch updates of multiple vchannel checkpoints are performed in the UpdateChannelCheckpoint RPC (default batch size is 128). Additionally, the lock for channelCPs in DataCoord meta has been switched from key lock to global lock. 3. The concurrency of UpdateChannelCheckpoint RPCs in the datanode has been reduced from 1000 to 10. issue: https://github.com/milvus-io/milvus/issues/30004 --------- Signed-off-by: bigsheeper <yihao.dai@zilliz.com> Co-authored-by: jaime <yun.zhang@zilliz.com> Co-authored-by: congqixia <congqi.xia@zilliz.com>
57 lines
2.1 KiB
Go
57 lines
2.1 KiB
Go
package broker
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/milvus-io/milvus-proto/go-api/v2/milvuspb"
|
|
"github.com/milvus-io/milvus-proto/go-api/v2/msgpb"
|
|
"github.com/milvus-io/milvus/internal/proto/datapb"
|
|
"github.com/milvus-io/milvus/internal/proto/rootcoordpb"
|
|
"github.com/milvus-io/milvus/internal/types"
|
|
"github.com/milvus-io/milvus/pkg/util/typeutil"
|
|
)
|
|
|
|
// Broker is the interface for datanode to interact with other components.
|
|
type Broker interface {
|
|
RootCoord
|
|
DataCoord
|
|
}
|
|
|
|
type coordBroker struct {
|
|
*rootCoordBroker
|
|
*dataCoordBroker
|
|
}
|
|
|
|
func NewCoordBroker(rc types.RootCoordClient, dc types.DataCoordClient, serverID int64) Broker {
|
|
return &coordBroker{
|
|
rootCoordBroker: &rootCoordBroker{
|
|
client: rc,
|
|
serverID: serverID,
|
|
},
|
|
dataCoordBroker: &dataCoordBroker{
|
|
client: dc,
|
|
serverID: serverID,
|
|
},
|
|
}
|
|
}
|
|
|
|
// RootCoord is the interface wraps `RootCoord` grpc call
|
|
type RootCoord interface {
|
|
DescribeCollection(ctx context.Context, collectionID typeutil.UniqueID, ts typeutil.Timestamp) (*milvuspb.DescribeCollectionResponse, error)
|
|
ShowPartitions(ctx context.Context, dbName, collectionName string) (map[string]int64, error)
|
|
ReportImport(ctx context.Context, req *rootcoordpb.ImportResult) error
|
|
AllocTimestamp(ctx context.Context, num uint32) (ts uint64, count uint32, err error)
|
|
}
|
|
|
|
// DataCoord is the interface wraps `DataCoord` grpc call
|
|
type DataCoord interface {
|
|
AssignSegmentID(ctx context.Context, reqs ...*datapb.SegmentIDRequest) ([]typeutil.UniqueID, error)
|
|
ReportTimeTick(ctx context.Context, msgs []*msgpb.DataNodeTtMsg) error
|
|
GetSegmentInfo(ctx context.Context, segmentIDs []int64) ([]*datapb.SegmentInfo, error)
|
|
UpdateChannelCheckpoint(ctx context.Context, channelCPs []*msgpb.MsgPosition) error
|
|
SaveBinlogPaths(ctx context.Context, req *datapb.SaveBinlogPathsRequest) error
|
|
DropVirtualChannel(ctx context.Context, req *datapb.DropVirtualChannelRequest) (*datapb.DropVirtualChannelResponse, error)
|
|
UpdateSegmentStatistics(ctx context.Context, req *datapb.UpdateSegmentStatisticsRequest) error
|
|
SaveImportSegment(ctx context.Context, req *datapb.SaveImportSegmentRequest) error
|
|
}
|