01 接入问题引入
从输入网站域名到网页加载出来,都经历了哪些过程
02 企业接入升级打怪之路
域名系统
自建DNS服务器
HTTPS协议
接入全站加速
- 静态加速CDN
- 动态加速DCDN
- 针对 POST 等非静态请求等不能在用户边缘缓存的业务,基于智能选路技术,从众多回源线路中择优选择一条线路进行传输。
四层负载均衡
基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。
常见调度算法
- RR轮询: Round Robin,将所有的请求平均分配给每个真实服务器RS
- 加权RR轮询: 给每个后端服务器一个权值比例,将请求按照比例分配
- 最小连接: 把新的连接请求分配到当前连接数最小的服务器
- 五元组hash: 根据sip、sport、proto、dip、dport对静态分配的服务器做散列取模
- 缺点: 当后端某个服务器故障后,所有连接都重新计算,影响整个 hash 环
- 一致性hash: 只影响故障服务器上的连接session,其余服务器上的连接不受影响
- 常见实现方式:FULLNAT
特点
- 大部分都是通过 dpdk 技术实现,技术成熟,大厂都在用
- 纯用户态协议栈,kernel bypass,消除协议栈瓶颈
- 无缓存,零拷贝,大页内存 (减少 cache miss)
- 仅针对4层数据包转发,小包转发可达到限速,可承受高 cps
七层负载均衡
Nginx
特点
- 模块化设计,较好的扩展性和可靠性
- 基于 master/worker 架构设计
- 支持热部署;可在线升级
- 不停机更新配置文件、更换日志文件、更新服务器二进制
- 较低的内存消耗:1万个 keep-alive 连接模式下的非活动连接仅消耗2.5M内存
- 事件驱动: 异步非阻塞模型、支持 aio,mmap(内存映射)
异步非阻塞
- 传统服务器: 一个进程/线程处理一个连接/请求阻塞模型、依赖OS 实现并发
- Nginx: 一个进程/线程处理多个连接/请求异步非阻塞模型、减少OS 进程切换
Nginx简单调优
03 动手实践
快速将本地服务开放给外网:ngrok