将服务开放给用户--个人总结 | 青训营笔记

118 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记,下面是笔记内容,如有错误,请同学批评指正。

将服务开放给用户

DNS查询过程

image.png

权威DNS系统

image.png 网络优化

  1. 静态加速CDN

    • 解决服务器端的“最后一公里”问题
    • 缓解甚至消除了不同运营商之间互联的瓶颈造成的影响
    • 减轻了各省的出口带宽压力
    • 优化了网上热点内容的分布
  2. 动态加速DCDN

    针对POST等非静态请求等不能在用户边缘缓存的业务,基于智能选路技术,从众多回源路线中择优选择一条线路进行传输。

  3. 全站加速

image.png

四层负载均衡

基于IP+端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。

image.png

特点:

  1. 通过dpdk技术实现;
  2. 纯用户态协议栈,消除协议栈瓶颈;
  3. 无缓存、零拷贝、大页内存;
  4. 仅针对4层数据包转发,小包转发可达到限速,可承受高cps。

三个主要的功能:

  1. 解耦vip(向外部直接面向用户请求,作为用户请求的目标的IP地址)和rs(Real Server,后端真实的工作服务器)
  2. NAT(Network Address Translation网络地址转换)
  3. 防攻击:syn proxy

引入一致性hash的概念,下面详细介绍一下:

一致性哈希是分布式系统组件负载均衡的首选算法。

一致性hash算法是因为节点数目发生改变时,尽可能少的数据迁移而出现的。比如扩容时,需要50%的数据迁移;但如果引入一种算法,可以减少数据的迁移量,所以就出现了一致性hash算法。将所有的存储节点排列在收尾相接的hash环上,每个key在计算Hash后会顺时针找到临接的存储节点存放。而当有节点加入或退出时,仅影响该节点在Hash环上顺时针相邻的后续节点。

  1. 优点加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。
  2. 缺点数据的分布和节点的位置有关,因为这些节点不是均匀的分布在哈希环上的,所以数据在进行存储时达不到均匀分布的效果。所以,出现了增加虚拟节点的方式来减少不均衡的现象。

遇到的问题

当节点数量较少时,会出现分布不均匀的问题。

雪崩效应

当存储热点数据的节点宕机之后,hash环上的其他节点也相继挂掉。

解决方法

一致性hash升级版

基于原来的物理节点映射出N个虚拟节点,并把这些子节点映射到hash环上。

七层负载均衡

重点介绍Nginx 7层反向代理

简介

  1. 模块化设计,扩展性和可靠性
  2. 基于master/worker架构设计
  3. 支持热部署;可在线升级
  4. 不停机更新配置文件、更换日志文件、更新服务器二进制
  5. 较低的内存消耗:1万个keep-alive连接模式下的非活动连接仅消耗2.5m内存
  6. 事件驱动:异步非阻塞模型,支持aio,mmap内存映射

Nginx性能优化

image.png

课程总结

image.png