最近由于工作需要,要做一个项目  项目的目的是将本地的某些发生的数据远程同步到某个地区的服务器上
服务器架设在某个地方,只有一台,所有数据都要汇集到这,   客户端有很多全国各地都有,数据库用的是SQLSERVER原先的应急做法是使用SQLSERVER自带的连接服务器和发布订阅来做.
现在不想这么做了,毕竟有很多东西自己这边无法控制.现在最大的问题就是并发操作的问题,因为数据的更新和上传都必须是时实的.打个很简单的比方吧,就有点象全国连锁的商场的发行的VIP卡
某个连锁商场有 A,B,C  3家分店, 都可以使用VIP卡结帐打折现在A发了张编号为123的VIP卡,当该卡在A消费后数据能直接传到服务器,然后当该卡要在B,C消费时,必须从服务器上下载最新的卡的余额或是其他信息,然后进行操作这个理解很简单
但是有个问题,如果123的卡在A消费后,因为某些原因没有及时上传到服务器上,这时候123的卡又到了B店,去消费,这样就有问题了
有没有什么个好的机制或建议?   我也是个新手  哎
不知道我描述的清楚不

解决方案 »

  1.   

    不能当作交易失败,因为无法判定,因为数据没有及时上传,B店,并无法察觉该123曾经在A店发生过交易纪录,因为这个时候A店可能已经断网了,所以根本无法判定该123卡的状态
      

  2.   

    每次消费完成前都一定要检查数据是不是正确更新到服务器上了,如果更新失败才,则提示,并撤销消费。
    如此之外没有任何办法可以确保万无一失这个有些类似于一个银行转账的学习案例:
    在数据库中,A卡要转10元钱到B卡,首先要确定A卡有10元钱,然后A-10,B+10,最后一定要确保A-10及B+10没有发生任何异常,则成功。否则失败,撤销转账。
      

  3.   

    LS的2位说的方法都挺不错的,但因为这个项目先前都是按单机版本设定的,而且都已经有客户在使用,如果这样做改动有点大这2天我想了下,想到了如下做法,说出来大家听听,看看可行性,以及大家的意见:我准备采用远程WEBSERVICE服务存取需要同步的数据,具体设想如下:在总部服务器上 挂上WEBSERVICE服务,该服务是用来进行远程数据存取的,比如 A客户现在有人拿着卡号为123的VIP卡前来消费,当刷消费时,首先通过WEBSERVICE远程服务来查询该卡实际余额和其他信息,然后反馈给本地客户端,当刷卡确认后,将刷卡后产生的数据在通过远程服务直接更新到总部服务器的数据库中,当更新完成后,在将该数据存一份到本地客户端的数据库上,之所以还要存本地,就是为了本地的一些查询操作,这样就避免了因为南北网络的问题导致查询速度过慢,如果刷卡确认后更新远程服务器上数据时发生错误,那么所有一切刷卡动作回滚我想这样应该能有效避免,因为某个客户端瘫痪导致数据混乱的问题,因为是通过接口来做,对整个项目的修改范围就压缩到最小了
    不知道其他人有什么看法?
      

  4.   

    其实  也类似于haochin提到的方法