algorithm - Cassandra 的代币功能背后的算法是什么?
问题描述
我的驱动程序中的 Token 函数不支持复合分区键,但它适用于单个分区键,它以 8 位形式的二进制作为输入并将其传递给 murmur3 哈希函数并提取 64 符号-little-integer (Token) 来自 murmur3 的结果并忽略任何额外的二进制缓冲区。
所以我希望为复合分区键生成二进制文件,然后像往常一样将其传递给 murmur3,算法或按位运算将非常有用,或者至少是任何编程语言的源代码。
我不是指 murmur3 部分,只是转换/混合复合分区键并以二进制形式输出原始字节的令牌端。
解决方案
查看驱动程序,因为它们已生成令牌以找到正确的协调器。https://github.com/datastax/java-driver/blob/8be7570a3c7fbba773ae2581bbf26e8196e7d6fb/driver-core/src/main/java/com/datastax/driver/core/Token.java#L112
由于制作时存在错误并且无法在不破坏现有集群的情况下更改它,因此它与典型的 murmur3 略有不同。所以我建议从他们那里复制它,或者更好的是,使用现有的驱动程序来查找令牌。
推荐阅读
- extension-methods - 如何从名为 _Extension 的父类创建子扩展类?
- linux - 更改 RUNNING Slurm 作业的 CPU 计数
- arduino-uno - 如何在 arduino uno 上使用超声波传感器 hc sr04 和 gps neogps 6m 和 gsm sim900
- forms - Yii2 buttflattery\yii2-formwizard 不同选项卡中的一个字段
- arrays - 如何在不重复自己的情况下设置允许的值?
- python - 在数据帧的每一行上应用 SentimentIntensityAnalyzer 函数并提供情绪分数
- google-chrome - Firefox 和 Chrome 渲染不正确
- javascript - 如何在 angular 项目中的 tensorflow.js 中上传 csv 文件?
- snipcart - Snipcart 或其他类似解决方案
- java - 我的 editor_layout_problem - 2 如何在 scoll 或 listview 中多次显示不同的片段