当前有很多分布式系统都采用了不同方法来生成squence num,其中UUID是比较费力气和费空间的方法.在分配squence num时候,其实为了达到数据的分布和均衡效果,是应该把squence num分配给client。现在介绍两种其他生成squence num的方法:
1、通过config server(这个是单独的管理元数据的服务器,不同系统叫法不同,有的叫master server,有的叫root server)来协调生成。
首先该需要生成的squence num的字段需要注册到config server ,然后client需要使用该字段时候,进行insert操作,需要去向config server 去申请,每次申请一定的步长(比如申请1-100)。当client用完了这个步长,就需要再去申请。
这个方法优点是统一管理,比较简单,一般不会失败。但缺点是,当client把一个步长用完后,去申请新的步长,config server不能down,不适合在正常运转中,可以没有config server,系统继续良好运转的条件。
2、通过data server自己的管理
就是在squence num也像表里一个字段,client抢占的来更新,就是说比如有三个data server ,可以把1-100定义好分配给S1, 101-200分配给S2,201-300分配给S3,然后多个client比如去抢占S1,就把1-100分配给其中一台机器,其他的就是失败的,下次再来向S1申请,就是申请301-400给client.
这样的方法优点是可以当作普通的表的字段来处理,但缺点是扩展难,需要解决单点问题