我们的网站是一个购物网站,部署的情况是这样,两台LINUX应用服务器,一台数据库服务器,两台应用服务器部署同样的应用,对应同样的域名,购物订单的时间都是在JAVA代码里取系统时间然后存到数据库,两台应用服务器部署环境都是用JBOSS。问题:客户购物的流水出现时间漂移,前一笔流水漂移到后面去了,具体看下面流水记录:
   订单号          增加  减少   余额       操作日期  
1. A64647436t17120       53.00  18,672.00  2010-12-10 23:32:32  1
2. A06014556t17120       53.00  18,566.00  2010-12-10 23:57:17  3
3. A56098124t17120       53.00  18,619.00  2010-12-11 00:01:16  2
4. A95317029t17120       53.00  18,460.00  2010-12-11 06:12:23  5
5. A66307000t17120       53.00  18,513.00  2010-12-11 06:39:09  4前面的序号是按系统时间产生的流水顺序,后面的序号是我标上的,是根据余额推出的业务正常发生的顺序,想问导致时间漂移
的原因可能是什么?有什么好的解决方案? 两台应用服务器的时间我看过 是一致的,请高手指教!

解决方案 »

  1.   

    原因是:“购物订单的时间都是在JAVA代码里取系统时间然后存到数据库”分布式系统最怕的就是在不同的机器取时间,比如,一个在中国,一个在美国,不可能把时间调成一致,这种情况下,解决的方法就是最后那一列用timestamp类型,插入时自动生成时间,以入数据库的时间为准。
      

  2.   

    谢谢楼上的回复;这是我们时间产生的代码:
     Timestamp operateTime = new Timestamp(System.currentTimeMillis());
    用的是数据库是ORACEL9;你的意思是在JAVA代码中不要给时间值,让数据库时间函数自动生成时间吗?
      

  3.   

    用的是数据库是ORACEL9;你的意思是在JAVA代码中不要给时间值,让数据库时间函数自动生成时间吗?这个是可以的