如何做到高可用

公司内部其实你做到三个9就已经很无敌了,99.9%,但你出去面试一定得说99.99%

你怎么算出来四个9的,如果你在公司待了一年,可以说去年计算了一下完全不可用大概有30分钟,可用性高

达 99.99%

为什么半小时就完全不可用,根据公司通报是运维把网络防火墙搞崩

网关节点的负载均衡

即解决客户端应该连哪个网关的问题

现实里的做法:DNS够了

面试:配置网关节点HTTP的信息

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

再均衡

某个网关节点,比如华南节点,因为赛龙舟,然后这个节点上20000请求,且有些请求比较长就占着不走

那这时候就需要再均衡

  1. 判定什么时候需要再均衡
  2. 谁来发起再均衡
  3. 再均衡的过程是怎么样的?

谁判断?谁发起?

一个是客户端判定 客户端发起

网关节点判断,网关节点发起

客户端判定,客户端发起

基于消息延迟,借助滑动窗口时间来统计延迟,计算平均延迟。

(高并发情况下,使用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