马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
起首,分布式全局ID的办理方案有很多,比如:
- 使用Mysql的全局表
- 使用Zookeeper的有序节点
- 使用MongoDB的objectid
- redis的自增id
- UUID等等
这些方案只是办理根本的id唯一性题目,在实际生产环境中,须要构建一个全局唯一id还须要思量更多的因素:
- 有序性,有序的ID可以大概更好简直认数据的位置,以及B+树的存储布局中,范围查询的服从更高,而且可以提升B+树数据维护的服从;
- 安全性,制止恶意爬取数据造成数据泄漏;
- 可用性,ID天生体系的可用性要求非常高,一旦出现故障就会造成业务不可用的题目;
- 性能,全局ID天生体系须要满足整个公司的业务需求,涉及到亿级别的调用,对性能要求较高。
因此,假如我们选择数据库的全局表,每获取一次id就须要更新数据库,性能上限比力显着,而且基于数据库构建高扩展和高性能的办理方案难度很大。以是,如今市面上主流的办理方案是基于Twitter早期开源的snowflake雪花算法。它是由64位长度构成的全局id天生算法,通过对64位举行区间分别来表述差别寄义实现唯一性。它的利益是:算法实现简单,不存在太多外部依赖,可以天生故意义的有序编号。基于位运算,性能也很好,Twitter测试的峰值是10万个每秒。
别的,美国公司开源了一个全局唯一id天生体系leaf,它内里也用到了雪花算法去构建全局唯一id,而且在高性能和高可用方面,做了很多优化,为美团内部业务提供了每天上亿次的调用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |