多机分布式系统ID的问题与处理
来源:互联网 发布:泛泰主义知乎 编辑:程序博客网 时间:2024/06/06 15:46
起因
当数据库有单个数据库转变为水平分库,原来单个系统中的ID(Sequence)以及自增id的做法需要改变
我们主要需要解决下面的两个问题:
- 唯一性
- 连续性
问题与处理
当我们只考虑id的唯一性的问题的时候,我们可以使用UUID等方式来自动生成,虽然这样生成的id保证了唯一性,但是在分布式系统中的连续性是一个巨大的问题
进而,我们可以想到,我们可以将所有id都存放在一个地方进行集中分类管理,分布式系统中的每台单独机器使用id时都从这个id生产器中去取,这里有如下几个关键问题需要解决
- 性能问题。每次远程取id都会存在资源消耗,一种方案是一次取一段id,然后缓存到本地,这样就不需要每次都去远程的id生成器上取id了。但是如果一旦发生宕机,那么一些id就会被浪费了。
- 生成器的稳定性问题。id生成器作为一个无状态的集群存在,其可用性要靠整个集群来保证
存储的问题。底层存储的选择空间比较大,需要根据不同类型进行对应的容灾方案。下面介绍两种方式
第一种,在底层使用一个独立的存储来记录每个id序列当前的最大值,并控制并发更新,这样以来id生成器的逻辑就很简单了
第二种,直接把id生成器舍去,把相关的逻辑放到需要生成id的应用本身,就行了。即我们上述所说的,读取可用的id或者id段,然后给应用的请求使用,如图
不过因为第二种方式没有中心的控制点,并且我们不希望生成器之间还有通信(这回使得系统非常复杂),因此数据的id并不是严格的按照进入数据库的顺序而增大的。在管理上也需要有额外的功能,这些是需要权衡的地方
参考 大型网站系统与Java中间件实践
阅读全文
0 0
- 多机分布式系统ID的问题与处理
- 分布式系统中生成全局ID的总结与思考
- 分布式系统中唯一ID的生成
- 分布式系统的问题
- 分布式系统ID生成器
- 市面上分布式系统生成唯一ID的方式收集与整理
- 浅谈分布式系统的基本问题:可用性与一致性
- Gearman分布式任务处理系统(七)问题研究与性能优化
- 分布式系统的数据一致性问题
- 《分布式服务架构原理设计与实战》第2章分布式系统一致性的问题笔记
- 分布式系统唯一ID生成
- Android @id/与"@android:id/获取id的问题
- flickr 对于分布式系统生成全局唯一ID的解决方案
- 分布式系统中 Unique ID 的生成方法
- 分布式系统如何生成全局唯一的ID
- 分布式系统中, 怎么样生成全局唯一的 ID
- 分布式系统中唯一ID的生成方法
- 分布式系统中 Unique ID 的生成方法
- HDU
- 金海佳学C++primer 练习9.44
- 简要的架构
- 支付宝支付配置
- 【数据结构】顺序表的实现
- 多机分布式系统ID的问题与处理
- 个人总结61
- 【区块链开发指南】区块链进阶
- 使用opencv:从视频中获取每一帧图片
- JSON schema简介
- 2-SAT
- css3知识整理
- HDU
- meaven 配置mybatis generator jdbc 6.0 generatorConfig配置文件