聊聊散布式高并发应用中的高可用性

  面试题:高并发场景/接口被刷如何办?

  起首参考上篇博文:聊聊高并发应用中秒杀场景的计划完成,个中限流,缓存等思维是不合的。

  在这里拔出图片刻画

  这里需求留心的是,假设在现有集群情况下,负载压力依然很大年夜如何办?不美观察上图最后一步—容器化技巧。应用Docker+K8s(Kubernetes)构建Docker集群情况。当QPS超越阈值后,。比如扩容两个虚拟机,将登录子系统从四节点扩容到6节点,然后修改nginx设备文件。在流量高峰期事先,再触发技巧,增加虚拟机,增加资本的消耗。

  关于Docker和K8s系列文章可以参考博文:

  Docker基础入门

  k8s docker集群搭建

  Kubernetes集群实战

  下面从架构层面简明刻画了一下贱程,下面再来看看具体细节。

  在这里拔出图片刻画

  ① 手动完成负载平衡

  以下图白色框选中的中央,让你选择一下,再下载。

  在这里拔出图片刻画

  ② 图形验证码

  12306故意把验证码弄得模糊不清,影响花费者下单,从而限流。然则BATJ在主页均未应用。

  在这里拔出图片刻画

  ③ 容器限流

  罕见的web容器其实也具有限流的功用,以Tomcat容器为例,其Connector个中一种设备有以下几个参数:

  acceptCount:假设Tomcat的线程都忙于照顾,新来的连接会进入队列列队。假设超越列队大年夜小,则拒绝连接。

  maxConnection:瞬时十分连接数,超越的会列队等待。

  maxThreads:Tomcat能用来处理恳求的十分线程数,假设恳求处理量不时远远大年夜于十分线程数则能够会僵逝世。

  参考博文:浅谈Tomcat效劳器优化方法

  ④ 限流总资本数

  假设有的资本是稀缺资本(如数据库连接、线程),而且能够多个系统都在应用它,那么需求限制应用。可以应用池化技巧来限制总资本数:连接池、线程池。比如分派给每个应用的数据库连接是100,那么本应用最多可以应用100个资本,超越了可以等待或许抛异常。

  ⑤ 从代码级限流某个接口的总并发/恳求数

  假设接口能够会有突发访问状况,但又担心访问量太大年夜形成解体,如抢购营业。这个时分就需求限制这个接口的总并发恳求数了。因为粒度比拟细,可认为每个接口都设置响应的阈值。



上一篇:梦见掏钱给他人
下一篇:没有了