我的客户制造了一种医疗设备,该设备对给定样本进行各种测量并将结果写入数据库。生成的数据量相对较小。
在当前配置中,每个设备都有自己的计算机,并且该计算机运行数据库服务器的一个实例。设备未联网。
客户想要修改设备,以便大约有 50 个设备可以连接到局域网。
设备使用各种有批号的耗材,用过一次不能再使用。测量样品时,这些批号将写入数据库。此要求值得注意,因为在当前配置中,设备无法知道耗材是否已被其他设备使用。在建议的网络配置中,期望每个设备都可以立即访问有关其他设备使用的耗材的信息。
这些设备还需要跟踪测试过程中使用的各种化学品的数量。每瓶化学品都有批号和条形码。当瓶子插入机器时,机器会读取数据库以确定瓶子中消耗了多少液体。期望可以将批号的瓶子插入任何机器中,并且机器将能够准确地评估瓶子中的液体量。
客户想要建议应该使用两种架构中的哪一种:
1.) 每个设备都会像现在一样将数据写入自己的本地数据库。同步软件将安装在每台设备上,并实时进行同步。每个设备将定期广播一个心跳(建议间隔 1 到 5 分钟),该心跳将包含一个 CRC 校验和。网络上的每个设备都会监听心跳。如果心跳 CRC 与自己的不同,设备将启动同步。同步软件在运行测试的软件之外并且独立于运行测试的软件。因此,从理论上讲,设备在与网络断开连接或同步软件未运行时运行是可能的,但不太可能。
2.) 每个设备上的数据库服务器将被删除,而将使用数据库服务器。
客户端担心如果使用数据库服务器,在服务器发生故障的情况下,网络上的所有设备都将变得不可用。使用对等拓扑是否有效地降低了这种风险?换句话说,如果网络上的一个对等点出现故障,所有其他对等点是否都照常营业?这两种方法是否存在任何数据完整性危险或好处?
根据 iag 和 MikeyB 的回答进行编辑:
我可以看到我的问题是如何为模棱两可留下余地的,所以再次出现,希望以更有意义的方式表达。
在客户端-服务器环境中,服务器故障是灾难性的,因为如果服务器发生故障,所有客户端都将关闭。鉴于该设计特征,为什么一些高度关键的信息、库存、财务和医疗系统实施客户端-服务器架构而不是点对点?
请注意,我不是在问“如何减轻服务器故障的风险?” 我在问“点对点架构是降低服务器故障风险的有效方法吗?” 为什么或者为什么不?网络拓扑是否影响应用程序的设计?点对点是否会引入数据损坏或结果模棱两可的可能性?
以下是对等网络拓扑中可能发生的实际示例吗?
DeviceA、DeviceB 和 DeviceC 是对等网络上的计算机,它们共享一个称为代理 R 的公共代理。每当一个对等需要检查 R 可用多少时,它就会与其他对等同步并计算可用性。一天下午 1 点左右,实验室技术人员将一瓶 R 插入 DeviceB。DeviceB 立即与 DeviceC 同步,并确认 DeviceC 从未消耗过该瓶子中的 R。然而,DeviceA 自中午以来一直没有响应 ping。DeviceB 能否可靠地计算出瓶中可用 R 的数量?
我是一名软件工程师,我将编写允许这些设备通过网络共享数据的应用程序。老实说,我对我提出的问题有意见,但是我的客户不相信我的经验。我想知道我的同龄人的经验,因此我在这里发帖。我不想把话放在任何人的嘴里,所以我尽量不要笼统地解释这个问题。