Class CosIdMachineAutoConfiguration
This configuration class sets up the complete machine ID ecosystem including:
- Instance identification and machine ID distribution
- Machine state storage and persistence
- Clock synchronization and backwards handling
- Machine ID guarding and health monitoring
- Lifecycle management for startup/shutdown
The configuration supports multiple distribution strategies:
- Manual: Fixed machine ID assignment
- StatefulSet: Kubernetes StatefulSet-based distribution
- JDBC: Database-backed distribution
- Redis: Redis-backed distribution
- Zookeeper: Zookeeper-backed distribution
- Proxy: Remote proxy server distribution
- MongoDB: MongoDB-backed distribution
Example configuration:
cosid:
machine:
enabled: true
distributor:
type: manual
manual:
machine-id: 1
-
Constructor Summary
ConstructorsConstructorDescriptionCosIdMachineAutoConfiguration(CosIdProperties cosIdProperties, MachineProperties machineProperties) Constructs a new machine auto-configuration with the provided properties. -
Method Summary
Modifier and TypeMethodDescriptioncosIdLifecycleMachineIdDistributor(InstanceId instanceId, MachineIdDistributor machineIdDistributor) cosIdLifecycleMachineIdGuarder(InstanceId instanceId, MachineIdGuarder machineIdGuarder) instanceId(HostAddressSupplier hostAddressSupplier) Creates the instance identifier for this application instance.machineId(MachineIdDistributor machineIdDistributor, InstanceId instanceId) Creates the machine ID for this instance.machineIdDistributor(MachineStateStorage localMachineState, ClockBackwardsSynchronizer clockBackwardsSynchronizer) machineIdGuarder(MachineIdDistributor machineIdDistributor) Creates the machine ID guarder for monitoring machine ID conflicts.machineIdHealthIndicator(MachineIdGuarder machineIdGuarder) Creates the health indicator for machine ID monitoring.statefulSetMachineIdDistributor(MachineStateStorage localMachineState, ClockBackwardsSynchronizer clockBackwardsSynchronizer)
-
Constructor Details
-
CosIdMachineAutoConfiguration
public CosIdMachineAutoConfiguration(CosIdProperties cosIdProperties, MachineProperties machineProperties) Constructs a new machine auto-configuration with the provided properties.- Parameters:
cosIdProperties- the main CosId configuration propertiesmachineProperties- the machine-specific configuration properties
-
-
Method Details
-
instanceId
@Bean @ConditionalOnMissingBean public InstanceId instanceId(HostAddressSupplier hostAddressSupplier) Creates the instance identifier for this application instance.The instance ID uniquely identifies this application instance within the distributed system. It can be explicitly configured or automatically generated from the host address and process ID.
The stability flag indicates whether this instance has a stable network identity that persists across restarts.
- Parameters:
hostAddressSupplier- supplier for the host address- Returns:
- the instance identifier
-
machineId
@Bean @ConditionalOnMissingBean(MachineId.class) public MachineId machineId(MachineIdDistributor machineIdDistributor, InstanceId instanceId) Creates the machine ID for this instance.The machine ID is a unique identifier assigned to this instance within the distributed system. It's distributed by the configured distributor and used as part of snowflake ID generation.
- Parameters:
machineIdDistributor- the distributor responsible for assigning machine IDsinstanceId- the instance identifier- Returns:
- the assigned machine ID
-
machineStateStorage
-
clockBackwardsSynchronizer
-
machineIdDistributor
@Bean @ConditionalOnMissingBean @ConditionalOnProperty(value="cosid.machine.distributor.type", matchIfMissing=true, havingValue="manual") public ManualMachineIdDistributor machineIdDistributor(MachineStateStorage localMachineState, ClockBackwardsSynchronizer clockBackwardsSynchronizer) -
statefulSetMachineIdDistributor
@Bean @ConditionalOnMissingBean @ConditionalOnProperty(value="cosid.machine.distributor.type", havingValue="stateful_set") public StatefulSetMachineIdDistributor statefulSetMachineIdDistributor(MachineStateStorage localMachineState, ClockBackwardsSynchronizer clockBackwardsSynchronizer) -
cosIdLifecycleMachineIdDistributor
@Bean @ConditionalOnMissingBean public CosIdLifecycleMachineIdDistributor cosIdLifecycleMachineIdDistributor(InstanceId instanceId, MachineIdDistributor machineIdDistributor) -
machineIdGuarder
@Bean @ConditionalOnMissingBean public MachineIdGuarder machineIdGuarder(MachineIdDistributor machineIdDistributor) Creates the machine ID guarder for monitoring machine ID conflicts.The guarder periodically checks for machine ID conflicts and maintains the health status of machine ID distribution. If guarding is disabled, returns a no-operation guarder.
- Parameters:
machineIdDistributor- the machine ID distributor to guard- Returns:
- the machine ID guarder instance
-
machineIdHealthIndicator
@Bean @ConditionalOnMissingBean public MachineIdHealthIndicator machineIdHealthIndicator(MachineIdGuarder machineIdGuarder) Creates the health indicator for machine ID monitoring.This Spring Boot Actuator health indicator reports the status of machine ID distribution and guarding. It integrates with the health check endpoints to provide operational visibility.
- Parameters:
machineIdGuarder- the guarder to monitor for health status- Returns:
- the machine ID health indicator
-
cosIdLifecycleMachineIdGuarder
@Bean @ConditionalOnMissingBean public CosIdLifecycleMachineIdGuarder cosIdLifecycleMachineIdGuarder(InstanceId instanceId, MachineIdGuarder machineIdGuarder)
-