Class MacBasedAssigner

java.lang.Object
cloud.opencode.base.id.snowflake.MacBasedAssigner
All Implemented Interfaces:
WorkerIdAssigner

public final class MacBasedAssigner extends Object implements WorkerIdAssigner
MAC Address-based Worker ID Assigner 基于MAC地址的工作节点ID分配器

Assigns worker ID and datacenter ID based on the host's MAC address. Provides better uniqueness across hosts compared to IP-based assignment.

基于主机的MAC地址分配工作节点ID和数据中心ID。 与基于IP的分配相比,能提供更好的跨主机唯一性。

Algorithm | 算法:

  • WorkerId = (MAC[4] * 256 + MAC[5]) % 32
  • DatacenterId = (MAC[2] * 256 + MAC[3]) % 32

Usage Examples | 使用示例:

WorkerIdAssigner assigner = MacBasedAssigner.create();
long workerId = assigner.assignWorkerId();
long datacenterId = assigner.assignDatacenterId();

Features | 主要功能:

  • Assigns worker ID based on MAC address - 基于MAC地址分配工作ID
  • Hardware-based unique node identification - 基于硬件的唯一节点标识

Security | 安全性:

  • Thread-safe: No - 线程安全: 否
  • Null-safe: Yes (validates inputs) - 空值安全: 是(验证输入)
Since:
JDK 25, opencode-base-id V1.1.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • create

      public static MacBasedAssigner create()
      Creates a MAC-based assigner 创建基于MAC地址的分配器
      Returns:
      assigner | 分配器
    • assignWorkerId

      public long assignWorkerId()
      Description copied from interface: WorkerIdAssigner
      Assigns a worker ID 分配工作节点ID
      Specified by:
      assignWorkerId in interface WorkerIdAssigner
      Returns:
      worker ID within valid range | 有效范围内的工作节点ID
    • assignDatacenterId

      public long assignDatacenterId()
      Description copied from interface: WorkerIdAssigner
      Assigns a datacenter ID 分配数据中心ID
      Specified by:
      assignDatacenterId in interface WorkerIdAssigner
      Returns:
      datacenter ID within valid range | 有效范围内的数据中心ID
    • getStrategyName

      public String getStrategyName()
      Description copied from interface: WorkerIdAssigner
      Gets a description of the assignment strategy 获取分配策略描述
      Specified by:
      getStrategyName in interface WorkerIdAssigner
      Returns:
      strategy description | 策略描述