前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么分布式系统会失败?

为什么分布式系统会失败?

作者头像
用户5166556
发布2024-02-29 13:07:59
1070
发布2024-02-29 13:07:59
举报

分布式系统很棘手——很容易做出错误的假设,从而导致未来出现问题。早在 90 年代,计算机科学家 L. Peter Deutsch就发现了几种常见的误解或“谬误”,这些误解使从事分布式系统的工程师陷入困境。令人惊讶的是,这些谬论在今天仍然适用:

  • 网络是可靠的:假设网络 100% 可靠是有风险的。网络可能并且确实会以各种方式失败。
  • 延迟为零:虽然我们可能希望我们的网络没有延迟,但这在物理上根本不可能——即使光传播距离也需要时间。忽略数据传输中不可避免的延迟可能会导致对系统性能的期望不切实际。
  • 带宽是无限的:这忽略了数据传输速率的物理和实际限制。
  • 网络是安全的:难怪安全是一个不断发展的行业。假设固有的安全性可能会导致保护措施中的漏洞和监督。
  • 拓扑不变:这忽略了网络配置的动态特性。
  • 只有一个管理员:一种简化,没有考虑管理分布式系统的复杂性。
  • 数据传递成本为零:忽略数据移动所需的资源。
  • 网络是同质的:忽略网络系统和标准的多样性。

如果不认识和解决这些谬论,可能会导致分布式系统出现设计缺陷、性能问题和安全漏洞。在下面的部分中,我们将分解这些误解,探讨它们的含义以及如何减轻它们在现实应用中带来的风险。

谬误一:网络可靠

“网络是可靠的”这一信念是分布式计算领域中最常见和最危险的假设之一。这种谬论导致低估网络故障的可能性和影响。事实上,网络很容易受到一系列问题的影响,从临时中断和数据包丢失到由硬件故障、软件错误或自然灾害等外部因素引起的更严重的中断。

影响:

  • 系统停机:当不可避免的故障发生时,依赖完美的网络可能会导致严重的系统停机。
  • 数据丢失或损坏:如果没有对网络问题进行可靠的处理,数据可能会在传输过程中丢失或损坏。
  • 安全漏洞:假设网络可靠性可能会导致忽略必要的安全协议,从而可能使系统遭受攻击。
  • 用户体验差:不考虑网络不可靠性的应用程序可能会因性能不一致而让用户感到沮丧。

缓解策略:

  • 冗余:实施冗余网络路径和故障转移机制,以在网络故障期间维持系统功能。
  • 重试和超时:将智能重试机制与指数退避和合理的超时设置相结合,以处理瞬态网络问题。
  • 确认机制:使用确认消息来确认数据的成功接收。
  • 监控和警报:建立全面的监控和警报系统,及时发现并响应网络问题。
  • 负载均衡:利用负载均衡器在网络中均匀分配流量,防止任何单点过载。
  • 缓存:采用缓存策略,让用户在短暂的网络中断期间能够立即访问数据。
  • 数据验证和纠正:实施校验和和纠错协议以确保数据完整性。
  • 优雅降级:设计系统以在遇到网络问题时优雅地降级功能,尽可能保持服务水平。

通过承认网络固有的不可靠性并为此做好准备,分布式系统可以变得更加健壮、有弹性和用户友好。

谬论2:延迟为零

“延迟为零”的假设是分布式系统中常见的疏忽。这种谬论忽略了数据在网络上传输所花费的时间。实际上,延迟受到多种因素的影响,包括物理距离、网络带宽、路由器跳数和连接质量。即使在高速网络中,延迟也永远无法完全消除。

影响:

  • 性能问题:未考虑延迟而设计的应用程序可能会出现性能不佳的问题,尤其是在需要实时数据处理的场景中。
  • 用户体验下降:在线游戏或视频会议等交互式应用程序可能会变得极其缓慢,从而影响用户满意度。
  • 系统同步不准确:时间敏感的操作可能会因意外延迟而失败或产生错误结果。
  • 资源利用效率低下:忽视延迟可能会导致资源分配不理想,因为系统可能会不必要地等待响应。

每个程序员都应该知道的延迟数字

缓解策略:

  • 地理分布:将服务器和数据中心放置在距离最终用户更近的地方,以最大限度地减少物理距离,从而减少网络延迟。
  • 协议优化:使用高效的通信协议,最大限度地减少开销并针对特定用例进行优化。
  • 异步通信:实现异步操作以防止系统在等待响应时停止。
  • 缓存策略:在离用户更近的地方使用缓存,以减少频繁的远距离数据检索的需要。
  • 负载均衡:利用考虑地理位置和当前网络延迟的智能负载均衡。
  • 预测性获取:预测用户需求并预取数据以最大限度地减少感知延迟。
  • 性能测试:定期在实际网络条件下测试系统,以了解和优化延迟影响。
  • 用户界面设计:设计 UI 以便向用户提供即时反馈,掩盖潜在的网络延迟。

承认并考虑网络延迟对于设计响应灵敏、高效且用户友好的分布式系统至关重要。通过实施这些策略,工程师可以显着减轻延迟对系统性能和用户体验的影响。

谬论三:带宽是无限的

这导致忽视网络数据传输能力的限制。这种误解可能会导致设计的系统期望高数据吞吐量,而不管实际的网络功能如何。实际上,带宽是一种有限的资源,受到网络基础设施、流量拥塞和最终用户设备功能的影响。

影响:

  • 瓶颈和速度下降:在设计时没有考虑带宽限制的系统可能会遇到瓶颈,导致速度显着下降。
  • 数据处理效率低下:过高估计带宽可能会导致不必要地发送大量数据,浪费网络资源并影响其他操作。
  • 可扩展性差:不考虑带宽限制的系统可能会面临扩展以容纳更多用户或数据的挑战。
  • 用户体验问题:带宽有限的网络上的用户可能会遇到延迟、中断甚至服务不可用的情况。

缓解策略:

  • 数据优化:压缩数据以减小大小并优化格式以实现高效传输。
  • 自适应技术:实施自适应流媒体和数据传输技术,以适应可用带宽。
  • 负载均衡:使用负载均衡在可用路径上有效分配网络流量。
  • 带宽限制:智能地限制带宽使用,以避免网络容量过大。
  • 流量优先级:对关键数据流量进行优先级排序,以确保基本服务在高负载期间不受影响。
  • 监控和分析:持续监控网络性能并使用分析来了解和管理带宽使用情况。
  • 可扩展架构:设计一个可以优雅地适应不同带宽条件的系统架构。

通过考虑带宽的有限性并实施这些策略,即使在不同的网络条件下,分布式系统也可以设计得更加高效、可靠和用户友好。

谬论四:网络是安全的

这种谬论导致对安全措施的自满,忽视了网络环境中存在的无数威胁。网络安全不是固有的,而是需要深思熟虑和持续的努力。威胁可能来自多种来源,包括外部攻击、内部漏洞,甚至是无意的用户操作。

影响:

  • 容易遭受攻击:不安全的网络容易遭受各种类型的网络攻击,例如黑客攻击、网络钓鱼和 DDoS 攻击。
  • 数据泄露:网络安全性不足可能导致未经授权的访问和敏感数据被盗。
  • 合规性问题:忽视网络安全可能会导致不遵守监管标准,从而导致法律和财务后果。
  • 失去信任:安全事件可能会损害组织的声誉并削弱用户的信任。

缓解策略:

  • 加密:对传输中和静态的数据使用强加密,以防止窃听和数据泄露。
  • 身份验证和授权:实施强大的身份验证机制并确保严格的授权控制来规范访问。
  • 定期安全审计:定期进行安全审计和漏洞评估,以识别和纠正潜在的弱点。
  • 防火墙和入侵检测系统:部署防火墙和入侵检测系统来监控和保护网络流量。
  • 安全培训:对员工和用户进行安全最佳实践以及保护网络资源的重要性的教育。
  • 最新软件:保持所有网络软件(包括操作系统和应用程序)更新以修补已知漏洞。
  • 网络分段:对网络进行分段以遏制违规行为并限制对敏感区域的访问。
  • 事件响应计划:制定并维护事件响应计划,以快速有效地解决安全漏洞。

承认网络固有的不安全性并实施这些策略对于维护分布式系统及其数据的机密性、完整性和可用性至关重要。

谬论5:拓扑不变

这是分布式计算中的一种误解,它忽视了网络拓扑的动态性质。网络拓扑,即计算机网络中各种元素(链路、节点等)的排列,不是静态的。由于网络扩展、硬件升级、中断或重新配置,可能会发生变化。当发生不可避免的变化时,在静态拓扑假设下设计系统可能会导致重大问题。

缩放中的拓扑变化

影响:

  • 系统刚性:为固定拓扑设计的系统可能缺乏适应变化的灵活性,从而导致故障或性能不佳。
  • 维护挑战:在严格设计的系统中,定期更新或修改可能会变得麻烦且有风险。
  • 可扩展性问题:不考虑拓扑变化的系统可能难以随着网络的增长或发展而有效地扩展。
  • 资源利用效率低下:固定拓扑假设可能导致资源分配不佳,因为系统无法动态调整到最有效的路径或节点。

缓解策略:

  • 动态配置:实现允许系统自动适应网络拓扑变化的机制。
  • 定期监控和更新:持续监控网络拓扑并定期更新,以确保系统与当前网络状态保持一致。
  • 权力下放:在可行的情况下通过分散职能和资源来避免单点故障。
  • 冗余:在网络路径和节点中加入冗余,即使部分网络发生变化或发生故障也能维持功能。
  • 灵活的协议:使用可以处理拓扑变化而不会造成重大中断的网络协议。
  • 测试可变性:在不同的拓扑条件下定期测试系统,以确保针对变化的鲁棒性。
  • 文档和沟通:维护网络拓扑的清晰文档,并确保团队成员之间有关变更的有效沟通。

通过承认网络拓扑变化的不可避免性并为此做好准备,分布式系统可以变得更具适应性、弹性和高效。

谬论六:只有一位管理员

“只有一个管理员”的信念是分布式计算中的一个谬论,它过度简化了分布式系统的管理和控制。实际上,分布式系统通常跨越多个管理域,每个管理域都有自己的策略、过程和管理风格。假设单个管理控制点可能会导致系统设计中的严重误判,特别是在与治理、安全和资源共享相关的领域。

影响:

  • 协调挑战:多个管理员意味着协调变得更加复杂,单方面决策往往不切实际。
  • 安全策略冲突:跨管理域的不同安全策略和实践可能会导致不一致和漏洞。
  • 资源管理问题:当涉及多个管理员时,有关资源控制和分配的假设可能会被误导。
  • 合规性并发症:在多管理员环境中遵守各种法规和政策要求可能具有挑战性。

缓解策略:

  • 分布式治理:建立适应所有管理域的输入和决策的治理模型。
  • 统一安全标准:努力制定一套通用的安全标准和实践,这些标准和实践在所有管理领域都得到认可和适用。
  • 灵活的资源分配:实施灵活的资源管理系统,可以适应不同管理员的需求和策略。
  • 清晰的沟通渠道:确保各个管理员之间清晰有效的沟通渠道,以促进协调和冲突解决。
  • 分散控制机制:尽可能使用分散控制机制,以允许不同管理域内的自治。
  • 综合文档:维护涉及多个管理域的系统策略、过程和协议的详细文档。

认识到分布式系统中存在多个管理员的现实并采用这些策略可以极大地增强这些复杂环境的管理、安全性和整体功能。

谬论7:数据传递成本为零

分布式计算中的一个常见谬误,忽视了跨网络数据移动所需的资源。这种谬论忽略了与带宽使用、延迟和数据传输所需的能量相关的成本。实际上,传输数据,尤其是长距离传输大量数据,会产生巨大的成本,并且会影响系统性能和效率。

影响:

  • 资源效率低下:忽略传输成本可能会导致网络资源(例如带宽和能源)的使用效率低下。
  • 运营成本增加:忽视数据移动成本可能会导致意外的高运营费用,尤其是在涉及数据传输费用的云服务中。
  • 性能瓶颈:低估传输成本可能会导致系统性能瓶颈,特别是在频繁传输大量数据时。

缓解策略:

  • 数据本地化:使数据尽可能靠近其主要用户,以最大程度地减少不必要的数据移动。
  • 带宽管理:监控和管理带宽使用情况,以优化数据传输流程并降低成本。
  • 数据压缩:采用数据压缩技术来减少传输的数据大小。
  • 成本感知架构设计:设计系统架构时重点关注最小化和优化数据传输。
  • 选择性数据移动:有选择性地确定需要移动哪些数据以及何时移动,避免不必要的数据传输。

通过承认与分布式系统中的数据传输相关的实际成本并实施这些缓解策略,可以构建更高效、更具成本效益且环保的系统。

谬误八:网络是同构的

“网络是同构的”这一假设是分布式计算中的一个谬论,它忽略了网络环境的多样性。这种谬论导致人们期望网络的所有部分都将表现相似并支持相同的协议、性能级别和功能。实际上,网络由各种设备、技术和配置组成,每种设备、技术和配置都有其自身的特点和局限性。

AWS Direct Connect 与 VPN

例如,上面摘自这篇文章的图片显示了 AWS VPN 和 Direct Connect 在性能、成本、时间和安全性方面的各种差异。

影响:

  • 兼容性问题:当系统遇到不同的网络技术时,同构网络假设可能会导致兼容性问题。
  • 性能可变性:忽视网络多样性可能会导致不可预测的性能,因为不同的网段可能具有不同的容量和速度。
  • 可扩展性挑战:当需要适应不同的网络环境时,系统的扩展变得更加复杂。
  • 错误处理不足:系统可能无法处理异构网络中可能发生的一系列错误。

缓解策略:

  • 跨网络兼容性:设计系统和协议以与一系列网络技术和标准兼容。
  • 自适应性能调优:实现根据当前网络环境动态调整性能的机制。
  • 广泛的测试:在各种网络条件下测试系统,以确保稳健性和适应性。
  • 灵活的架构:构建灵活的模块化架构,可以轻松适应不同的网络设置。
  • 详细的网络分析:定期分析网络以了解其组成并相应地调整系统。
  • 强大的错误处理:开发全面的错误处理,可以管理异构网络中出现的各种故障和问题。
  • 用户感知优化:根据不同用户群的具体网络特征优化系统性能。
  • 持续监控和更新:持续监控网络性能并更新系统以应对不断变化的网络环境。

认识网络环境的多样性并采用这些策略有助于构建更具弹性、适应性更强且能够跨异构网络高效运行的分布式系统。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-18,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 云原生技术爱好者社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 谬误一:网络可靠
    • 影响:
      • 缓解策略:
      • 谬论2:延迟为零
        • 影响:
          • 缓解策略:
          • 谬论三:带宽是无限的
            • 影响:
              • 缓解策略:
              • 谬论四:网络是安全的
                • 影响:
                  • 缓解策略:
                  • 谬论5:拓扑不变
                    • 影响:
                      • 缓解策略:
                      • 谬论六:只有一位管理员
                        • 影响:
                          • 缓解策略:
                          • 谬论7:数据传递成本为零
                            • 影响:
                              • 缓解策略:
                              • 谬误八:网络是同构的
                                • 影响:
                                  • 缓解策略:
                                  相关产品与服务
                                  负载均衡
                                  负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                                  http://www.vxiaotou.com