python - Python - 基于 UUID 的分片
问题描述
我正在研究数据库分片,我必须在 Python 代码中确定数据库存储桶(应用程序分片)。我有 3 个不同的数据库存储桶和使用的用户 ID,我必须对其进行分片。用户 id 由 uuid.uuid4() 生成。如何使用这些输入进行分片?我尝试将第一个 UUID 转换为 int 然后取模数。但是模数运算符失败了。
解决方案
模运算符应该没问题:
>>> int(uuid.uuid4()) % 3
2L
>>> int(uuid.uuid4()) % 3
1L
>>> int(uuid.uuid4()) % 3
2L
>>> int(uuid.uuid4()) % 3
1L
>>> int(uuid.uuid4()) % 3
1L
>>> int(uuid.uuid4()) % 3
0L
>>> int(uuid.uuid4()) % 3
1L
但是为了让您的设计面向未来,我建议您实际编码至少 16 个分片,例如,16 个不同的主机名指向 3 个不同的后端主机:
myhostname00 IN CNAME backend01
myhostname01 IN CNAME backend01
myhostname02 IN CNAME backend01
myhostname03 IN CNAME backend01
myhostname04 IN CNAME backend01
myhostname05 IN CNAME backend01
myhostname06 IN CNAME backend02
myhostname07 IN CNAME backend02
myhostname08 IN CNAME backend02
myhostname09 IN CNAME backend02
myhostname10 IN CNAME backend02
myhostname11 IN CNAME backend03
myhostname12 IN CNAME backend03
myhostname13 IN CNAME backend03
myhostname14 IN CNAME backend03
myhostname15 IN CNAME backend03
这样,您将来就可以创建更多后端服务器并将用户转移到那里,而无需更改您的代码。如果您曾经拥有比其他服务器性能更低的后端服务器,您甚至可以拥有分布不均的用户。
推荐阅读
- r - 检查单词是否在句子中
- ruby-on-rails - 覆盖 Rails 验证消息
- java - @XmlIDREF 和 @XmlID 如何编组嵌套集合?
- c# - 从 winform/ASP.net jquery ajax 调用 WCF 服务
- python-3.x - 如何在python中对列名进行子串化
- mysql - 带有 MySQL 8.0.11 的 Laravel 5.5:“sql_mode”不能设置为“NO_AUTO_CREATE_USER”的值
- python - 如何将文本文件的内容附加到数据框中的列(熊猫python)
- r - stepAIC 错误:AIC 为 -infinity
- c++ - 泛型函数中类的泛化为基类创建目标代码?
- reactjs - 将本机字符串替换为图像