分布式数据库唯一序号解决方案
来源:互联网 发布:伤心太平洋知乎 编辑:程序博客网 时间:2024/06/06 03:55
随着互联网飞速发展,尤其像微博,移动支付行业,用户数据成几何倍数增长,传统的单库已无法满足业务的增长速度,于是就有了分库分表,对业务表进行垂直切分和水平切分,将数据存放在多个数据库中,这每个数据库中存放的业务数据就会相应减少,利于应用访问数据库速度。
在享受分库分表带来查询速度提升便利的同时,这种切分方案也带来一些问题,例如数据路由,唯一序号等,今天主要说一下唯一序号解决方案
第一种解决方案:使用UUID随机数,这种方案优点是使用简单,缺点是产生的随机数是128位,并且没有业务规则,不连续,占用数据库空间多,在业务数据量大时,会有性能下降
第二种解决方案:使用Twitter的雪花算法(snowflake),此算法产生序号效率极高,每秒能产生26W个ID,但是也存在缺点,非常依赖NTP服务,如果NTP失效,服务器的时间滞后,则此雪花算法就会等待服务器时间追上,才会生成新的ID
今天就说一下新的解决方案,其架构图如下所示
此方案的好处是,在同城双机房的情况下,可以部署2台mysql数据库,做双主半同步,这样可以保证数据的一致性,如果2台mysql服务器都运行正常,则同机房的应用则访问同机房的mysql数据库,可以事先定制好规则,机房A的应用访问机房A的mysql数据库表seq_a,并只获取奇数的序号,机房B的应用访问机房B的mysql数据库表seq_b,并只获取偶数的序号,2个机房业务均衡,基本无序号空洞产生。
如果机房A的mysql数据库宕机,则分布式ID生成应用会自动切换数据源,去访问机房B的mysql数据库,并正常读写seq_a表,并只获取奇数的序号,以此来实现架构的高可用。
下面是我的公众号二维码,欢迎添加
- 分布式数据库唯一序号解决方案
- 分布式情况下生成数据库唯一ID的解决方案
- 分布式数据库访问解决方案
- UIDGenerator生成唯一序号
- Amoeba:分布式数据库Proxy解决方案
- flickr 对于分布式系统生成全局唯一ID的解决方案
- 高并发分布式环境中获取全局唯一ID[分布式数据库全局唯一主键生成]
- curator分布式序号生成器
- sql server 链接数据库 分布式数据库解决方案
- 赛贝斯政府行业分布式数据库解决方案
- 分布式跨数据库的事务处理解决方案jta
- 高效分布式数据库缓存经典解决方案
- 高效分布式数据库缓存经典解决方案
- Amoeba for MySQL---分布式数据库Proxy解决方案
- Amoeba for MySQL---分布式数据库Proxy解决方案
- 分布式数据中心数据库和存储部署解决方案
- 高效分布式数据库缓存经典解决方案
- Amoeba for MySQL---分布式数据库Proxy解决方案
- Composite模式
- Python--矩阵转置
- c语言学习笔记2
- Bridge模式
- Adapter模式
- 分布式数据库唯一序号解决方案
- oracle分层查询
- cocos2dx lua 笔记
- 创建型模式学习总结——设计模式学习笔记
- usb string 描述符以及语言ID
- 算法:进制转换
- PyOpenGL 资料汇总
- DOM绑定事件 -for循环'
- Singleton模式——设计模式学习