前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提高系统可用性

提高系统可用性

作者头像
全栈程序员站长
发布2022-09-14 15:37:45
4580
发布2022-09-14 15:37:45
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
复制
                                     如何提高系统可用性 


    一. 时刻考虑应对故障
    
        1.设计
  通过使用一些设计模式,例如捕获底层异常、重试逻辑和断路器,可以帮助你捕获错误并尽可能避免影响其他功能。这样,你就能够限制问题的影响范围,即使应用程序的某些部分出现问题,依然能够提供其他一些有用的功能。

        2.依赖
   断路器模式在处理依赖故障时非常有用,因为它们可以降低依赖故障对你的系统的影响。如果没有断路器,你可能会因为依赖故障而降低系统的性能(例如,需要一个很长的超时机制来检测故障)。而使用了断路器,你可以“放弃”并停止使用某个依赖,直到你确认它已经恢复了正常工作。

        3.用户
   有些时候,拒绝式服务可能来自于“友方”。

    二.时刻考虑如何伸缩

  当你构建系统时,不要只考虑当前的流量,要考虑未来的流量。
  具体一点,这可能意味着:

  设计出能够增加数据库数量和容量的架构。

  考虑限制你的数据伸缩的原因。当数据库达到容量极限的时候会发生什么?你需要确认这些限制因素并在到达极限之前解决它们。

  你应当能够很容易地添加额外的应用程序服务器。这通常需要仔细考虑在何处和如何来维护状态,以及流量是如何路由的。注意将静态流量导向离线提供方。这样你的系统只需要处理必要的动态流量。使用外部的内容分发网络(CDN)不仅可以降低网络需要处理的流量,也能够利用CDN 的伸缩效率将静态内容更快地分发给用户。

  考虑是否可以静态生成一些动态资源。通常来说,看上去动态显示的内容实际上大多数是静态的,并且生成静态内容可以让你的应用程序提高可伸缩性。这种“应该静态的动态资源”有些时候隐藏在你想象不到的地方。

     三.缓和风险 

  保持系统高可用需要消除系统中的风险。当系统发生故障时,通常我们已经在这之前将故障原因确定为了风险。因此,确定风险是提高可用性的一个重要方法。
  所有的系统中都存在以下这些风险:

     *  存在系统崩溃的风险
     *  存在数据库崩溃的风险
     *  存在返回结果不正确的风险
     *  存在网络连接失败的风险
     *  存在新部署的软件功能出现故障的风险

   保持系统高可用需要消除风险。但是当系统变得越来越复杂时,消除所有风险也变得越来越不可能实现。保持一个大型系统高可用,更多的是来管理系统的风险,知道这些风险是什么,哪些风险是可接受的,以及你能够做什么来缓和风险。

我们称之为风险管理,它是构建高可用系统的核心内容。

风险管理中的一个部分是风险缓和。风险缓和指的是当问题发生时,我们知道如何去尽可能降低问题所带来的影响。缓和意味着即使当服务和资源不可用时,依然尽可能确保你的系统以最好的、最完整的状态工作。风险缓和需要考虑哪些事情可能会出错,并且立即制订相应的计划,以便当问题发生时能够提供相应的解决方案。

代码语言:javascript
复制
    四.监控可用性

    除非你看到问题发生,否则你不会知道应用程序中存在着问题。你应当确保对应用程序进行了适当的监控,以便可以从外部和内部两个视角来观察应用程序的运行状况。
    监控的程度取决于应用程序的特点和要求,但是通常必须具备以下这些监控。
  • 服务器监控   监控服务器的健康状况,并且确保它们始终在有效运行。
  • 配置变化监控   监控系统配置的变化,以便确定它们对应用程序的影响。
  • 应用程序性能监控   深入了解你的应用程序和服务,确保它们按照预期运行。
  • 人为测试   从用户的角度来实时检测应用程序的运行情况,以便在用户真正发现问题之前发现它们。
  • 报警   当问题发生时通知相关人员,以便使问题可以得到快速有效的解决,将对用户的影响降低到最小。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158107.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年7月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档