高可用性(稳定性)

判断指标
传统的判断是否高可用的指标是看一段时间内停机时间在总运行时间的占比,1个9是90%的时间可用,2个9是99%的时间可用
3个9是千分之一的时间不可用。
科学的衡量指标是影响的请求量在总请求量中的占比。晚上没人使用的时候停机和白天使用高峰期停机影响程度是不一样的。
主要手段
一服务冗余
服务的硬件和软件总是会出问题的,所以在整个业务链路中,要保证每个节点的服务都是多份冗余,一旦一台服务挂掉,
可以迅速把流量切换到其他冗余服务器。
二无状态化
要想做到一个节点多份冗余,就要是服务无状态化,这样既可以做到快速的流量分流,也可以快速的伸缩服务器数量。现在流行的dock容器就是
为快速方便扩容而生的。
三幂等设计
对同一个请求多次重复提交,得到的结果应该是一样的。
四录入验证机制
用户是万恶的,如果你不能对录入的内容进行合理的检查和限制,你根本不知道你的用户会在你的系统中做出什么的举动。
五超时机制
六负载均衡
根据相关负载均衡算法对流量进行合理的分配。(狭义上的负载均衡nginx F5都可以做)
如果一台服务器挂掉(假死,内存溢出等),要能够快速把改服务从服务队列中移除。(这个不能使用zookeeper等注册服务,因为注册服务是通过ping的方式
检查一个应用的状态,这样并不能判断一个服务是否宕机,nginx可以通过配置来承担这类工作,但nginx是一个中间件,最好是用jar包的方式解决这类问题)
对于挂了的服务,怎么进行快速的恢复。
七异步化设计
异步处理的目的是保主流程,增加吞吐量。对于那些不需要返回结果的边缘业务,可以通过异步来处理。
八服务限流降级和熔断
在网关层可以通过一个流量漏洞来限制一定时间内