做视频网站视频,海南网络广播电视台少儿频道,免费logo设计 u钙,wordpress淘宝客插件破解版本文来自网易云社区作者#xff1a;施勇我们在开发一个复杂系统的时候#xff0c;常常会强调服务化、模块化、松散耦合等要求以达到高可用、高可靠及高性能等目的#xff1b;比较少的人会考虑到系统的方便部署配置和运维#xff0c;至少是在刚开始设计系统的时候很少考虑到…本文来自网易云社区作者施勇我们在开发一个复杂系统的时候常常会强调服务化、模块化、松散耦合等要求以达到高可用、高可靠及高性能等目的比较少的人会考虑到系统的方便部署配置和运维至少是在刚开始设计系统的时候很少考虑到运维部署方面的需求。这样的复杂系统在正式投入使用之后常常会因为部署配置和运维等方面问题造成系统不稳定甚至出现异常。根据整个系统的生命周期运维占据的比例和时间远远大于开发设计的时间当然是排除了一些夭折的系统。所以在开发设计系统的时候需要加强对于运维方面的重视。一个好的系统除了受到产品用户的欢迎之外还需要得到运维人员的认可才能让系统更加健康地发展。反之如果一个系统运维性较差那么运维人员和开发人员可能会逐渐形成隔阂进而影响整个系统的服务。结合自己在开发和运维方面的经历以及多年被无数短信告警骚扰的烦恼谈谈在开发设计一个系统的可运维性方面需要注意的问题。一、配置和部署复杂系统在开发上线及运维的过程中肯定需要经历各个不同的阶段开发测试、QA测试、上线前测试、上线、后续版本更新等。不同阶段和环境下系统都需要有不同的配置对于配置和部署最好能做到以下几点提供详细的配置和部署手册。提供适用典型场景的各个配置模板。提供灵活的关键参数可配置以适应各类复杂的运行环境尽可能提供在线动态修改的方式。提供自动化的部署方案或脚本在异常情况下能自动重启恢复。各类系统实际运维的过程中经常会出现下面的情况需要尽量排除针对线上环境系统未能提供足够的参数配置以适应其负载或优化服务。系统提供了足够多的灵活可配置的参数但未针对线上环境进行优化配置。系统程序写死了配置目录路径等部分参数。二、监控告警一个复杂系统在实际运行过程中难免会出现各类无法预见的问题。为了让系统在这种异常环境下还能提供稳健的服务除了系统设计的容错和健壮性之外还需要的是无处不在的监控和及时的告警。类似天网的监控复杂系统至少需要监控系统整体服务的可用性、稳定性和性能指标。外部依赖服务的可用性和稳定性若外部依赖服务影响自身服务的性能指标需要对外部依赖服务做好性能监控。系统内部各个模块的可用性、性能指标以及各模块衔接的连续性。系统异常日志的监控。系统后台线程的健康状态这点很容易被忽略。系统部署所在服务器和网络的健康状态。系统需要提供对各项监控内容的查询显示以便运维人员能够随时了解系统的运行状态此外最好能够提供查询API方面运维集成。智能的告警策略当一个复杂的系统出现问题时需要及时报警通知到相关的运维人员。在告警策略设计时需要考虑到不同的告警等级根据系统服务异常的原因和影响的范围划分为不同等级并便指导不同的告警策略。多样的告警方式至少支持IM、邮件和手机短信的三种方式告警。不同层级的告警接收人员。告警等级描述告警方式和策略告警接收人员事故级系统整体服务不可用或异常造成业务损失IM、邮件和手机短信持续短间隔告警运维、开发和产品业务以及各自部门领导故障级系统服务不稳定未对业务造成明显影响IM、邮件和手机短信持续告警运维、开发以及各自负责人异常级故障前兆系统可能在不久将来出现故障IM、邮件固定周期告警运维和开发人员缺陷级系统已知的缺陷目前不会对整体服务产生影响邮件当系统触发缺陷时告警运维或开发人员告警程序设计上高等级的告警需要被优先处理不能因为低等级告警过多而造成高等级告警被延迟。同时需要支持对同类告警的暂停报警功能暂停一段时间后自动恢复监控报警便于运维人员计划性的维护操作。告警内容的可读性对于运维人员也非常重要特别是手机短信告警的内容应该能够让运维人员马上定位到是哪个服务器所在的服务出现了哪类问题最恼人的告警短信是各个环境系统都是相同的内容 xx服务出现异常请检查邮件和log 。设计良好的系统需要有接入统一的报警监控中心的能力。三、故障处理一个复杂系统需要提供良好的故障处理机制包括故障预见、故障现场保留、故障智能处理等。故障预见系统在运行过程中对其利用的资源和自身的运行状态做好监控如果预见系统可能出现不稳定等情况需要加以处理和告警。系统可预见的故障可能有所处的服务器硬件资源利用率上升不久将来会到达上限需要及时告警。系统设计的有限制的资源的使用量将达到配置限额需要及时告警。系统处理效率突然降低及时告警。一个容错备份的分布式系统需及时屏蔽处理效率地下的组件用其它备份的组件代替。系统接收处理的请求量突升或突降及时告警。故障现场保留当系统出现故障后需要对故障现场做好保留便于后续分析、处理和改进。故障现场保留的方式通常可以有日志。最简单直接的方式但在日志输出格式和内容方面需要做好设计既要保证对系统性能影响和资源占用足够小又要保留足够的信息供运维人员和开发人员排查。性能和资源监控平台。详细记录服务器运行状态和各类资源的使用情况可以了解故障发生时候的服务器硬件运行状态。故障智能处理一个复杂系统必须要做到可容错和故障的自动处理及恢复。如果系统的可容错和故障自动恢复做得还不完善情况下至少需要提供可人工运维处理的接口。最怕的是系统做了部分的故障自动处理但处理机制有问题并且没有提供有效的人工处理方式去解决这个简直是运维人员的噩梦一个系统在交付运维的时候运维手册中必须包含各类故障的详细处理方式。系统可容错和故障自动恢复典型的场景有当某个依赖的底层服务异常情况下系统自动屏蔽依赖此服务的请求或通过升降级方式绕过异常底层服务若不行也必须在底层服务恢复正常后系统能立即自动恢复。系统各个模块之间的容错性包括部分模块异常或者模块衔接出现短暂问题当问题解决后都需能立即恢复。包含多备份组件的系统当少数备份组件出现异常时候其它备份需要立即接管其服务并能够自动恢复到正常状态。系统自动故障恢复需要尽可能以代价小的方式来恢复并做到整体资源可控。当系统出现故障时需要及时告警通知运维和开发人员系统故障及对应的处理方式。如果故障自动恢复需要一定时间恢复的进度也需要定期报告。四、小结一个可运维和方便运维的系统不仅有助于运维人员快速掌握和上手运维又能及时发现系统中可能存在的不稳定的异常的因素从而促进整个系统更好更健康的发展壮大。系统的可运维性不单单是系统上线之后要考虑的问题而是要在系统设计之初就应该关注的一面并且是贯穿到开发设计的各个阶段中的。以上仅仅是个人对可运维系统的一点体会希望以后能多多出现这样的系统助更多的运维和开发人员脱离疲于奔命救火的苦海。网易云免费体验馆0成本体验20款云产品更多网易研发、产品、运营经验分享请访问网易云社区。相关文章【推荐】 基于RedisKafka的首页曝光过滤方案【推荐】 知物由学 | AI时代那些黑客正在如何打磨他们的“利器”一转载于:https://www.cnblogs.com/163yun/p/9674268.html