简而言之:冗余是指在基础设施的每一层都配备备用组件,以便当某部分发生故障时,备用组件能自动接管。在区块链领域,跨节点、跨区域、跨云服务商以及跨客户端实现的冗余,正是区分生产级系统与脆弱系统的关键所在。
“冗余”的真正含义
冗余是指在正常运行期间,运行的资源量超过实际严格需求的一种做法。这些额外的容量并非浪费,而是作为一种保障。
不妨把它想象成一架飞机。商用飞机配备了冗余发动机、冗余液压系统和冗余导航仪器。这并不是因为预计所有系统会同时发生故障,而是因为任何单个系统都可能在任何时候发生故障。这些冗余系统确保了即使某个部件出现故障,飞机仍能继续飞行。
基础设施冗余遵循同样的原理。你在额外的区域、额外的云服务提供商上运行额外的节点,并不是因为你当下就需要所有这些节点,而是为了确保当其余节点出现故障时,其中任意一部分仍能继续运行。
冗余的各个层次
生产级区块链基础设施需要在多个层级上实现冗余。每个层级针对不同类型的故障。
节点冗余是最基础的机制。对于给定的区块链,与其依赖单个节点,不如运行一组节点。如果其中一个节点崩溃、同步滞后或开始返回错误,该组中的其余节点将接管流量处理。这可以防范单个硬件故障、特定节点进程中的软件漏洞,或单台机器上的资源耗尽。
区域冗余可防范大规模故障。如果您的所有节点都运行在同一个 AWS 区域内,而该区域发生服务中断(这种情况比大多数人想象的要频繁),那么所有服务都会同时瘫痪。将节点分布在多个地理区域,可确保弗吉尼亚州发生的局部事件不会影响您在法兰克福或新加坡的用户。