生成唯一标识

 

一、以IP地址 mac

$tail_sql.=" registercode=if((values(offline)=-1  and (mac2='' or mac is null)),if((values(mac)='' or mac is null),'',md5(CONCAT(values(ipaddress),values(mac),'CLoudMap'))),registercode), ";

 

md5(CONCAT(values(ipaddress),values(mac),'CLoudMap'))

 

$registercode = md5($ip.$mac."CLoudMap");

 

 

二、

 

生成不重复唯一编号工具类

根据ip地址,MAC地址,访问时间以及哈希算法生成唯一不重复的唯一编号以及访问IP地址获取工具类

 

 

三、

 

时间做前缀+相同的时间排序号

 

用4位数字作日期 0610  + 用毫秒做多编号19  + 相同的时间的排序号

 

 

 

方法一:

答:UUID 的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID(通用唯一标识码)。

UUID的组成:

1.当前日期和时间。

2.时钟序列。 (数值 按其发生的先后顺序而排列的数列)

3.全局唯一的IEEE机器识别号。

 

缺点:UUID虽然可以保证全局唯一,但是它占用32位(十进制),而且是无序的,入库时性能比较差。

为什么入库性能比较差?

答:关系型数据库的索引都是B+树结构, 如果我们安照ID递增的顺序,新的结点会插入到最后一个

结点后面去,当最后一个结点满了,会裂变出新的结点。

但如果是插入无序的,不仅会导致中间结点的裂变,还会产生很多不饱和节点,导致性能降低。

 

 

 

SnowFlake算法:分布式系统中生成全局唯一且趋势递增的Id.

 

总共64位2进制,换成十进制为18位

第一部分: 1位,始终为0.

第二部分:41位,精确为毫秒的时间戳。

第三部分:10位,机器码

第四部分:12位,序列号

 

snowflake的优点:

1.是按ID递增,易于插入到数据库

2.不依赖数据库,在内存中生成,性能好

 

注:构造函数(工作机器ID,数据中心ID)

 

 

http://www.cnblogs.com/haoxinyue/p/5208136.html

 

缺点:
需要独立的开发和部署
强依赖时钟,如果主机时间回拨,是不是会造成重复ID
ID虽然有序,但是不连续

推荐:
国内有很多厂家基于snowflake算法进行了国产化
百度的uid-generator:
https://github.com/baidu/uid-generator
美团Leaf:
https://github.com/zhuzhong/idleaf

snowflake算法

snowflakeTwitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID5bit是数据中心,5bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 ID),最后还有一个符号位,永远是0

 

该算法实现基本就是二进制操作,

 

记录几种识别机器唯一码的方式

1.cpu串号

2.imei串号

3.mac地址

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值