【计算机网络】互联网公司的网络架构和业务场景

互联网公司的网络架构和业务场景

  • 1. 互联网公司网络的组成
    • 1.1 网络的物理组成
    • 1.2 骨干网组成
    • 1.3 数据中心网络组成
  • 2.互联网公司网络服务场景
    • 2.1 通用服务场景
      • 2.1.1 客户端到服务端请求真实网络过程
      • 2.1.2 客户端到服务端请求抽象网络过程
      • 2.1.3 负载均衡网络模型
    • 2.2 边缘服务场景
    • 2.3 CDN 服务边缘缓存场景
    • 2.4 CDN 服务全球缓存场景
  • 3.总结

1. 互联网公司网络的组成

1.1 网络的物理组成

数据中心一般分布在全球重要的城市,数据中心之间由光缆连接。

在这里插入图片描述

Google 全球基础设施

单个城市的数据中心分布在各个园区。单个园区由多个数据中心楼、电力系统、水利系统等组成。

在这里插入图片描述

Data Center Zones

在数据中心楼中,有多个网络模块单元。在网络模块单元中放置服务器。

在这里插入图片描述

Data Center Building

在这里插入图片描述

Data Center Services

1.2 骨干网组成

目前运营商的网络还主要是基于 BGP/MPLS IP VPN 搭建。BGP/MPLS IP VPN 是一种 L3VPNLayer 3 Virtual Private Network)。它使用 BGPBorder Gateway Protocol)在服务提供商骨干网上发布 VPN 路由,使用 MPLSMultiprotocol Label Switch多协议标签交换)在服务提供商骨干网上转发 VPN 报文。

在这里插入图片描述
对于国外的互联网公司可以自己搭建骨干网,国内的骨干网物理网络主要是电信运营商搭建,互联网公司可以在其上搭建自己的专用网络。

1.3 数据中心网络组成

典型数据中心的网络架构一般是使用 CLOS 架构。CLOS 架构的特点:

  • 多级交换,典型的为三级交互架构。
  • 在每一级的每一个单元都与下一级的设备全连接。
  • 无阻塞,对于任意的输入到输出,总是能找到一条无阻塞的通路。
  • 支持递归,可无限扩展,用多个小规模、低成本的单元构建复杂、大规模的架构。

其中 Google 数据中心网络 Jupiter 和 Facebook 的 F4F16 都是属于这种网络架构,具体可以参考文献。

在这里插入图片描述

Google 的 Jupiter

在这里插入图片描述

Facebook F4 网络架构

2.互联网公司网络服务场景

  • PRPeering Router对等路由器,类似 PE 设备,主要是其他运营商网络进行对接。
  • BRBackbone Router骨干网路由器,类似 P 设备。
  • LSRLabel Switch Router标签交互路由器
  • DRDatacenter Route数据中心路由器

2.1 通用服务场景

在这里插入图片描述

通用服务的网络

2.1.1 客户端到服务端请求真实网络过程

  • 用户访问网页服务,客户端首先会进行域名解析去查询网站地址(DNS 服务)。
  • 通过用户的 IP 地址进行物理位置定位,返回一个就近的虚拟 IP 地址(VIP)。
  • 请求穿过用户供应商网络,通过 PR 进行互联网公司的网络中。
  • 请求穿过互联网公司的骨干网,路径为 PRBRLSRDR,然后到达数据中心,在进入数据中心网络时,会用负载均衡。
  • 请求穿过互联网公司的数据中心网络,经过多级的 CLOS 网络架构内的设备,在这个过程也会有负载均衡把请求打散到后端服务器集群。
  • 请求到达代理服务器。
  • 请求到达网页服务器,网页服务器也会访问其他的后端服务器,最后将数据返回给客户。

2.1.2 客户端到服务端请求抽象网络过程

本质是网页服务底层走的TCP网络协议。
在这里插入图片描述

2.1.3 负载均衡网络模型

互联网公司的业务流量庞大,同时也会有很多的攻击流量,能够更快更好的应对这些流量是一个大挑战。流量在进行互联网公司的入口需要高性能高吞吐量的负载均衡。本小节主要参考 Google 的软件实现的负载均衡:Maglev

在这里插入图片描述

传统的硬件负载均衡

传统的硬件负载均衡特点:

  • 硬件负载均衡单点的性能决定了整个网络能承担的请求。
  • 在 HA 上存在缺陷。为了保证单点失效的时候,整个网络集群不陷入瘫痪,需要 1 : 1 1:1 1:1 的做冗余。
  • 灵活性和编程性欠缺。
  • 价格昂贵。

为了解决上面的问题,Google 自行构建一种 SLBSoftware Load Balance)系统,称为 Maglev,其主要特点:

  • 方便的 Scale,为了保证 HA 所需的冗余从之前的 1 : 1 1:1 1:1 可以降至 N + 1 N+1 N+1,方便的定制性等。
  • 方便的定制性。

在这里插入图片描述

Maglev 网络模型

在这里插入图片描述

Maglev 报文转发流程

具体 Maglev 的细节可以阅读参考文献相关文章。

同时要指出主流云厂商的负载均衡的功能,都有全球(Global)负载均衡的能力,例如下图 Google 的全球负载均衡。

在这里插入图片描述

2.2 边缘服务场景

互联网公司会接近用户的边缘做优化,主要是两个方面。

  • 把请求(例如 TCP)终结(前端代理服务器)向用户靠拢。
  • 把内容移向接近用户的地方。

下图在靠近用户的地方引入了 边缘服务的路由器、服务器。将代理服务器放置在公司的网络的边缘,在靠近用户的地方终止用户请求(例如 TCP)的流程,以此加快第一次握手的时间,提供更好的用户体验。也可以在边缘部署服务。

在这里插入图片描述

边缘服务场景网络

  • 用户访问网页服务,客户端首先会进行域名的 DNS 解析去查询网站地址。
  • 通过用户的IP地址进行物理位置定位,返回一个就近的虚拟 IP 地址(VIP)。
  • 请求穿过用户供应商网络,通过 PR 进行互联网公司的网络中。
  • 通过 BR 到达 Edge Router,然后到达代理服务器,该服务器终止用户的 TCP 进程并把请求转发给数据中心的的网页服务器。
  • 请求穿过互联网公司的骨干网,路径为 PRBRLSRDR,然后到达数据中心,在进入数据中心网络时,会用负载均衡。
  • 请求穿过互联网公司的数据中心网络,例如多级的 CLOS 网络架构内的设备,在这个过程也会有负载均衡把请求打散到后端服务器。
  • 请求到达网页服务器,网页服务器也会访问其他的后端服务器,然后将信息返回给客户。

2.3 CDN 服务边缘缓存场景

互联网公司一般都存在 CDN 类型服务,他们把 CDN 放在公司网络的边缘,目的是将大流量的静态资源尽可能存放在网络的边缘。

注:CDN 还是保存在公司的内部的网络中。

在这里插入图片描述

CDN 边缘缓存场景

对于云厂商来说,他们不断的建设 PoP 点,EC 点,为的就是网络覆盖的更广,且能把服务部署在这些地方。

2.4 CDN 服务全球缓存场景

为了进一步的把 CDN 移到靠近用户的地方,通过 缓存填充 把数据存在用户的运营商网络中,这样在缓存命中时,用户可以在运营商网络中就能得到需要的资源。

在这里插入图片描述

CDN 服务全球缓存场景

例如,AWS Wavelength 是一款针对移动边缘计算应用程序优化的 AWS 基础设施产品。Wavelength 区域是一种 AWS 基础设施部署,可在 5G 网络边缘的通信服务提供商(Communications Service ProviderCSP)数据中心中嵌入 AWS 计算和存储服务,因而来自 5G 设备的应用程序流量可以在不离开移动通信网络的情况下到达 Wavelength 区域中运行的应用程序服务器。这就避免了因应用程序流量必须遍历互联网中的多个跃点才能达到其目的地而导致的延迟,从而使客户能够充分利用现代 5G 网络提供的低延迟和带宽优势。

3.总结

本文从宏观的角度介绍了互联网公司的网络架构和典型业务或者服务具体实现。在学习中也深刻体会到计算机中空间和时间的关系,用空间换时间用时间换空间。同时互联网的发展也极大促进了信息的高效传播,也期待不断推出新的产品和服务。

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

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

相关文章

数据湖在爱奇艺数据中台的应用

01 我们眼中的数据湖 作为爱奇艺的数据中台团队,我们的核心任务是管理和服务公司内的大量数据资产。在实施数据治理的过程中,我们不断吸收新的理念,引入尖端的工具,以精细化我们的数据体系管理。“数据湖”作为近年来数据领域广泛…

【李沐深度学习笔记】自动求导实现

课程地址和说明 自动求导实现p2 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 自动求导 # 创建变量 import torch x torch.arange(4, dtypetorch.float32) #只有浮点数才能求导 # 计算y关于x的梯度之前&#x…

《算法竞赛·快冲300题》每日一题:“矩阵”

《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 质…

【刷题】2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法,x y2 − z2(yz)(y-z) 即xa*b,ayz,by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是(r-l)*x&am…

建构居住安全生态,鹿客科技2023秋季发布会圆满举办

9月20日,以「Lockin Opening」为主题的2023鹿客秋季发布会在上海隆重举办,面向居住安全领域鹿客带来了最新的高端旗舰智能锁新品、多眸OS1.0、Lockin Care服务以及全联接OPENING计划。此外,现场还邀请了国家机构、合作伙伴、技术专家等业界同…

MyBatis基础之SqlSession

SqlSession 线程安全问题 当你翻看 SqlSession 的源码时,你会发现它只是一个接口。我们通过 MyBatis 操作数据库,实际上就是通过 SqlSession 获取一个 JDBC 链接,然后操作数据库。 SqlSession 接口有 3 个实现类: #实现类1Defa…

Go的error接口

从本书的开始,我们就已经创建和使用过神秘的预定义error类型,而且没有解释它究竟是什么。实际上它就是interface类型,这个类型有一个返回错误信息的单一方法: type error interface { Error() string } 创建一个error最简单的方…

C++ Primer 第5章 语句

C Primer 第5章 语句 5.1 简单语句一、空语句二、别漏写分号,也别多写分号三、复合语句(块) 5.2 语句作用域5.3 条件语句5.3.1 if语句一、使用if else语句二、嵌套if语句三、注意使用花括号四、悬垂else五、使用花括号控制执行路径 5.3.2 swi…

知识图谱:信息抽取简易流程

目录 一、标注训练数据 二、训练数据模型 三、实现NER 一、标注训练数据 使用工具:Brat ## BRAT安装 0、安装条件 (1)运行于Linux系统 (2)brat(v1.3p1)仅支持python2版本运行使用,否则会报错 File "standalone.py", line 257except SystemExit, sts:^Syn…

qt 遍历当前windows下可用盘符

foreach(QFileInfo my_info, QDir::drives()){qDebug()<< my_info.absolutePath();}输出如下&#xff1a;

c语言 static

1、静态局部变量在程序加载时初始化&#xff0c;静态局部变量的初始值写入到了data段&#xff1a; 如下代码test_symbol.c int f() {static int x 0;return x; }int g() {static int x 9;return x; }使用命令gcc -c test_symbol.c -o test_symbol 编译 使用命令 readelf -a …

LeetCode 1194.锦标赛优胜者

数据准备 Create table If Not Exists Players (player_id int, group_id int); Create table If Not Exists Matches (match_id int, first_player int, second_player int, first_score int, second_score int); Truncate table Players; insert into Players (player_id, g…