浅谈抖音的互联网架构(方向三:实践记录以及工具使用)| 豆包MarsCode AI 刷题”

152 阅读5分钟

抖音作为一个全球领先的短视频平台,其背后依赖于复杂且高度优化的互联网架构和技术实现。抖音整体采用的是典型的微服务架构,每个功能模块(如用户服务、推荐服务、评论服务等)独立部署,服务间通过轻量级的RPC(如gRPC)或HTTP协议通信。

它的核心服务依赖分布式架构,支持水平扩展;前端使用Nginx/Envoy等作为负载均衡器,后端采用服务网格(如Istio)分发流量;通过消息队列(Kafka/RabbitMQ)解耦服务间的同步调用,提升系统吞吐量。而它的数据中心采用多活架构(Active-Active),确保服务的高可用性;数据存储上实现多副本冗余,采用Raft/Paxos等一致性协议保障数据可靠性,还支持快速故障切换(Failover)和故障隔离,并且使用的是大数据处理框架(如Hadoop、Spark、Flink)进行分析数据,采用分布式数据库(如HBase、Cassandra)和对象存储(如AWS S3)对数据进行存储。在它的架构中,主要涉及到网络接入,网络传输以及给网络提速的优化问题。

一、网络接入

首先是和互联网接入。PC或者Pad等终端通过wifi或者移动数据一些无线网接入,再从有线网络接入运营商网络,这些运营商网络会和服务器或者机房进行连通,同时在海外的tiktok,也会和美国的网络通过海底光缆进行接入。在同网段中,可以通过集线器或者交换机等一些物理设备进行连接,也可以通过软件定义网络等一些虚拟设备来进行发包和交互;而在跨网段中,如果想连接两个跨网段的服务器,需要配置一条路由,中间需要一个网关;或者配置一个默认路由,并且路由不一定是对称的。总体来说路由工作在IP层。并且还要注意,路由改的不是IP地址,改的是MAC地址,在获取路由的MAC地址以后,再找到相应的发包口。而获取MAC地址是通过ARP协议,并且只有逻辑同网段才能直接发送ARP协议,不同网段需要寻找下一跳,再发送ARP协议。即ARP本质上是查找下一跳的MAC,不是请求目标地址。

IP协议是唯一的标识,在互联网是通用的,抖音的客户端有一个,抖音的服务端有一个,并且不能用MAC地址来代替IP地址。当IPV4不够用时,可以用IPV6,并且当有的设备不能支持IPv4时,可以用NAT。内部用户通过NAT设备来修改源地址。并且当多个内网客户端访问同一个目标地址+端口时,当源端口恰好一样时,也不会发生冲突,因为NAT是将目标地址和端口都做了修改,不会因为源端口一致而造成冲突。

二.网络传输

数据包的传输有两个阶段。一是发送阶段,从应用的客户端发送到传输层的socket,TCP,UDP协议,再到网络层的IP协议,再到数据链路层的Network Device和Network Driver,再到物理层的网络设备,这样就发送给了源机器。接收阶段基本是发送阶段的逆过程,由目的机器传到应用的服务器端。

接下来还需要先请求DNS,客户端发送的请求是一个递归请求,本身的DNS会请求一个递归DNS解析器,这里会发生一个迭代请求,首先会请求根域服务器,然后请求顶级域服务器,按照com,douyin.com类似的顺序去请求,然后就会找到了服务端。DNS本身是基于UDP协议的,UDP本身比较简单,想发什么包,就分配一个UDP的头就可以,把payload里面塞数据发出去就好。但是UDP想用好比较难,因为它不是一个可靠安全的协议。

这时就用到TCP连接,其中涉及到TCP的三次握手。而在网络传输时,有时不直接用TCP进行通信,大部分用HTTP进行通信,其实它依然是TCP,它只是多加了一层规矩,只是这个规矩让用户更清晰/更简洁。而HTTP1.1在HTTP的基础上,适合更长地连接,部分传输,在HOST和缓存上优势也更大;HTTPS相比HTTP而言,更加的安全保密;有时也会用到SSL和TLS证书,SSL证书是一种用于保护互联网连接的标准技术,保护方法是对在网站和浏览器(或两个服务器之间)之间发送的数据进行加密;而TLS是SSL的经过更新的、更安全的版本。

三.给网络提速

给网络提速时,可以通过协议进行优化,比如用HTTP2.0,多路复用/stream,QUIC/HTTP3.0协议等;也可以通过路径优化,比如数据中心分布,同运营商访问,用静态资源路径优化,用动态API路径优化等。