public class WorkerManager
extends java.lang.Object
Assumptions: - WorkerGroupId is globally unique Running Mode: WorkerManager can run in two different modes based on whether supporting zero worker group id. - Strict Mode: Zero group id is not supported. Client must create a worker group before adding a worker - Compatible Mode: Zero group id is allowed, and is created ahead by starManager, client can add worker to group-0 without creating it first. This mode is mostly used when doing process level integration with starRocks FE and support manual management of BE with `ALTER SYSTEM ADD/DROP BACKEND XXX`.
| Constructor and Description |
|---|
WorkerManager(JournalSystem journalSystem,
IdGenerator idGenerator) |
| Modifier and Type | Method and Description |
|---|---|
long |
addWorker(java.lang.String serviceId,
long groupId,
java.lang.String ipPort)
Add a worker for worker group in service
|
java.util.List<java.lang.Long> |
addWorkers(java.lang.String serviceId,
long groupId,
java.util.List<java.lang.String> ipPorts) |
void |
bootstrapService(java.lang.String serviceId) |
long |
createWorkerGroup(java.lang.String serviceId,
java.lang.String owner,
WorkerGroupSpec spec,
java.util.Map<java.lang.String,java.lang.String> labels,
java.util.Map<java.lang.String,java.lang.String> properties) |
static WorkerManager |
createWorkerManagerForTest(JournalSystem journalSystem) |
void |
deleteWorkerGroup(java.lang.String serviceId,
long groupId) |
void |
doWorkerHeartbeat(long workerId) |
void |
dump(java.io.DataOutputStream out) |
void |
dumpMeta(java.io.OutputStream out)
dump workerManager's meta
|
java.util.List<java.lang.Long> |
getAllWorkerIds()
Get a snapshot of all worker ids
|
WorkerGroup |
getDefaultWorkerGroup(java.lang.String serviceId)
Returns a default worker group of the service.
|
Worker |
getWorker(long workerId) |
int |
getWorkerCount() |
WorkerGroup |
getWorkerGroup(java.lang.String serviceId,
long groupId) |
WorkerGroup |
getWorkerGroupNoException(java.lang.String serviceId,
long groupId) |
WorkerInfo |
getWorkerInfo(long workerId)
Get worker info by id
|
WorkerInfo |
getWorkerInfo(java.lang.String ipPort)
Get worker info by ip port
|
java.util.List<WorkerGroupDetailInfo> |
listWorkerGroups(java.lang.String serviceId,
java.util.Map<java.lang.String,java.lang.String> filterLabels,
boolean includeWorkersInfo) |
java.util.List<WorkerGroupDetailInfo> |
listWorkerGroupsById(java.lang.String serviceId,
java.util.List<java.lang.Long> groupIds,
boolean includeWorkersInfo) |
void |
loadMeta(java.io.InputStream in) |
boolean |
processWorkerHeartbeat(java.lang.String serviceId,
long workerId,
long startTime,
long numOfShards,
java.util.Map<java.lang.String,java.lang.String> workerProperties,
long lastSeenTime)
process worker heartbeat, update worker's info
|
void |
removeWorker(java.lang.String serviceId,
long groupId,
long workerId)
Remove a worker for worker group in service
|
void |
replayAddWorker(java.lang.String serviceId,
Worker worker) |
void |
replayCreateWorkerGroup(java.lang.String serviceId,
WorkerGroup group) |
void |
replayDeleteWorkerGroup(java.lang.String serviceId,
long groupId) |
void |
replayRemoveWorker(java.lang.String serviceId,
long groupId,
long workerId) |
void |
replayUpdateWorker(java.lang.String serviceId,
java.util.List<Worker> workers) |
void |
replayUpdateWorkerGroup(java.lang.String serviceId,
UpdateWorkerGroupInfo info) |
void |
start() |
void |
stop() |
void |
updateWorkerGroup(java.lang.String serviceId,
long groupId,
WorkerGroupSpec spec,
java.util.Map<java.lang.String,java.lang.String> labels,
java.util.Map<java.lang.String,java.lang.String> props) |
public WorkerManager(JournalSystem journalSystem, IdGenerator idGenerator)
public void bootstrapService(java.lang.String serviceId)
public long createWorkerGroup(java.lang.String serviceId,
java.lang.String owner,
WorkerGroupSpec spec,
java.util.Map<java.lang.String,java.lang.String> labels,
java.util.Map<java.lang.String,java.lang.String> properties)
throws StarException
StarExceptionpublic long addWorker(java.lang.String serviceId,
long groupId,
java.lang.String ipPort)
throws StarException
StarException - - ALREADY_EXIST if the ipPort already used by other worker
- NOT_EXIST if the given groupId or serviceId not exist yetpublic java.util.List<java.lang.Long> addWorkers(java.lang.String serviceId,
long groupId,
java.util.List<java.lang.String> ipPorts)
throws StarException
StarExceptionpublic void doWorkerHeartbeat(long workerId)
public void removeWorker(java.lang.String serviceId,
long groupId,
long workerId)
throws StarException
StarException - if group id or worker id not existpublic WorkerInfo getWorkerInfo(long workerId) throws StarException
StarExceptionpublic WorkerInfo getWorkerInfo(java.lang.String ipPort) throws StarException
StarExceptionpublic WorkerGroup getDefaultWorkerGroup(java.lang.String serviceId) throws StarException
serviceId - service identityStarException - NOT_EXIST if the service doesn't have any workerGroup yet.public WorkerGroup getWorkerGroup(java.lang.String serviceId, long groupId) throws StarException
StarExceptionpublic WorkerGroup getWorkerGroupNoException(java.lang.String serviceId, long groupId)
public Worker getWorker(long workerId) throws StarException
StarExceptionpublic java.util.List<java.lang.Long> getAllWorkerIds()
public boolean processWorkerHeartbeat(java.lang.String serviceId,
long workerId,
long startTime,
long numOfShards,
java.util.Map<java.lang.String,java.lang.String> workerProperties,
long lastSeenTime)
throws StarException
StarExceptionpublic void replayCreateWorkerGroup(java.lang.String serviceId,
WorkerGroup group)
public void replayAddWorker(java.lang.String serviceId,
Worker worker)
public void replayRemoveWorker(java.lang.String serviceId,
long groupId,
long workerId)
public void replayUpdateWorker(java.lang.String serviceId,
java.util.List<Worker> workers)
public int getWorkerCount()
public java.util.List<WorkerGroupDetailInfo> listWorkerGroupsById(java.lang.String serviceId, java.util.List<java.lang.Long> groupIds, boolean includeWorkersInfo)
public java.util.List<WorkerGroupDetailInfo> listWorkerGroups(java.lang.String serviceId, java.util.Map<java.lang.String,java.lang.String> filterLabels, boolean includeWorkersInfo)
public void updateWorkerGroup(java.lang.String serviceId,
long groupId,
WorkerGroupSpec spec,
java.util.Map<java.lang.String,java.lang.String> labels,
java.util.Map<java.lang.String,java.lang.String> props)
throws StarException
StarExceptionpublic void replayUpdateWorkerGroup(java.lang.String serviceId,
UpdateWorkerGroupInfo info)
public void deleteWorkerGroup(java.lang.String serviceId,
long groupId)
throws StarException
StarExceptionpublic void replayDeleteWorkerGroup(java.lang.String serviceId,
long groupId)
public void dumpMeta(java.io.OutputStream out)
throws java.io.IOException
out - Output streamjava.io.IOException - I/O exception
+--------------------+ | WORKER_MGR_HEADER | (batch_size, number of workers, number of service worker groups) +--------------------+ | WORKER_MANAGER_SWG | +------------------- + | SWG-1 | | SWG-2 | | ... | | SWG-N | +--------------------+ | WORKER_MGR_WORKER | +--------------------+ | WORKERS_BATCH_1 | | WORKERS_BATCH_2 | | ... | | WORKERS_BATCH_N | +--------------------+ | WORKER_MGR_FOOTER | (checksum) +--------------------+
public void loadMeta(java.io.InputStream in)
throws java.io.IOException
java.io.IOExceptionpublic void start()
public void stop()
public void dump(java.io.DataOutputStream out)
throws java.io.IOException
java.io.IOExceptionpublic static WorkerManager createWorkerManagerForTest(JournalSystem journalSystem)
Copyright © 2024. All rights reserved.