欢迎来到科颖科技!

已阅读

建设网站稳定性思路

作者:柠檬味      来源:柠檬味      发布时间:2019-01-20 17:30

一、架构阶段的稳定性建设项目

image.png

一个网站要有好的稳定性,必须在架构设计阶段就做长远考虑,就像建房子要先打好地基一样,否则楼建得越高越危险。建设高稳定性的架构必须注意以下几点。

避免单点。高可用架构设计的第一条就是要避免单点,从概率出发来看,无论是机器还是人,没有什么东西是不会犯错的,尽量避免某个完整的环节成为单点是架构设计的原则。但是,在某些场景中,有些功能必须放在同一个应用中,例如统一登录、网关、安全过滤等,此时要保证尽量按照人群来划分,不要在逻辑上出现单点;或者尽量把服务拆成组件迁到不同的端上执行,例如,可以把安全服务作为一个模块集成到Nginx或者应用机器中,而不是把它做成一个远程服务接口。

分组隔离。把应用拆得更细一点,不同的功能模块做成单独的分组,每个分组占用一部分机器集群,这样可以做到服务分组隔离,避免不太重要的分组对重要分组的影响。现在非常流行的微服务就是一种非常好的分组隔离的实践。异步化。在系统设计中要让尽可能多的远程调用异步化,这也是一项重要原则。很多时候会因为一个不太重要的功能的强依赖拖垮了整个应用,所以要尽量把不太重要的依赖改成异步调用,避免影响主调用链路的稳定性。

异地容灾。考虑到很多不可抗力因素的影响,我们需要设计网站的异地容灾甚至全球部署策略,这些不可抗力的事件往往会影响网站的整个架构,必须做长远打算

二、编码阶段的稳定性建设

编程阶段的稳定性建设尤其重要,一个好的程序在编码阶段就决定了整个应用系统的质量,所以在编码阶段要注意下面一些规则。

错误捕获。一个优雅的系统必然有一套优雅的异常处理机制,在适当的地方如1O处理、远程调用、多线程等关键处捕获异常非常重要,防御性编程可以更好地保证系统的健壮性。

异步线程。在一些批处理调用的地方采用异步线程可以保证主请求的正常返回,同样也可以做到部分的隔离,防止部分请求挂起整个应用。

超时处理。在远程调用或者调用外围设备时,非常有必要设定超时时间,这样可以保证所有的请求都有一个可预知的返回结果。

。限流保护。每个应用都有一个承载极限,超过这个极限就会带来很大的不确定性,因此,设置自我保护机制可以保证程序的健壮性。

三、测试阶段的稳定性建设

image.png

测试是程序上线前的最后一道保障,测试也是验证程序是否达到预期功能的手段,在本阶段要注意以下事项。

自动化对比测试。对比测试就是用线上真实的环境和数据与预发环境对相同的业务接口做返回值的比较,以此判断新上线的代码是否符合预期。Beta测试。在线上的真头坏境中远取着个言机器上的数据,以此验证程序是否正确。

(编辑:柠檬味)