|
|
před 2 měsíci | |
|---|---|---|
| .. | ||
| README.md | před 2 měsíci | |
| __init__.py | před 2 měsíci | |
| generator.py | před 2 měsíci | |
适用于三台 MySQL 服务器(IP 尾段 251/252/253)的分布式雪花算法实现。
41-bit 时间戳 | 5-bit 机房 | 5-bit 节点 | 12-bit 序列。EPOCH_MS=1704067200000)。251/252/253 映射为 worker_id=1/2/3,可通过环境变量覆盖。from alien_snowflake import next_id
pk = next_id()
from sqlalchemy import BigInteger
from sqlalchemy.orm import mapped_column, Mapped
from alien_snowflake import next_id
from alien_database.base import Base
class Example(Base):
__tablename__ = "example"
id: Mapped[int] = mapped_column(BigInteger, primary_key=True, default=next_id)
from alien_snowflake import SnowflakeGenerator, resolve_worker_id
worker_id = resolve_worker_id() # 自动根据本机 IP 或环境变量映射
gen = SnowflakeGenerator(datacenter_id=0, worker_id=worker_id)
pk = gen.next_id()
SNOWFLAKE_WORKER_IP(可填完整 IP 或尾段,如 192.168.0.251 或 251)。DEFAULT_IP_WORKER_MAP):
alien_snowflake/generator.py 中的 DEFAULT_IP_WORKER_MAP,或在初始化时传入自定义 ip_worker_map。SNOWFLAKE_WORKER_IP。datacenter_id / worker_id 映射,但需保持各节点唯一性。