0

考虑一个在 Web 上搜索特定数据的工作进程。需要另一个过程来索引第一个过程的结果以供以后使用。索引部分涉及以特定方式将原始数据(搜索结果)写入一个巨大的分布式 HBase 存储库。我无法判断这两个过程相互比较的速度。我们可能会遇到这样一种情况,其中一个系统暂时停机,需要在唤醒时执行任务。我正在使用 JavaEE。目前,这是我想到的实现方式。

  1. 第一个进程将其搜索结果存储在 MySQL 数据库中,并发送一条消息,其中包含它已放入表中的新行的 ID。
  2. MOM 唤醒第二个进程以使用存储在 MySQL 数据库中的新原始数据。
  3. 第二个过程在完成对真实数据库(HBase)中的数据的索引时清除 MySQL 表。

我需要专家对我的设计进行评论,以验证其适当性。例如,如果第二个进程不断轮询表以查看是否有新记录怎么办?我是在使用正确的技术还是矫枉过正?我应该简化我的设计还是遗漏了什么?如果我的解决方案是合适的,在实施过程中我应该记住什么吗?提前致谢。

4

1 回答 1

1

如果可能的话,我会坚持使用更简单的设计,放弃 MySQL 临时表并坚持使用 JMS。

所以,这样的事情会做到这一点:

  1. [P1] 将搜索结果发送到某个 JMS 队列“INDEX.QUEUE”。
  2. [P2] 简单地异步吃掉队列“INDEX.QUEUE”的消息,并根据消息负载中的搜索结果生成搜索索引。

消息传递可以帮助您完成这些任务,轮询数据库表几乎相同,但更棘手,所以当您拥有专为此任务设计的持久性和事务性 MOM 时,为什么要重新发明轮子。

于 2012-10-09T18:03:29.607 回答