一、以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算法
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。
该算法实现基本就是二进制操作,
记录几种识别机器唯一码的方式
1.cpu串号
2.imei串号
3.mac地址