高可用性架构

时间:2011-01-19 15:32:41

标签: sql database cassandra high-availability riak

我有这种情况:

您有一条24/7全天候运行的工厂生产线。停机时间非常昂贵。 控制所有不同部分的软件必须使用共享形式的数据库存储 这样做的主要原因是要知道工厂处于哪种状态。例如,某些产品在使用同一套设备时可以混合使用,而其他产品则可以混合使用。

要求:

  • 我希望软件能够在一部分中检测出错误 工厂必须导致一些机器停机超过1公里。因此plc中的stoing数据不是一种选择。
  • 经常更新和升级工厂环境
  • 负载(以计算机术语表示)将非常低。

系统每天处理一些hunderd任务,进行计算/检查,然后发送工厂机器的指令。系统在大多数时候都会很无聊。最重要的要求是中央计算机系统必须正确且始终有效。

我正在考虑使用基于发电机的数据库(riak或cassandra),其中数据被写入多台机器,每台机器都有整个数据库

当一个系统发生故障时,它将会失效。当表更改并且此主从属更难配置时,传统的sql数据库可能更难以升级。

你的解决方案是什么?

网络已经变得多余且大多数其他单点故障。数据库系统至关重要,因为数据库停机时间意味着整个工厂的停机时间不仅仅是可接受的机器之一。

  • 如何解决共享状态问题。
  • 数据库中的复杂性不会成为问题。我将更像一个简单的键值存储来获取最新和正确的数据。

3 个答案:

答案 0 :(得分:3)

我不认为这是一个sql / nosql问题。所有的Postgres,MySQL和MS SQL Server都有某种集群或热备份选项。

配置是一次性的事情,但是任何NoSQL选项都会让你头疼从上到下的代码,如果你试图在一个已经放弃关系的平台上做一些基本的关系像亚马逊或Facebook这样的东西。配置一次,编码永远。

因此,我会坚持使用经过验证的真实解决方案,并进行热门复制。

这也提供了升级解决方案。典型的顺序是“故障转移”到待机状态,升级主设备,翻转到主设备,升级备用设备,然后恢复。具体细节当然具体情况。

答案 1 :(得分:2)

使用本机支持此类内容的已建立的RDBMS

你真的想在任何时间点可以保持一致的事情上运行一个24/7任务关键系统吗?

答案 2 :(得分:1)

您需要避免单点故障。

我们的dbms世界中的所有主要参与者都提供了至少一种避免使数据库本身成为单点故障的方法。我可能会质疑他们是否能够快速地为您的制造流程传播变化。 (或者数据更新不是真正的问题吗?无法从您的问题中真正说出来。)我在制造业中的数据库工作仅限于汽车和化学工业。微秒对他们来说并不重要。

但是dbms不是唯一可以失败的东西。 “始终在工作”意味着客户也必须始终工作。客户端硬件,与网络的连接,网络和网络服务器本身都可能有单点故障。容错服务器具有多个电源,多个NIC等。

“永远在工作”真的很贵。我觉得数据库不会成为贵公司面临的最大问题。