在分布式系统中如何生成唯一ID


比如在一个分布式的用户系统中,如何各自生成用户的唯一数字ID。
首先没有办法用MYSQL的自增,用GUID或UUID的话又不是数字,而且很长,兼容性不好。

分布式 系统设计 php

YYMoon 12 years, 8 months ago

分布式也不是不可以在不同的地方生成唯一的id,需要考虑一定的算法,之前做视频的时候一个大的系统下面有上万台设备,而且每个设备可能都不在一个省份,这些设备就能够保证很好的唯一性,就是采用了统一的数字编码,一个32位的整数可以唯一标示任何设备,这种方式也适用于类似多服务器的架构设计,先把服务器编码,然后是跟这个服务器相连接的终端编码,终端对应的数据再进行一个层次的编码,如果一个32位的数不够用可以用一个64位的整数,这种方式的好处是大家不需要考虑别的服务器的状态,不需要同步,只需要根据统一的算法生成ID就可以了,而且ID本身是个整数,在数据库查询、排序的时候效率都高。

艾斯佩利乌斯 answered 12 years, 8 months ago

Your Answer