这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记,下面是笔记内容,如有错误,请同学批评指正。
将服务开放给用户
DNS查询过程
权威DNS系统
网络优化
-
静态加速CDN
- 解决服务器端的“最后一公里”问题
- 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响
- 减轻了各省的出口带宽压力
- 优化了网上热点内容的分布
-
动态加速DCDN
针对POST等非静态请求等不能在用户边缘缓存的业务,基于智能选路技术,从众多回源路线中择优选择一条线路进行传输。
-
全站加速
四层负载均衡
基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。
特点:
- 通过dpdk技术实现;
- 纯用户态协议栈,消除协议栈瓶颈;
- 无缓存、零拷贝、大页内存;
- 仅针对4层数据包转发,小包转发可达到限速,可承受高cps。
三个主要的功能:
- 解耦vip(向外部直接面向用户请求,作为用户请求的目标的IP地址)和rs(Real Server,后端真实的工作服务器)
- NAT(Network Address Translation网络地址转换)
- 防攻击:syn proxy
引入一致性hash的概念,下面详细介绍一下:
一致性哈希是分布式系统组件负载均衡的首选算法。
一致性hash算法是因为节点数目发生改变时,尽可能少的数据迁移而出现的。比如扩容时,需要50%的数据迁移;但如果引入一种算法,可以减少数据的迁移量,所以就出现了一致性hash算法。将所有的存储节点排列在收尾相接的hash环上,每个key在计算Hash后会顺时针找到临接的存储节点存放。而当有节点加入或退出时,仅影响该节点在Hash环上顺时针相邻的后续节点。
- 优点加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。
- 缺点数据的分布和节点的位置有关,因为这些节点不是均匀的分布在哈希环上的,所以数据在进行存储时达不到均匀分布的效果。所以,出现了增加虚拟节点的方式来减少不均衡的现象。
遇到的问题
当节点数量较少时,会出现分布不均匀的问题。
雪崩效应
当存储热点数据的节点宕机之后,hash环上的其他节点也相继挂掉。
解决方法
一致性hash升级版
基于原来的物理节点映射出N个虚拟节点,并把这些子节点映射到hash环上。
七层负载均衡
重点介绍Nginx 7层反向代理
简介
- 模块化设计,扩展性和可靠性
- 基于master/worker架构设计
- 支持热部署;可在线升级
- 不停机更新配置文件、更换日志文件、更新服务器二进制
- 较低的内存消耗:1万个keep-alive连接模式下的非活动连接仅消耗2.5m内存
- 事件驱动:异步非阻塞模型,支持aio,mmap内存映射
Nginx性能优化