多台web服务器(集群),并发情况下如何处理单据号不重复

时间:2022-10-15 10:15:27
只有一台数据库服务器(这个好处理) , web应用程序考虑怎么做

9 个解决方案

#2


队列吧,或者生产全球唯一单号规则

#3


guid,或者单据号的前边几位用你为服务器“配置”的编号作为开头嘛。

#4


例如说
static long a = DateTime.Now.Ticks;
static long b=0;   //每当使用一次都+1
static string c=读取配置文件取服务器编号或者服务器机器名作为编号;
然后你就用 a.ToString() +"_" +  b.ToString() + "_" + c 作为编号就可以了。

当然是用 guid 也可以,微软的 guid 算法虽然强悍,但是也比自定义的方法慢一点。

#5


你这个问题,有点类似小型秒杀系统的询问,涉及到并发,同步和异步处理的问题。队列生产,线程锁的事情

#6


C#的GUID ,  是永远不会重复的
可以看一下

#7


发现taobao下单产生的order,好像有一段是个人id

#8


用户ID+时间戳+集群服务器编码+随机数  这样应该唯一

#9


方案很多啊,
guid,时间戳加个账户id怎么都唯一了吧。

#1


#2


队列吧,或者生产全球唯一单号规则

#3


guid,或者单据号的前边几位用你为服务器“配置”的编号作为开头嘛。

#4


例如说
static long a = DateTime.Now.Ticks;
static long b=0;   //每当使用一次都+1
static string c=读取配置文件取服务器编号或者服务器机器名作为编号;
然后你就用 a.ToString() +"_" +  b.ToString() + "_" + c 作为编号就可以了。

当然是用 guid 也可以,微软的 guid 算法虽然强悍,但是也比自定义的方法慢一点。

#5


你这个问题,有点类似小型秒杀系统的询问,涉及到并发,同步和异步处理的问题。队列生产,线程锁的事情

#6


C#的GUID ,  是永远不会重复的
可以看一下

#7


发现taobao下单产生的order,好像有一段是个人id

#8


用户ID+时间戳+集群服务器编码+随机数  这样应该唯一

#9


方案很多啊,
guid,时间戳加个账户id怎么都唯一了吧。