《亿级流量系统架构设计与实战》第一章 大型互联网公司的基础架构

内容总结自《亿级流量系统架构设计与实战》

一、DNS

DNS(Domain Name System,域名系统)是互联网中得核心服务,它维护域名与对应IP地址得映射关系,并提供将域名翻译为IP地址得域名解析功能


1、域名服务器分类

按照域名得层级结构,可以把域名分为4种不同的类型

1、根域名(DNS)服务器

根域名服务器是全球互联网的中枢神经,它负责互联网顶级域名的解析,即它学握着全部顶级城名的名称与IP地址的映射关系。目前全球仅有13台IPv4根域名服务器,其中主根城名服务器部署在美国,其余12台辅根域名服务器有9台部署在美国、2台部署在欧洲、1台部署在日本。根城名服务器由美国政府授权的互联网名称与数字地址分配机构(ICANN)统一管理。

2、顶级域名(DNS)服务器
顾名思义,顶级城名服务器负责管理在每个顶级城名下注册的二级城名解析工作,即它可以根据二级域名寻找到二级城名服务器的 IP 地址。

3、权威域名(DNS)服务器
权威域名服务器负责对特定的域名进行解析,它管理顶级域名下的二级域名、三级域名、四级城名等的服务器。从名字中的“权威”可以看出,权威域名服务器最终决定了一个域名到底应该被解析成哪个IP地址,它是DNS 中最核心的部分。
每个域名对应的权威域名服务器都可能不同,每个权威域名服务器仅可解析它负责的域名,比如负责google.com 域名的权威域名服务器无法解析城名apple.com。大型互联网公司一般会自建权威域名服务器,而中小型企业一般会将域名托管给知名的权威域名服务商。

4、本地域名(DNS)服务器
本地域名服务器不属于域名层次结构中的任何一层,但是它对 DNS 非常重要,相当于域名解析的缓存。任何一台主机在进行网络地址配置时,都会配登一台域名服务器作为本地域名服务器,它是主机在进行域名查询时首先要查询的域名服务器。本地域名服务器一般由网络运营商提供,它作为主机访问网络时域名解析的总代理,会将域名解析结果缓存到本地,以便加速主机后 面的域名解析过程。


2、域名解析过程




二、HTTP DNS

1、DNS存在问题

  1. 域名解析需要递归查询,势必带来高延迟。理想情况一次DNS解析需要几毫秒甚至几十毫秒,但是实际应用中常常出现需要1s以上的情况
  2. 由于本地域名服务器是分地区、分运营商的,不同运营商实现的DNS解析策略不同。而且,由于权威域名服务器获取的是本地域名服务器的IP地址,而非客户端的IP地址,所以在定位客户端的地理位置时不一定准确,最终域名解析得到的IP地址对于客户端而言可能不是距离最近、最有的访问点。更有甚者,某些运营商为了节约资源,会直接将域名解析请求转发到其他运营商的本地域名服务器(即“域名转发”),这样做的后果就是用户得到了与其网络运营商不相符的IP地址,用户访问网络请求变慢。
  3. 更重要的是DNS劫持问题。DNS劫持是一种互联网攻击方式,通过干预域名服务器把域名解析到错误的IP地址上,以达到用户无法访问目标网站或访问恶意网站的目的。很多知名的互联网公司备受 DNS 劫持的困扰,运营南可能基于本地域名服务器做DNS劫持,黑客可能篡改计算机Hosts文件做DNS劫持。

2、HTTP DNS解析流程

为解决不同网络运营商的用户访问同一个HTTP DNS服务器的IP地址的延迟。HTTP DNS服务器供应商会采用如BGP(边界网关协议)等手段让这个IP地址在全国各地都做到就近访问。


3、HTTP DNS与DNS对比

HTTP DNS 只是将城名解析协议由 DNS 协议换成了 HTTP,原理并不复杂。但是相较于 DNS,这一微小的变化带来了如下好处。

  1. 降低域名解析延迟:通过直接访问 HTTP DNS 服务器,缩短了域名解析链路,不再需要递归查询。
  2. 防止域名劫持:将域名解析请求直接通过IP地址发送至HTTP DNS服务器,绕过运营商本地DNS服务器,避免了域名劫持问题。
  3. 调度精准性更高:HTTP DNS服务器获取的是真实客户端的IP地址,而不是本地DNS服务器的IP地址,即能够基于精确的客户端位置、运营商信息,将域名解析到更精准的、距离更近的IP地址,让客户端就近接人后台服务节点。
  4. 快速生效:当与域名关联的IP地址发生变更时,HTTP DNS服务不受传统DNS技术多级缓存的影响,域名更新能够更快地覆盖到全量容户端。




三、接入层技术演进

1、Nginx(七层负载均衡器)

Nginx 是一种自由的、开源的、高性能的 HTTP 服务器和反向代理服务器,同时也是IMAP、POP3、SMTP 的代理服务器。Nginx 既可以作为 HTTP 服务器进行网站的发布处理,也可以作为反向代理实现负载均街功能。

反向代理的运行方式是代理服务器对外接收互联网上的客户端请求,然后将请求转发到内部网络的目标服务器,并将目标服务器的执行结果返回给客户端。反向代理对外表现得就像目标服务器一样,客户端并不会知道自己访问的其实是一个代理。

正向代理与反向代理的核心区别就是:正向代理代理的是客户端,反向代理代理的是服务器。

Nginx得负载均衡功能决定了一个HTTP请求最终被路由到哪个服务器实例,而HTTP位于OSI七层模型得底七层(应用层),所以Nginx作为反向代理也常被称为“七层负载均衡器”


2、LVS(四层负载均衡器)

Nginx 是一种高性能的服务器,其性能远高手业务服务器。但是Nginx毕竟是一个应用层软件,单台Nginx服务器能承载的用户请求也是有上限的,当日活用户发展到一定规模后,就需 Nginx集群才能顶住压力。既然是集群,那么势必需要引人一个中间层作为协调者,其负责决定将用户请求转发到哪台Nginx服务器。这个协调者需要有比 Nginx 更高的性能,它就是本节的主角:LVS。

LVS (Linux Virtual Server, Linux 虚拟服务器)是一个虚拟的服务器集群系统,从Linux 2.6 版本开始它已经成为 Linux 内核的一部分,即LVS运行于操作系统层面。

由于LVS基于OSI参考模型的网络层,免去了请求到应用层的层层解析工作,而且LVS工作于操作系统层面,所以 LVS 相比于Nginx有更高的性能。LVS 用于网络接人层时也被称为四层负载均衡器。

LVS和Nginx在转发请求时的区别:

  1. Nginx 是基于 OSI 参考模型的第七层(应用层)协议开发的,采用了异步转发形式。Nginx 在保持客户端连接的同时新建一个与业务服务器的连接,等待业务服务器返回响应数据,然后再将响应数据返回给客户端。Nginx 选择异步转发的好处是可以进行失败转移(failover),即:如果与某台业务服务器的连接发生故障,那么就可以换另一个连接,提高了服务的稳定性。Nginx 主要强调的是“代理”。
  2. LVS 是基于OSI 参考模型的第四层( 网络层)协议开发的,采用了同步转发形式。当LVS 监听到有客户端请求到来时,会直接通过修改数据包的地址信息将流量转发到下游服务器,让下游服务器与客户端直接连接。LVS 主要强调的是“转发”。

LVS 主要有4种转发模式:NAT模式、FULLNAT 模式、TUN模式、DR模式。


3、LVS+Nginx接入层架构

互联网接入架构图:




四、数据存储

1、MySQL

  1. 主从架构:一台MySQL服务器作为Master,若干MySQL服务器作为Slave。正常情况下,只有Master处理写数据请求,同时Master与Slave通过主从复制技术保持数据一致
  2. MHA(Master High Availability)架构:依赖多个主从集群搭,发生故障时,自动切换MySQL集群为Master节点提供服务
  3. MMM(Multi-Master Replication Manager For MySQL)架构:MySQl双主故障切换和双主管理得脚本组件。它有两个Master,并实现了这两个Master得高可用
  4. MGR(MySQL Group Replication,MySQL组服复制)架构:MySQL5.7.17版本推出得高可用解决方案。至少由3个MySQL节点组成一个复制组,一个事务必须经过复制组内超过一半得节点决议通过后才能提交

2、Redis

  1. 主从模式
  2. 哨兵模式
  3. 集群模式
  4. 中心化集群架构

3、LSM Tree

LSM Tree ( Log-Structured Merge Tree)是一种对高并发写数据非常友好的键值存储楼型,同时兼顾了查询效率。LSM Tree是我们下面将要介绍的NoSQL数据库所依赖的核心数据结构,例如 Big Table、HBase、Cassandra、TiDB 等。

  1. 文档数据库MongoDB、CouchDB
  2. 列式数据库:BigTable、HBase
  3. 全文搜索数据库:Elasticsearch
  4. 图数据库:Neo4j、Titan




五、其他

1、注册中心:服务注册

2、RPC:远程过程调用

3、消息中间件:异步、削峰、解耦

4、多机房:主备机房、同城双活、两地三中心

  • 16
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默辨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值