xmuzyu
2009-05-15 16:49
>>加锁是为了写,如果写竞争会非常激烈,那么按照DDD思想,就将锁的范围缩小,将那些会发生写竞争字段独立成一个对象,然后在这个对象内部用不变性约束,加锁加在这个对象内,这样,能避免无辜,提高精准率。

多谢banq老师。我目前就是您说的这样做的。

我现在一个项目中,我采用了基于事件的设计,所有系统操作都产生事件,事件处理器负责进行处理事件,而事件处理器又可以采用不同的事件处理策略,比如同步和异步的,对于数据库操作可以通过JMS异步实现,或者也可以封装Executor框架来进行异步处理。而对于缓存的操作,就直接采用在事件处理器同步执行。至于事件的触发可以通过手动触发或者利用spring的aspectj语法,通过AOP来触发。

xmuzyu
2009-05-15 16:52
to acoder.

这种方法还没试过。不过我觉得这样的话,就要对容器管理的线程操作了,因为获取操作是有web 容器管理的线程来执行的。

ACoder
2009-05-15 20:46
我只是提供一种思路,而且这样可以让那一部分更具备可伸缩性以及性能控制,而且可以相对容易的迁移到其他项目中。如果想不控制线程只需要在命令加入队列以后sleep固定时间后继续读取,不过这种方法不推荐。

猜你喜欢
3Go 上一页 1 2 3