主题:征集数据库的轮询机制的方案

公司现在有一个项目,A应用在处理接受数据处理 插入数据库,B个应用发现数据有增量,直接从数据库取出做处理,显示在页面上。系统响应时间要求在秒级以内。

现在问题是:他们之间如何做通讯机制?现在有两种处理方案:

一种是JMS,耦合度比较低,效率好像不怎么样,没有具体项目经验。

另外一种,是通过触发器,插入数据的时候,同时另外一张表插入一些基础数据,通过线程轮询这张表,进行处理。缺点,容易导致线程堵塞,服务器压力大.

1:B应用开一个web service接口,A应用在插入数据库的同时,调用B的Web Service,把插入数据库的数据发送给B应用。

2:写一个Interceptor在A操作数据库的时候(lock 相应的字段)获取信息返回给表现层。让后释放对象,A继续写数据库,写完(release)

AOP的user guide的例子是个和你的需求类似的方案!

3: jms好一些,ActiveMQ基本上是1秒2000条消息,怎么都比轮询数据库快

4: 要兼顾需求与性能,还是应该由A数据库发消息,变更时发送消息通知。如果担心性能问题,可以采用异步。A只负责发送消息,B接收处理消息。这并没有增加多大的耦合。对A的风险不大。
具体实现上,如果A是Oracle,可以直接在DB层利用它提供的AQ来处理,性能非常好。如果不是,可以采用Trigger插入同构表,B轮循同构表来处理。否则性能肯定成问题。不过这样工作量比较大。
当然如果应用层结构清晰的话,拦截器也是一个较好的方式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值