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,
int replicaNumber) |
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> |
getAllWorkerGroupIds(java.lang.String serviceId) |
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,
int replicaNumber) |
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,
int replicaNumber)
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<java.lang.Long> getAllWorkerGroupIds(java.lang.String serviceId)
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,
int replicaNumber)
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.