如何做到高可用

公司内部其实你做到三个9就已经很无敌了,99.9%,但你出去面试一定得说99.99%
你怎么算出来四个9的,如果你在公司待了一年,可以说去年计算了一下完全不可用大概有30分钟,可用性高
达 99.99%
为什么半小时就完全不可用,根据公司通报是运维把网络防火墙搞崩
网关节点的负载均衡
即解决客户端应该连哪个网关的问题
现实里的做法:DNS够了
面试:配置网关节点HTTP的信息


负载均衡的策略,最小连接数

再均衡

某个网关节点,比如华南节点,因为赛龙舟,然后这个节点上20000请求,且有些请求比较长就占着不走
那这时候就需要再均衡
- 判定什么时候需要再均衡
- 谁来发起再均衡
- 再均衡的过程是怎么样的?
谁判断?谁发起?
一个是客户端判定 客户端发起
网关节点判断,网关节点发起
客户端判定,客户端发起
基于消息延迟,借助滑动窗口时间来统计延迟,计算平均延迟。
(高并发情况下,使用RingBuffer来实现滑动窗口算法)近期几次消息的延迟,显著高于平均延迟,就说明网关节点高负载
基于错误率,借助滑动窗口,连续错误 + 错误率 > 阈值
客户端怎么再均衡?
断开连接,选择一个新节点然后连上
如果客户端发现全部节点都高负载?
后端扩容
websocket降级到普通http 请求
跨区域连接
但其实你只要监控和自动扩容做好,就不会有这种问题的了
网关节点怎么判定?怎么发起
判定:
1.自身的连接数
2.吞吐量
3.自身资源,cpu,内存等
怎么再均衡
1.分批迁移:网关节点主动发消息,然后客户端收到就要执行再均衡,换一个节点重连
2.网关节点可以主动发那会一个可用节点列表
如果网关需要抗每秒10万的高并发访问,你应该怎么对网关进行生产优化?
生成情况下一定得 集群化的

8c16g,对网关路由转发的请求,每秒抗1000+是不成问题的,1000台zuul网关机器
高配32c64g,每秒抗个小几万没问题的,几台zuul网关机器是没问题的
【限流层限制QPS带来的问题和替代方案】https://www.bilibili.com/video/BV1pVyGYZEob?vd_source=cae07b1dce3e6abe67fcf72c43031ede