首页 > 其他 > 详细

分布式 环境的 sequence 处理方式

时间:2015-09-27 00:06:48      阅读:337      评论:0      收藏:0      [点我收藏+]

    我们都很清楚单机单库中的sequence处理,像oracle就直接提供sequence的支持,在mysql,则有 auto increament 字段的支持,我们很方便的就是先一个自增的不重复的id序列,但在分库分表后,sequence 就遇到了一点麻烦。

    sequence 在多机的情况下,我们可以从唯一性、连续性考虑解决问题。

    如果不考虑连续性,uuid 就是一个能保证唯一性的生成方式,或者根据自己的业务情况使用各种种子(例如,ip,mac,机器名,时间,本机计数器等因素)来生产唯一的id。

    在考虑唯一性和连续性的情况下,我们可以把所有id都集中在一个地方进行管理,即提供一个统一id生成器服务,每台机器都从这里获取id,但是,这个服务会面临几个问题:

    1. 性能问题,每次都需要跟服务打交道,获取id。

    2. 生成器稳定性问题,id生成器服务成为一个关键的集群稳定性因素

    3. 存储问题,底层存储需要的空间比较大,需要根据不同类型进行对应的容灾处理。

 关于存储问题,可以选择同一存储,控制并发,也可以将id生成器的连续id分段,分别分配给各个机器,各个机器上有自己的id生成器(根据分配到的id段生产id),各个机器的id生成器需要跟id生成服务保持心跳,确保id段不够用时,能分配到下一段可用的id段,以适应业务的需求。

分布式 环境的 sequence 处理方式

原文:http://my.oschina.net/u/939952/blog/511574

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!