深入浅出 -- 系统架构之日均亿级吞吐量的网关架构(DNS轮询解析)

news2024/11/27 22:42:48

在前篇关于《Nginx》的文章中曾经提到:单节点的Nginx在经过调优后,可承载5W左右的并发量,同时为确保Nginx的高可用,在文中也结合了Keepalived对其实现了程序宕机重启、主机下线从机顶替等功能。

但就算实现了高可用的Nginx依旧存在一个致命问题:如果项目的QPS超出5W,那么很有可能会导致Nginx被流量打到宕机,然后根据配置的高可用规则,Keepalived会对Nginx重启,但重启后的Nginx依旧无法承载业务带来的并发压力,结果同样会宕机.....

经过如上分析后,明显可看出,如果Nginx面对这种超高并发的情况,就会一直处于「在重启、去重启的路上」这个过程不断徘徊,因此在此背景下,我们需要设计出一套能承载更大流量级别的接入层架构。

不过相对来说,至少90%以上的项目用不上这套接入层架构,因为大部分项目上线后,能够拥有的用户数是很有限的,压根无法产生太高的并发量,所以往往一个Nginx足以支撑系统的访问压力。

不过虽说大家不一定用的上,但不懂两个字我们绝不能说出口,尤其是面试过程中,往往频繁问到的:你是如何处理高并发的? 跟本文有很大的联系,之后被问到时,千万先别回答什么缓存、削峰填谷、熔断限流、分库分表.....等这类的,首先需要先把接入层说清楚,因为如果接入层都扛不住访问压力,流量都无法进到系统,后续这一系列处理手段自然没有意义。

一、亿级吞吐第一战-DNS轮询解析

   对于单节点的Nginx而言,虽然利用Keepalived实现了高可用,但它更类似于一种主从关系,从机在主机正常的情况下,并不能为主机分担访问压力,也就代表着作为主节点的机器,需要凭“一己之力”承载整个系统的所有流量。那么当系统流量超出承载极限后,很容易导致Nginx宕机,所以也需要对Nginx进行横向拓展,那又该如何实现呢?最简单的方式:DNS轮询解析方案。
DNS轮询解析技术算一种较老的方案了,但在如今的大舞台上依旧能够看见它的身影,它源自于DNS的域名多记录解析,在《HTTP/HTTPS》文章中曾聊到过,DNS域名系统本质上是一个大型的分布式K-V数据库,以域名作为Key,以物理服务器的公网IP作为Value,而大多数域名注册商都支持为同一个域名配置多个对应的IP,如下:

如上图所示,为一个域名配置多个映射的IP后,DNS服务器在解析域名请求时,就会依据配置的IP顺序,将请求逐一分配到不同的IP上,也就是《上文》所提及到的轮询调度方式。

借助DNS的轮询解析支持,对Nginx可以轻松实现横向拓展,也就是同一个域名配置的多台物理机,分别都部署一个Nginx节点,每台Nginx节点的配置信息都一样。

好比目前每瞬12W的并发量,配置域名时,映射3台真实Nginx服务器,最终经过DNS轮询解析后,12W的并发请求被均摊到每台Nginx,每个节点分别承载4W的并发请求,通过这种方式就能够完美的解决之前的:单节点Nginx无法承载超高并发量而宕机的问题,如下:
![Nginx水平集群]

同时DNS域名解析,也依旧可以配置调度算法,如Rate权重分配、最少连接数分配、甚至可以按照客户端网络的运营商、客户端所在地区等方式进行解析分配,但仅一小部分的DNS服务器支持。

浅谈DNS域名轮询解析的优劣

这种方式带来的优势极为明显:

无需增加额外的成本即可实现多节点水平集群,利于系统拓展。

但也存在非常大的劣势:

  • ①与其他的负载均衡方案不同,其他的负载方案一般都会自带健康监测机制,但DNS则无法感知,也就是当下游的某服务器宕机,DNS服务器会依旧向其分发请求。
  • ②无法根据服务器的硬件配置,合理的分配客户端请求,大部分DNS服务器只支持最简单的轮询调度。

虽然DNS轮询解析方案存在很大的劣势,但这两个劣势对比其带来的收益可以忽略不计,因为现在云计算技术的发展,多台节点保持相同的配置已不再是难事。同时,由于Nginx本身就会利用KeepalivedVIP机制实现高可用,所以就算某个节点宕机,从机也可顶替上线接管流量,中间只会有很短暂的切换时间。

而且如果DNS将客户端请求分发到某个宕机节点时,客户端看到的结果便是空白页、超时无响应或请求错误的信息,通常情况下,依据用户的习性,都会再次重试,那么客户端再次发出的请求会被轮询解析到其他节点,而从机在这个时间间隔内也能够成功上线接管服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1587184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决宝塔的FTP无法使用被动模式

问题:宝塔安装完ftp管理软件之后,无法使用被动模式连接 解决: 提示: 如果还是不行,那么要看看防火墙和安全组有没有放行被动模式的端口,宝塔安装的pure-ftpd软件的被动模式端口默认是39000至400…

MySQL-----索引

一 概述 索引(index)是帮助MysQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构, 这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法&…

Sketch3D:用于草图到3D生成的样式一致性指南

Sketch3D: Style-Consistent Guidance for Sketch-to-3D Generation Sketch3D:用于草图到3D生成的样式一致性指南 Wangguandong Zheng 重试 错误原因 Southeast UniversityChina 重试 错误原因 wgdzhengseu.edu.cnHaifeng Xia 重试 错误原因 Southeast Universit…

千视电子携NDI 6前沿技术,亮相北京CCBN展呈现轻量化媒体解决方案

千视携NDI 6技术闪耀2024 CCBN展会,呈现轻量化媒体解决方案 2024年4月24日至26日,北京首钢会展中心将举办第三十届中国国际广播电视网络技术展览会(CCBN2024)。这是中国广播电视行业的一项重要盛会,将有国内外超600家…

Apache——DBUtils

韩顺平 零基础30天学会Java 一、基本介绍 1、commons-dbutils是 Apache 组织提供的一个开源JDBC工具类库,它是对JDBC的封装,使用dbutils能极大简化jdbc编码的工作量 二、DbUtils类 1、QueryRunner类:该类封装了SQL的执行,是线程…

Python处理PDF:在PDF文档中插入页眉和页脚

在处理篇幅较长、结构复杂的PDF文档时,页眉和页脚的设计与插入就显得尤为重要。它们不仅扮演着美化文档、提升专业度的角色,更承担了导航指引、信息标注的重要功能。 页眉通常用于展示文档的标题或章节名称,有助于读者在翻阅过程中迅速定位所…

网工基础协议——IP地址

IP地址的概念: IP 地址是我们进行TCP/IP通讯的基础,每个连接到网络上的计算机都必须有一个!P地址。我们目前使用的IP地址是32位的,通常以点分十进制表示。例如:192.168.0.181。IP地址的格式为: IP地址 网络地址 主机地址 或者 |P地址主机地…

真正的检索高手,为什么可以“不检索”?还摸鱼| 秘塔AI

开篇震撼:揭秘秘塔AI搜索的革命性力量 在信息爆炸的时代,如何快速准确地找到所需信息成为了一项挑战。国际上的AI驱动搜索引擎Perplexity以其整合网络最新资讯的能力,为用户提供精确且权威的答案,显著提高了信息检索效率。 而今…

【简明图文教程】Node.js的下载、安装、环境配置及测试

文章目录 前言下载Node.js安装Node.js配置Node.js配置环境变量测试后言 前言 本教程适用于小白第一次从零开始进行Node.js的下载、安装、环境配置及测试。 如果你之前已经安装过了Node.js或删除掉了Node.js想重新安装,需要先参考以下博客进行处理后,再根…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之九 简单视频卡通画效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之九 简单视频卡通画效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单视频处理实战案例 之九 简单视频卡通画效果 一、简单介绍 二、简单视频卡通画效果实现原理 三、简单视频卡通画效果…

YOLOv8改进 | 检测头篇 | 自研超分辨率检测头HATHead助力超分辨率检测(混合注意力变换器检测头)

一、本文介绍 本文给大家带来的改进机制是由由我本人利用HAT注意力机制(超分辨率注意力机制)结合V8检测头去掉其中的部分内容形成一种全新的超分辨率检测头。混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制…

记录一个Kafka客户端Offset Explore连不上的问题

我昨天把集群重装了一下,再连这个工具就连不上了(你先把zk和kafka在集群启起来),报错截图如下: 英文翻译过来大概就是说遍历zk指定路径不存在,我还以为zk的问题,回去又把zk的文档翻了一遍&#…

物联网实战--驱动篇之(七)RTC时钟(DS1302)

目录 一、RTC简介 二、DS1302介绍 三、初始化 四、字节读写 五、功能函数 一、RTC简介 实时时钟,简称RTC,这个在STM32的外设里也有,不过STM32F1系列的RTC实际上只有一个计数器功能,如果需要年月日要自己写软件计算 &#xff…

C++/QT 医院信息管理系统

一、项目介绍 (1)管理员、居民、医生三个角色登录;居民可注册账号登录,医生由管理员添加,管理员权限最高 (2)管理员: 模块一:信息管理(医生信息管理、医院…

Leetcode算法训练日记 | day23

一、修剪二叉搜索树 1.题目 Leetcode:第 669 题 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff…

基于级联H桥的多电平逆变器PWM控制策略的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 级联H桥(CHB)多电平逆变器是一种通过多个H桥单元级联实现更高电压等级和更高质量输出波形的电力电子转换装置。这种逆变器在高压大功率场合应用广泛&am…

[CTF]使用浏览器firefox插件伪装IP地址

来源:https://jingyan.baidu.com/article/ab0b56306d9890c15bfa7d6a.html 浏览器想必是大家再熟悉不过的东东了,我们会经常使用它访问下载一些页面或文件。但是对于它的更深层次的功能可能就陌生了。比如说一些网站后台会记录我们的IP地址,假…

U盘怎么加密?U盘加密的方法有哪些?

U盘作为一种便携式的存储设备,广泛应用于日常生活和工作中。但由于其易于携带和使用的特性,U盘中的数据也面临着被未经授权访问的风险。因此,对U盘进行加密成为了保护数据安全的重要措施。本文将介绍几种常见的U盘加密方法,帮助用…

5G智慧港口简介(一)

引言 港口作为交通运输的枢纽,在促进国际贸易和地区发展中起着举足轻重的作用,全球贸易中约 90% 的贸易由海运业承载,作业效率对于港口至关重要。在“工业 4.0”、“互联网 +”大发展的时代背景下,港口也在进行数字化、全自动的转型升级。随着全球 5G 技术浪潮的到来,华为…

android android.permission.MANAGE_EXTERNAL_STORAGE使用

android11 及以上版本&#xff0c;如果release版本要读取外部存储公共目录&#xff0c;即sdcard公共目录&#xff0c;需要在androidManifest.xml下申明 <uses-permission android:name"android.permission.MANAGE_EXTERNAL_STORAGE" /> 如果要发版到海外&…