问题标签 [twitter-snowflake]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - 在 Kubernetes 中分配和维护顺序的 Worker-Number 或 NodeId
当一个 Kubernetes Spring-Boot 应用以 8 个实例启动时,每个节点上运行的应用需要获取 pod/container 的序列号。运行同一应用程序的 pod/容器不应有重复的编号。假设一个 pod 运行一个容器,而一个容器只运行一个应用程序实例。
应用程序可以从 Kubernetes API 中为每个 pod 提取一些唯一标识符,例如:
- MAC 地址 (
networkInterface.getHardwareAddress()
) - 主机名
- 节点名称 (
aks-default-12345677-3
- targetRef.name (
my-sample-service-sandbox-54k47696e9-abcde
) - targetRef.uid (
aa7k6278-abcd-11ef-e531-kdk8jjkkllmm
) - IP 地址 (
12.34.56.78
)
但是从 API 获取此信息的应用程序无法在指定的 pod 范围内安全地生成和分配唯一编号 [0 - Max Node Count-1]。任何在这些唯一标识符上运行的 reducer 步骤(按位 &)最终都会重复这些数字。与其他 pod 通信是一种反模式,尽管有些方法采用共识/协议模式来实现这一点。
我的问题是: Kubernetes 是否有一种简单的方法可以在创建每个节点/容器/pod 时为其分配一个序列号 - 可能在 pod 的环境变量中?这些数字可以以 0 或 1 开头,并且应该达到 uptown 的最大数量的 pod。
背景信息和一些研究:
执行UUID.randomUUID().hashCode() & 7
八次会让你重复 0 到 7 之间的数字。请参考createNodeId()
. 上述减速器步骤的实际运行示例输出。
我继续执行上述代码的 1 亿次运行,发现只有 0.24% 的案例分布均匀。
Uneven Reducers: 99760174 | Even Reducers: 239826
postgresql - 在 PostgresQL 数据库中存储 Twitter Snowflake 字符串的最佳方法是什么?
https://developer.twitter.com/en/docs/twitter-ids我想将这样的雪花 ID 存储在我的 PostgresQL 数据库中,对此的准确约束和数据类型是什么?
起初我想"id" VARCHAR(19) NOT NULL
,但后来我开始怀疑是否有更准确的东西