系统设计应关注并发性

之前给客户做了一套系统,自己在系统设计的时候只是按照业务流程,数据流转来考虑,并没有注意到系统在并发情况下的临界条件的要求。结果做出来的系统经过了单元测试和集成测试(汗!我们的测试能力还是很弱啊,处于初级原始社会),也提交给了用户(再汗~)。

用户在初期使用的时候确实也一切运行正常,没有什么问题。但是随着系统同时使用的用户越来越多的时候,以前设计没有注意的并发性问题开始凸现。当多个用户同时打开同一条数据,并对它进行操作的时候,就会产生不受欢迎的结果——脏数据。而这些操作又是在异构数据库(oracle和sql)之间进行的数据同步,所以最终造成两个数据库的数据不一致。

这是自己经验不足,考虑不周造成的失误。还好还能修改。目前我想到的一些修补策略是:
1、每个操作前检查数据是否被其他用户在使用,也就是想实现锁的概念
2、每个操作执行时检查数据的状态是否已经改变,如果改变则放弃操作
3、由于操作跨异构数据库,考虑使用全局事务进行处理,当某步出错的情况下回滚,保证两边数据库的一致性。

大家看看还有没有其他思路,欢迎大家一起来讨论关于系统设计中的并发性相关实现,分享设计经验。
posted on 2005-03-31 11:52  湘南和也  阅读(2303)  评论(17编辑  收藏  举报