第九次课堂记录 | 青训营笔记

137 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第9篇笔记.

将我的服务开放给用户

一、接入问题引入

1.1 经典问题

访问 www.toutiao.com 到网页加载出来都经历了哪些过程?

  1. 域名解析
  2. TCP连接
  3. SSL握手
  4. ......

浏览器抓包

根源或本质? 只需要关注首次访问的请求

image.png

1.2 字节接入框架

image.png

二. 企业接入升级打怪之路

2.1 使用域名系统

2.1.1 Host 管理

image.png

随着example公司业务规模和员工数量的增长,使用该方式面临的问题:

  • 流量和负载:用户规模增长,文件大小越来越大,引起较大的网络流量和cpu负载
  • 名称冲突:无法保证主机名称的唯一性,同名主机添加导致服务故障
  • 时效性:分发依靠人工上传,时效性差

2.1.2 使用域名系统

使用域名系统替换hosts文件

关于域名空间:

  • 被组织成树形结构
  • 通过划分zone的方式进行分层授权管理
  • 全球公共域名空间仅对应一棵树
  • 根域名服务器:查询起点
  • 域名组成格式:[a-zA-Z0-9_-],以点划分label

image.png

2.1.3 域名购买与配置迁移

域名备案:防止网上从事非法运营活动,需要实名认证

  • 修改配置:清空/etc/hosts
  • 配置/etc/resolv.conf中nameservers为公共DNS
  • 迁移原配置,通过控制台添加解析记录

2.1.4 如何开放外部用户访问

租赁一个外网ip,专用于外部用户访问门户网站,将www.example.com 解析到外网,将ip绑定到物理机上,并发布公网route,用于外部用户访问。

image.png

2.2 自建DNS服务器

2.2.1 问题背景

  • 内网域名的解析也得出公网去获取,效率低下
  • 外部用户看到内网ip地址,容易被攻击
  • 云厂商权威DNS容易出故障,影响用户体验
  • 持续扩大公司品牌技术影响力,使用自己的DNS系统

2.2.2 DNS查询过程

image.png

2.2.3 DNS记录类型

image.png

2.2.4 权威DNS系统架构

常见的开源DNS:bind,nsd,knot,coredns

image.png

2.3 接入HTTPS协议

2.3.1 出现的问题

  • 页面空白/出现一些神奇的东西
  • 返回403页面
  • 搜索问题带小尾巴,经常闪烁
  • 弹窗广告.......

HTTP明文传输,弊端明显

2.3.2 对称加密与非对称加密

image.png

2.3.3 SSL通信过程

  • client random
  • server random
  • premaster secret
  • 加密算法协商 -> 对称密钥 session key

image.png

2.3.4 证书链

Server端是发送带签名的证书链

Client会收到但是仍然需要验证

  • 是否是可信机构颁布
  • 域名与实际访问的一致性
  • 数字签名是否一致
  • 证书的有效期
  • 证书的撤回状态

2.4 接入全站加速

2.4.1 问题背景

image.png

2.4.2 解决方案

  • 源站容量问题:增加后端机器扩容,静态内容,使用静态加速缓存
  • 网站传输问题:动态加速DCDN
  • 全站加速:静态加速+动态加速

2.5 四层负载均衡

2.5.1 什么是四层负载均衡

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

image.png

2.5.2 常见调度算法原理

  • RR轮询:Round Robin 将所有的请求平均分配给每个真实服务器RS
  • 加权RR轮询:给每个后端服务器一个权值比例,将请求按照比例分配
  • 最小链接:把新的连接请求分配到当前连接数最小的服务器
  • 五元组hash:根据sip、sport、proto、dip、dport对静态分配的服务器做散列取模
  • 一致性hash:只影响故障服务器上的连接session,其余服务器上的连接不受影响

2.5.3 使用四层负载均衡

image.png