【发布时间】:2011-02-04 21:13:43
【问题描述】:
我想实现一个分布式销售点系统,有点像Point of sale app architecture advice 中描述的系统。
这是一个具有以下特点的分布式系统:
- 客户端是关键任务,即使网络连接或服务器出现故障,它们也应该可以工作,但只需要几天左右的时间。
- 客户端必须易于安装。
- 每个客户端都有自己的本地嵌入式数据库。
- 客户端和服务器之间的通信使用消息队列。
- 服务器用于备份、记账、统计和向客户分发价格。
- 服务器放置在互联网上。
我正在以 JavaDB 作为数据库在 Java Swing 中实现客户端。
我的应用程序应该如何与消息代理和数据库通信?
我以前从未使用过消息队列和消息代理。我的想法是应用程序从数据库读取,但写入消息代理,消息代理写入数据库并与服务器通信。或者这是一个坏主意?我该如何解决这个问题?
所以除了我的嵌入式数据库之外,我还需要找到一个消息代理,最好是用 Java 编写的可以嵌入到我的应用程序中的消息代理,以便于安装。
【问题讨论】:
-
我不擅长制定答案。您可能想查看“企业集成模式”(Hohpe、Woolf、Addison-Wesley)。然而,这个要求听起来很可怕:“即使网络连接或服务器出现故障,客户端 [...] 也应该工作,但只是几天左右”和“服务器用于 [...] 分发 [ ing] 给客户的价格。”你能保证价格不会改变吗,即你事先知道价格变化的日期吗?
-
"我的想法是应用程序从数据库中读取,但写入消息代理,消息代理写入数据库并与服务器通信。或者这是一个坏主意?.. ." 这不是一个坏主意,但您至少应该决定您希望使用哪个消息代理。有些可能有预制部件直接与数据库对话,否则你也应该在另一边编写一些代码......
-
@mnemosyn:不,没有价格变化的日期。价格可以改变,你也可以改变客户的价格。但在连接再次建立之前,它们不会分发给其他客户端。
-
@p.marino:我以前没有使用过消息代理,所以我必须找到一个。但我想使用一种独立于语言和平台的。而且我什至不知道我需要一个嵌入式消息代理还是只需要一个消息客户端。 “否则你也应该在另一边编码一些东西”是什么意思?我是否需要在应用程序中使用 Message Queue 客户端来从同样嵌入的消息代理读取消息?
标签: client-server messaging point-of-sale architecture distributed-system