如何将我的服务开放给用户:构建 API 接口和用户认证的实践指南 | 豆包MarsCode AI刷题

122 阅读6分钟

01. 接入问题

抓包,分为4个过程:DNS -> TCP -> TLS -> HTTP请求

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

2.1 域名系统

假设example公司需要注册一个域名。

2.1.1 Host管理

管理Host到ip的映射。

Host局限:当公司业务规模和员工数量增长时,流量和负载、名称冲突、时效性都会出问题。

2.1.2 使用域名系统

使用域名系统来替换hosts文件

被组织为树型结构,全球公共域名空间仅对应一棵树。域名组成格式为:[a-zA-Z0-9],以点划分label。

image.png

顶级域gTLD:general Top-level Domains:

  • .gov 政府
  • .edu 教育
  • .com 商业
  • .mil 军事
  • .org 非盈利组织

2.1.3 域名购买与配置迁移

可以在火山引擎等网页进行域名购买。此时,二级域名多了一个example。

但购买后该域名不可以直接使用,需要在云厂商处进行实名认证并备案。

之后,进行配置的修改:

  • 清空/etc/hosts
  • 配置/etc/resolv.confnameservers为公共DNS
  • 通过控制台添加解析记录来迁移原配置

2.1.4 如何开发外部用户访问

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

image.png

2.2 自建DNS服务器

2.2.1 问题

  1. 内网域名的解析也需要出公网去获取,效率低。
  2. 外部用户可以看到内外ip地址,有被hacker攻击的风险。
  3. 云厂商权威DNS容易出故障。

2.2.2 DNS查询过程

image.png

2.2.3 DNS记录类型

  • A/AAAA:IP指向记录,用于指向IP,前者为IPv4记录,后者为IPv6记录。
  • CNAME:别名记录。
  • TXT:文本记录,购买证书时需要。
  • MX:邮件交换记录,用于指向邮件交换服务器。
  • NS:解析服务记录,用于指定哪台服务器对于该域名解析。
  • SOA记录:起始授权机构记录。

2.2.4 权威DNS系统架构

image.png

例如,要访问www.example.com,那么首先会解析这个地址,然后Local DNS会向自建权威DNS服务器发起请求,最终会拿到ip地址100.1.2.3,最后用户访问100.1.2.3把请求打到公司的机房内部,从而获取HTTP请求的结果。

2.3 HTTPS协议

2.3.1 出现问题

弹窗广告、页面出现白页、搜索不了东西等

因为HTTP是明文传递,请求的时候可能被篡改。

升级版:从HTTP变成HTTPS

2.3.2 对称加密和非对称加密

对称加密:一份密钥,即双方使用相同的密钥。但由于客户端和服务端使用相同的密钥,那么也就是说在传输文件前双方需要先传输密钥,这个就可能造成密钥泄露。

非对称加密:公钥和私钥。即如果使用公钥对数据进行加密,那么使用私钥对数据进行解密。如果使用私钥对数据进行加密,那么使用公钥对数据进行解密。

2.3.3 SSL通信过程

对称密钥session key,双方使用session key进行数据传输。

2.3.4 证书链

公钥是存在证书链中的。

整数摘要信息,也就是指纹。对其进行加密,形成数字签名。服务器会把数字签名连同上级的CA发给客户端,客户端使用上级CA公钥对信息进行解密,如果解密成功,则摘要信息没有错误,保证了数据的安全性。

2.4 接入全站加速

2.4.1 问题背景

外网用户访问站点,如果源站容量低,那么用户可能无法访问。如果报文经过的网络设备越多,那么出现丢包、劫持等问题概率越大。时延高。

2.4.2 解决方案

出现的问题解决方案
源站容量问题增加后端机器扩容;静态内容使用静态加速缓存
网络传输问题动态加速DCDN

全站加速:静态加速 + 动态加速

2.4.3 静态加速 CDN

静态文件:如图片、文字、安装包、压缩包等。

静态加速本质上是缓存

它解决了服务器端“第一公里”问题,缓解甚至消除不同运行商之间互联的影响,减轻了各省的出口宽带压力,优化网络热点内容的分布。

2.4.4 动态内容 DCDN

终端用户在发送请求的时候会通过DCDN节点进行传输,当有数据拥堵的时候就选择别的DCDN节点。最终将数据传输到源站。

2.4.5 DCDN原理

image.png

越往中心,节点越少,容量越小,越远离用户。

越往边缘,节点越多,容量越大,越靠近用户。

2.4.6 使用全站加速

  1. 用户首次登录抖音,注册用户名手机号等用户信息。 动态加速DCDN
  2. 抖音用户点开某个特定的短视频加载后观看。 静态加速CDN
  3. 用户打开头条官网进行网页浏览。 静态加速CDN + 动态加速DCDN 因为第一条请求是使用动态加速的,后面显示的内容是静态加速的

image.png

2.5 四层负载均衡

2.5.1 什么是4层负载均衡?

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

三个主要功能:

  • 解耦vip和rs
  • NAT
  • 防攻击: syn proxy

2.5.2 常见的调度算法原理

RR轮询,Round Robin,将所有请求平均分配给每个真实服务器RS。

加权RR轮询,给美国后端服务器一个权值比例,将请求按照比例分配。

最小连接,把新的连接请求分配到当前连接数最小的服务器。

2.5.3 常见实现方式 FULLNAT

image.png

2.5.4 4层负载均衡特点

大部分是通过dpdk技术实现;纯用户态协议栈,kernel bypass,消除协议栈瓶颈;无缓冲、零拷贝、大页内存;小宝转发可达到限速,可承受高cps。

2.5.5 使用四层负载均衡

image.png

2.6 七层负载均衡

2.6.1 Nginx 简介

使用最广泛的7层负载均衡。

通过模块化设计;基于master/worker架构设计;支持不停机更新配置文件、更换日志文件、更新服务器二进制;较低的内存消耗;事件驱动为异步非阻塞模型,支持aio、mmap。

2.6.2 Nginx 反向代理示意图

image.png

03. 动手实践

3.1 如何将本地服务开放到外网访问

可以使用Ngrok, Expose your localhost to the web

image.png

使用命令:./jgrok http example.com:8082

04. 参考资料

网络与部署

05. 小结

课程最后老师还留了大作业,如果有同学写了,麻烦在评论区留下言,我想学习学习。