面试 - 003

文章讲述了CDN如何分散网络流量以提高用户访问速度,以及TCP粘包现象和解决方案,包括固定长度消息、特殊字符分隔和自定义数据结构。此外,还对比了select和epoll在多路复用技术中的不同,强调epoll在效率上的优势。
摘要由CSDN通过智能技术生成

CDN 什么是 CDN 为什么需要这个?

在传统的互联网访问中,如果所有用户的请求都打到一个服务器上面,那么这个服务器肯定是受不了的,所以说将资源分配到不同的服务器上面是有必要的。
用户连接 CDN 服务器的时候,有那么多的服务器,选择哪一个进行连接是需要选择的。这个时候便是需要使用 CDN 的算法,使得用户访问到距离它最近的 CDN 服务器,这样一来,使得用户的体验感更好了。

TCP 粘包是什么

在客户端向服务器发送数据包的时候,可能为了提升数据包传输的效率,将多个包合并到一起发送,这样就发生了粘包的现象。
数据包到达服务器,服务器如果没有正确的解析包,那么可能导致数据解析错误,导致程序的运行错误。

为了保证 TCP 粘包的问题解决,使用下面的方式可以解决:
1、固定长度的消息
就是用户发送的消息的长度大小是固定的,每个包就是只是发送 64 字节,灵活不够高。

2、特殊字符作为边界,在服务器收到数据的时候,一旦发现某个特殊的字符说明这就是包之间的分界点,就能正确的识别数据包。

3、自己定义数数据结构,在发送数据的时候,明确的写清楚每个包的大小到底是多少,那么服务器在解析的时候就能正确的识别每一个包,不会导致数据解析出问题。

select 和 epoll 之间的区别

多路复用就是使用一个进程同时监控多个客户端连接,或者说同时监听多个文件描述符,当发现某个 socket 发生事件时候,就调用服务器的相关应用程序处理请求。

多路复用只是监听多个客户端连接的 socket 连接

这是不同的多路复用器,里面维护已连接 sockets 的方式不同

select 使用数组维护所有的已连接 socket ,每次会将数组中的所有 socket 集合拷贝到内核中,检查是否有某个 socket 发生了可以读或者写的事件,然后将时间发送到应用程序中处理请求,并且返回数据。

epoll 是将所有的已连接 sockes 放置到内核中,在内核中维护一个有事件发生的链表,将有发生事件的 socket 发送给应用程序处理,不需要一次性的全部拷贝,提升了效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值