推特的数据库是哪国的

推特的数据库是哪国的,第1张

曼哈顿。数据库我们是基于Elasticsearch,平台是基于Python。推特是曼哈顿的,数据库系统(databasesystems),是由数据库及其管理软件组成的系统。它是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。

Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。各种主键ID生成策略对比,见 常见分布式主键ID生成策略

41位的时间前缀 10位的节点标识 12位的sequence 组合在一起。

除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。 默认情况下41bit的时间戳,1970年算起可以支持该算法使用到2038年,10bit的工作机器id可以支持1024台机器,序列号支持1毫秒产生4096个自增序列id

Snowflake是Twitter在2010年用Scala语言写的一套主键生成策略,用Thrift对外发布主键生成服务,其中依赖了Twitter内部的Infrastructure,后来Twitter用 Twitter-server 代替了Snowflake,自2012年起就未更新。见 Twitter-Snowflake项目地址(Tags:snowflake-2010)

之前写了一个Java的实现,改自网上一个版本: Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版 。后来看到当当网的 Sharding-JDBC 分库分表中间件已实现了此算法。就直接在其中添加了一些新特性,已merge。( 具体实现 , 说明文档 )

添加3种IdGenerator实现。

用笔记本(i7-3632QM 2.2GHz 四核八线程)测试了下,每秒生成409万(理论上的峰值),CPU占用率18.5%。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10033845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存