架构师训练营十一周作业
导致系统不可用的原因有哪些?保障系统hao'jin稳定高可用的方案有哪些?
结合当前我的工作环境,导致系统不可用的原因大致可分为系统自身原因和关联环境。
我负责的系统,当前包含app端、pc端。pc端又分为实体pc和云桌面环境。
因此云桌面环境到系统的网络不通、云桌面对应的资源耗尽都会导致系统不可用。
除开云桌面的环境,pc和app是否可用主要是系统自身的原因。
我们系统当前拆分为4个子系统,前端都由F5作为代理,每个子系统有2-8个服务器组成,按照不同的服务划分在不同的网络环境(内外网),各网段之间是不能直接互通的,需要开通防火墙或使用集团自研的调用平台,以类似微服务的方式调用。因此网络环境成为一个很主要的影响系统可用性的因素,曾经就出现过网络组调整网络策略导致系统大堵车的情况。另外自研平台也是一个因素,包括平台是否可用,是否大量高频次调用都会导致系统不稳定,上个月还出现过由于大量埋点调用平台,导致服务阻塞限流的情况。
最后是数据库方面,数据库基本是所有系统都关注的薄弱环节,尤其我们使用的是pg库,数据库在处理函数的能力尤其薄弱,不当的sql很容易导致服务缓慢,进而造成请求量暴涨,进一步压垮服务。
针对上述的问题,我们对网络的情况使用多机房不同出口网段(深圳、上海、成都等),可以针对网络异常切换服务器;
由于使用了F5,因此负载的处理不会是瓶颈,所以我们的运维同事,可以通过挂载docker镜像的方式,处理暴涨的服务请求,延缓服务器宕机的时间,给开发工程师时间排查问题;
数据库方面我们在开发的时候,会进行相关的开发走查、部署平台自动按照规范进行扫描、生产环境慢sql监控等方式抓出问题解决开发的问题;同时数据库多机房、主备服务动态切换等方式保证高可用,数据库每日备份数据,并有t-1的生产脱敏数据进行开发验证,降低sql调整带来的问题
评论