了解被测系统(二)接入链路--包括域名解析和Nginx代理

目录

一、接入链路示例

二、域名解析过程

1、相关概念

1.1、域的结构

1.2、DNS是什么?

1.3、DNS根域名服务器

1.4、顶级域名服务器

1.5、权威域名服务器

2、域名解析过程

2.1、检查Hosts文件

2.2、检查本地DNS缓存

2.3、DNS解析--本地DNS服务器

2.4、DNS解析--根域名服务器 

2.5、DNS解析--顶级域名服务器

2.6、DNS解析--本地DNS服务器返回IP地址

三、Nginx

1、什么是反向代理?

2、什么是负载均衡?

3、什么是动静分离?


一、接入链路示例

  1. DNS 解析域名:当用户在浏览器中输入域名时,首先会发送 DNS 查询请求到 DNS 服务器。DNS 服务器负责解析域名并返回对应的 IP 地址。

  2. Nginx 作为反向代理:一旦 DNS 解析返回了 IP 地址,用户的请求将被发送到该 IP 地址。在这个 IP 地址上,通常会配置 Nginx 作为反向代理服务器。

  3. Ingress Controller 配置规则:Nginx 反向代理服务器通过配置文件或动态配置与 Ingress Controller 进行通信。Ingress Controller 监听 Kubernetes API Server 中的 Ingress 资源变化,并根据规则配置 Nginx 反向代理的负载均衡和路由规则。

  4. 转发请求到 Pod:当外部请求到达 Nginx 反向代理服务器时,根据 Ingress Controller 配置的规则,Nginx 将请求转发到相应的 Pod。Pod 是 Kubernetes 中运行应用程序的最小单元,可以包含一个或多个容器。

二、域名解析过程

1、相关概念

1.1、域的结构

1.2、DNS是什么?

DNS(Domain Name System),DNS 是一个分布式的命名系统,用于将域名(如www.example.com)转换为对应的IP 地址。它充当了互联网上的"电话簿",帮助用户通过易记的域名访问网站,而不需要记住复杂的 IP 地址。

1.3、DNS根域名服务器

根域名服务器(Root DNS Servers)是全球DNS系统的顶层服务器,它们存储了顶级域名服务器的地址。根域名服务器的数量非常有限,目前共有13组根域名服务器,分布在全球不同的地理位置。每个根域名服务器都有自己的标识符,通常用字母A到M表示。

1.4、顶级域名服务器

顶级域名服务器(Top-Level Domain DNS Servers)是负责管理特定顶级域名的域名服务器。例如,.com域名的顶级域名服务器负责管理所有以.com结尾的域名的解析服务。每个顶级域名都有自己的一组域名服务器,用于处理与该顶级域名相关的域名解析请求。

1.5、权威域名服务器

权威域名服务器(Authoritative Name Server)是负责管理特定域名的DNS服务器。每个域名都有一个或多个权威域名服务器,它们存储着该域名的DNS记录,包括该域名对应的IP地址、子域名、邮件服务器等信息。

权威域名服务器通常由域名所有者或托管服务提供商管理和维护。它们负责更新和维护域名的DNS记录,并确保域名解析的准确性和可用性。

需要注意的是,权威域名服务器只负责管理特定域名的解析,而不处理其他域名的解析请求。因此,在域名解析过程中,需要经过多级的域名服务器层级查询,从根域名服务器到顶级域名服务器,最终到达权威域名服务器,以获取所需的域名解析结果。

2、域名解析过程

2.1、检查Hosts文件

当计算机进行域名解析时,首先会检查hosts文件中是否存在与要解析的域名对应的条目。如果存在匹配的条目,计算机将使用hosts文件中指定的IP地址来解析域名;

 

2.2、检查本地DNS缓存

如果hosts文件中没有匹配的条目,计算机会继续检查本地DNS缓存中是否存在该域名的解析结果。如果存在缓存,计算机会直接使用缓存中的结果,而不会向DNS服务器发送查询请求。

2.3、DNS解析--本地DNS服务器

如果hosts文件和本地DNS缓存都没有匹配的结果,计算机会向DNS服务器发送查询请求,获取域名对应的IP地址,并将结果存储到本地DNS缓存中,以备将来使用。

浏览器会向本地 DNS 服务器发送一个 DNS 查询请求。本地 DNS 服务器首先查看自己的缓存,如果有对应的域名解析结果,则直接返回给浏览器。 

本地DNS服务器:

2.4、DNS解析--根域名服务器 

如果本地 DNS 服务器没有缓存记录,它会向根域名服务器发送查询请求。根域名服务器告诉本地 DNS 服务器负责该域名的顶级域名服务器的地址;

需要注意的是,根域服务器并不直接提供特定域名的IP地址,它们只提供指向下一级域服务器的信息。这种分层结构使得域名解析过程更加高效和可扩展,并确保全球范围内的域名解析一致性。

2.5、DNS解析--顶级域名服务器

然后本地 DNS 服务器再向顶级域名服务器发送查询请求。这个过程逐步向下迭代,直到找到负责该域名的 DNS 服务器,并获取到域名对应的 IP 地址。

2.6、DNS解析--本地DNS服务器返回IP地址

最后,本地 DNS 服务器将 IP 地址返回给浏览器,浏览器使用该 IP 地址与服务器建立连接。

三、Nginx

Nginx 是一个开源的高性能 Web 服务器和反向代理服务器。它具有轻量级、高并发处理能力和低内存消耗等特点,广泛用于构建高性能的 Web 服务器集群和负载均衡环境。

在 Web 服务器方面,Nginx 接收客户端的 HTTP 请求,并将请求转发给后端的应用服务器,如 Tomcat、Node.js 等。它可以处理静态文件的请求,提供负载均衡、反向代理、缓存、SSL 加密等功能。

当客户端发送一个 HTTP 请求到 Nginx 服务器时,Nginx 首先根据配置文件中的规则进行请求的匹配和处理。根据配置的反向代理规则,Nginx 可以将请求转发给后端的应用服务器。它还可以根据负载均衡算法将请求分发给多个后端服务器,实现请求的分流和高可用性。

Nginx 的高性能和高并发处理能力使得它成为构建高可用、高性能的 Web 服务器架构的重要组件。

1、什么是反向代理?

正向代理是代理客户端的(想一下电脑上安装的VPN,帮你请求外部资源);

反向代理是代理服务器的,反向代理是一种服务器架构模式,它将客户端的请求转发给后端服务器,并将后端服务器的响应返回给客户端,客户端并不直接与后端服务器通信。

2、什么是负载均衡?

Nginx 可以将客户端请求分发给多个后端服务器,以实现负载均衡。通过合理配置负载均衡算法,可以根据服务器的性能和负载情况,将请求均匀地分发到后端服务器上,提高系统的性能和可扩展性。

轮询--加权轮询

3、什么是动静分离?

可以将动态请求转发给后端应用服务器(如 Tomcat、Node.js、Django 等),而将静态资源直接由 Nginx 服务器处理和返回,从而提高系统的整体性能。

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

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

相关文章

后端SpringBoot+前端Vue前后端分离的项目(二)

前言:完成一个列表,实现表头的切换,字段的筛选,排序,分页功能。 目录 一、数据库表的设计 ​编辑二、后端实现 环境配置 model层 mapper层 service层 service层单元测试 controller层 三、前端实现 interface接…

合宙Air724UG LuatOS-Air LVGL API控件-滑动条 (Slider)

滑动条 (Slider) 滑动条看起来和进度条是有些是有些像,但不同的是滑动条可以进行数值选择。 示例代码 -- 回调函数 slider_event_cb function(obj, event)if event lvgl.EVENT_VALUE_CHANGED then local val (lvgl.slider_get_value(obj) or "0")..&…

在PHP8中遍历数组-PHP8知识详解

所谓遍历数组就是把数组中的变量值读取出来。遍历数组中的所有元素对程序员来说是经常使用的操作,通过遍历数组可以完成数组元素的查询工作。 这好比你去商场买东西一样,要买什么东西,就去该区域浏览一遍,以便找出适合自己的产品…

【JavaEE】_CSS常用属性值

目录 1. 字体属性 1.1 设置字体家族 font-family 1.2 设置字体大小 font-size 1.3 设置字体粗细 font-weight 1.4 设置字体倾斜 font-style 2. 文本属性 2.1 设置文本颜色 color 2.2 文本对齐 text-align 2.3 文本装饰 text-decoration 2.4 文本缩进 text-indent 2.…

合宙Air724UG LuatOS-Air LVGL API控件-图片 (Image)

图片 (Image) 图片IMG是用于显示图像的基本对象类型,图像来源可以是文件,或者定义的符号。 示例代码 -- 创建图片控件 img lvgl.img_create(lvgl.scr_act(), nil) -- 设置图片显示的图像 lvgl.img_set_src(img, "/lua/luatos.png") -- 图片…

【Linux】进程概念I --操作系统概念与冯诺依曼体系结构

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我吧!你定不会失望。 本篇导航 1. 冯诺依曼体系结构为什么这样设计? 2. 操作系统概念为什么我们需要操作系统呢?操作系统怎么进行管理? 计算机是由两部分组…

性能监控-grafana+prometheus+node_exporter

Prometheus是一个开源的系统监控和报警工具。它由SoundCloud开发并于2012年发布,后来成为了一个独立的开源项目,并得到了广泛的应用和支持。 Prometheus的主要功能包括采集和存储各种系统和应用程序的监控数据,并提供强大的查询语言PromQL来…

算法:数组中的最大差值---“打擂台法“

文章来源: https://blog.csdn.net/weixin_45630258/article/details/132737088 欢迎各位大佬指点、三连 1、题目: 给定一个整数数组 nums,找出给定数组中两个数字之间的最大差值。要求,第二个数字必须大于第一个数字。 2、分析特…

【数据结构】搜索树MapSet

目录 1.搜索树 1.1概念 1.2查找 1.3插入 1.4删除 2.Map 2.1map说明 2.2TreeMap和HashMap 2.3常用方法 3.Set 3.1set说明 3.2TreeSet和HashSet 3.3常用方法 1.搜索树 1.1概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者具有以下性质&…

静态工厂模式,抽象工厂模式,建造者模式

静态工厂模式 ublic class FruitFactory {public static Fruit getFruit(String name) {Fruit fnull;switch (name){case "APPLE":{fnew Apple();}case "BANANA":{fnew Banana();}default :{System.out.println("Unknown Fruit");}}return f;} …

机器学习算法系列————决策树(二)

1.什么是决策树 用于解决分类问题的一种算法。 左边是属性,右边是标签。 属性选择时用什么度量,分别是信息熵和基尼系数。 这里能够做出来特征的区分。 下图为基尼系数为例进行计算。 下面两张图是对婚姻和年收入的详细计算过程(为GINI系…

2023.09.10 学习周报

文章目录 摘要文献阅读1-1 题目1-2 创新点1-3 本文工作2-1 题目2-2 什么是图2-3 图神经网络2-4 信息传递3-1 题目3-2 创新点3-3 本文工作 深度学习1.GNN的构建步骤2.构建图的方法3.GNN的简单样例 总结 摘要 本周阅读了三篇文章,第一篇是基于物理信息深度学习和激光…

【C++】学习STL中的list

❤️前言 大家好!,今天为大家带来的一篇博客是关于STL中的list,内容主要包括list的介绍使用、list的模拟实现。以及list与vector的对比。 正文 list的介绍和使用 首先,让我们看看list的文档介绍: list是可以在常数范…

PaddleOCR学习笔记3-通用识别服务

今天优化了下之前的初步识别服务的python代码和html代码。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <meta charset"utf-8"> …

数据挖掘的学习路径

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

Docker实战:docker compose 搭建Sonar

1、docker-compose-sonar文件准备 进入/home/docker目录&#xff0c;新建docker-compose-sonar.yml文件&#xff0c;内容如下&#xff1a; version: 3 services: sonar:image: sonarqube:8.9.6-communityrestart: always container_name: sonarqubevolumes:# 设置与宿主机时间…

Redis常见命令

命令可以查看的文档 http://doc.redisfans.com/ https://redis.io/commands/ 官方文档&#xff08;英文&#xff09; http://www.redis.cn/commands.html 中文 https://redis.com.cn/commands.html 个人推荐这个 https://try.redis.io/ redis命令在线测试工具 https://githubfa…

Hive_Hive统计指令analyze table和 describe table

之前在公司内部经常会看到表的元信息的一些统计信息&#xff0c;当时非常好奇是如何做实现的。 现在发现这些信息主要是基于 analyze table 去做统计的&#xff0c;分享给大家 实现的效果某一个表中每个列的空值数量&#xff0c;重复值数量等&#xff0c;平均长度 具体的指令…

9、补充视频

改进后的dijkstra算法 利用小根堆 将小根堆特定位置更改,再改成小根堆 nodeHeap.addOrUpdateOrIgnore(edge.to, edge.weight + distance);//改进后的dijkstra算法 //从head出发,所有head能到达的节点,生成到达每个节点的最小路径记录并返回 public static HashMap<No…

分享 8 个 VSCode 插件,提升你的编码体验

大多数开发者都在不断寻找让开发工作更轻松的方法&#xff0c;我也是如此。合适的工具可以帮助你实现这一目标。 在本文中&#xff0c;我们将探讨我个人使用的八个扩展&#xff0c;以优化我的编码体验。让我们来看看这些扩展的列表&#xff0c;亲自体验它们如何改善你的编码体验…