如图所示,右半部分无法显示。该图在 plantuml oneline server 正常。
@startuml PD Leader Internal Flow (Fixed)
!theme plain
title PD Leader Internal Core Flow (Simplified)
start
partition "Request Ingestion" {
:Receive gRPC/HTTP Request;
:Dispatch Request based on Type;
}
if (Request is Heartbeat?) then (Heartbeat)
partition "Heartbeat Processing" {
:Update Statistics (pkg/statistics);
:Update In-Memory Cluster State (pkg/core);
note right: Trigger scheduling check
-->[Trigger] CheckSchedulingNeeded;
}
partition "Scheduling Cycle" {
:CheckSchedulingNeeded;
if (Scheduling Needed? by Checkers) then (yes)
:Select Scheduler(s);
:Generate Operator(s) (pkg/schedule/operator);
:Add Operator(s) to Controller Queue;
note right: Operator will be included\nin Heartbeat Response
else (no)
:No Operator Generated;
endif
--> PrepareHeartbeatResponse;
}
partition "Response Sending" {
:PrepareHeartbeatResponse;
:Send Heartbeat Response (to TiKV);
--> (*) EndHeartbeatFlow;
}
elseif (Request is TSO?) then (TSO)
partition "TSO Allocation" {
:Allocate TSO Batch (pkg/tso);
fork
:Prepare TSO Response;
--> SendTSOResponse;
fork again
:Persist Max Allocated TSO to Etcd (Async);
end fork
}
partition "Response Sending" {
:SendTSOResponse;
:Send TSO Response (to TiKV/TiDB);
--> (*) EndTSOFlow;
}
else (Metadata/API)
partition "Metadata & Other API Service" {
:Handle API Request Logic (e.g., Get Status, Update Config);
:Access Storage Layer (pkg/storage);
note left: Interacts with Etcd
:Prepare API Response;
--> SendAPIResponse;
}
partition "Response Sending" {
:SendAPIResponse;
:Send API Response (to TiDB/pd-ctl/Dashboard);
--> (*) EndAPIFlow;
}
endif
' Define common stop points (using explicit labels before stop)
:EndHeartbeatFlow;
stop
:EndTSOFlow;
stop
:EndAPIFlow;
stop
@enduml
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于