随着项目用户数量的扩大,高并发随之而来。那么如何在当前系统生成唯一编号呢?
一台数据库可以用自增,集群呢?当然也有随之的解决方案,但是最好的还是在项目生成了唯一的编号再插入到数据库。而不是数据库插入了再返回来,因为这中间多了一步查询的过程。
当然很多人会讲用这个那个技术,比如 redis 等等,当然能做到。你redis研究的很深,集成事务等等。但是又怎么样呢?redis最擅长的还是 key—value,每秒的吞吐量有10万,但是集成了事务等等有吗?肯定没有。
你别忘了这是个算法问题,你就没想想这个问题要怎么实现,细节。这是一个简单的问题,不需要涉及到高等数学。
下面是我生成编号的一个类。
思路:首先获取 年月日时分秒毫秒的一个时间戳(格式很规范,这样生成的编号特别是订单一目了然),再在这一毫秒内对唯一做一个区别。就是一个编号哪来的那么复杂。
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
/**
* Title: 生成UUID
*/
public class CodecUtil {
private static Integer number;//唯一数字,集群第一台=0,第二台=200000,第三台=400000
private static in