我很好奇用于构建系统的技术,确保没有数据丢失是最重要的。举一个简单的例子,金融机构做了什么来确保当账户之间的资金转账时,一旦从一个账户中提取资金,就毫无疑问地将其存入另一个账户。我不是在寻找像数据库事务这样的特殊技术,而是在寻找更大,更具架构性的概念,比如服务器出现故障时数据的保存方式,或队列空间不足等等。
如果有人能指出我的书籍或文章,我会非常感激。
答案 0 :(得分:1)
您应该阅读有关数据加密的Automated Teller Machine,Online transaction processing和其他主题,如果您正在考虑使用网站,请考虑使用HTTPS。
答案 1 :(得分:0)
基本技术是消除任何单点故障。在您的设置中可能出现故障的任何内容都需要进行后备或多备份。从多个交换机,服务器,UPS,硬盘等...数据库不断被复制,数据备份和存储在现场,以防火灾或其他可能影响建筑物的灾难。
答案 2 :(得分:0)
所有这些都归结为在两个地方拥有相同的数据;从数据承诺到数据承诺之前保存缓存的代码,一直到服务器冗余。
确保不丢失内容的唯一方法是拥有多份副本。
答案 3 :(得分:0)
您可能希望阅读XA或X / Open事务,这些事务可以协调多个系统(包括数据库,队列等)到类似ACID DB的事务中。
我没有使用它,但我听说它可能是昂贵的延迟和计算。但是,您的数据完整性值多少呢?
答案 4 :(得分:0)
就银行示例而言,每家银行都会为每笔交易记录一份记录,说明了多少以及在何处以及从何处,在多少以及他们的时间顺序
以便稍后如果出现问题,您可以比较两个事务日志,如果它们不匹配,您可以识别丢失的事务
这也解决了一家银行不能信任另一家银行为其保存记录的问题
当他们交叉检查时,这几乎是一个分布式事务协议
答案 5 :(得分:0)
正如您所提到的,有各种机制(如交易)可确保基于软件的“握手”可靠并成功完成。
架构 - 是的,有两个东西副本给你redundencey,这有助于不丢失东西。除此之外:
我曾在一个现成的文档管理系统的解决方案架构上工作;没有数据丢失是重要的驱动因素。该系统在全国范围内推广,因此在为本地用户提供服务的“区域”缓存和实际“数据中心”方面具有多站点。一些兴趣点:
我猜这些都不是以软件为中心的,但我确实认为“我们”使用的所有优秀软件架构/设计原则都有助于指导我的思考。