雪花算法-Python
2020 年 7 月 11 日 星期六(已编辑)
这篇文章上次修改于 2020 年 11 月 7 日 星期六,可能部分内容已经不适用,如有疑问可询问作者。
Snowflake逻辑
雪花算法生成64位的二进制正整数,然后转换成10进制的数。
一个为python提供雪花功能的库,包括客户端和服务器pysnowflake
pip3 install pysnowflake
终端执行
snowflake_start_server
[--dc=DC_ID]
[--worker=WORKER_ID]
[--host=ADDRESS] # 默认localhost
[--port=PORT] # 默认端口8910
# 例子
snowflake_start_server --worker=1
使用
import snowflake.client
>>> snowflake.client.get_guid()
4379917420152754177
>>> snowflake.client.get_stats() # 查看当前节点信息
{
'dc': 0,
'worker': 1,
'timestamp': 1594535313132,
'last_timestamp': 1594535287895,
'sequence': 1,
'sequence_overload': 0,
'errors': 0
}
指定相关节点初始化
import snowflake.client
host = '127.0.0.1'
port = 30001
snowflake.client.setup(host, port)
...
查看|检验
>>> snowflake.client.get_guid()
4379917420152754177
>>> bin(4379917420152754177)
'0b11110011001000100101111011000000010101110000000001000000000001'
0 (+1)
1111001100100010010111101100000001010111 (+41)
0000000001 (+10)
000000000001 (+12)
1111001100100010011001100000111100011100
1111001100100010011001100001000110011010
1111001100100010011001100001010100000111