241125学习日志——[CSDIY] [ByteDance] 后端训练营 [16]

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!!

第一弹:Cpp零基础学习【30 DAYS 从0到1】

第二弹:Cpp刷题文档【LeetCode】

第三弹:Go开发入门【字节后端青训营】

第四弹:Cpp简单项目开发【黑马Rookie】

第五弹:数据结构绪论【数据结构与算法】

第六弹:Go工程实践【字节后端青训营】

第七弹:高质量编程和性能调优【字节后端青训营】

第八弹:Linux 基础知识【书生大模型训练营】

第九弹:Python 基础知识【书生大模型训练营】

第十弹:Git 基础知识【书生大模型训练营】

第十一弹:玩转HF/魔搭/魔乐社区【书生大模型训练营】

第十二弹:书生大模型全链路开源体系【书生大模型训练营】

第十三弹:玩转书生「多模态对话」与「AI搜索」产品【书生大模型训练营】

第十四弹:浦语提示词工程实践【书生大模型训练营】

第十五弹:HTTP 框架修炼之道【字节后端青训营】

第十六弹:打开抖音会发生什么【字节后端青训营】

第十七弹:将我的服务开放给用户【字节后端青训营】

  • 系统熟悉和学习企业级网络接入核心组件及基本原理
  • 面试时,别惹问道你从输入网页到内容加载出来
  • 从零到一搭建属于自己的网站
  • 学会故障排查

01. 接入问题的引入

1.1 问题引入

从输入网站域名 - 到网页加载出来经历了什么

  1. 域名解析
  2. TCP建联
  3. SSL握手
  4. ...

1.2 字节接入框架

A life of a request...

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

2.1 使用域名系统

2.1.1 Host管理
2.12 使用域名系统

替代 hosts 文件

关于域名空间:

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

域名购买

购买二级域名

域名备案:实名认证...

修改配置

2.1.4 如何开放外部用户访问

方案:租赁外网 IP,用于外部用户访问门户网站。

2.2 自建 DNS 服务器

2.2.1 问题背景

内网域名的解析也得出公网去获取,效率低下

外部用户看到内网 ip 地址,容易被 hacker 攻击

...

2.2.2 DNS查询过程
  1. 网络客户端 - 本地DNS服务器
  2. DNS根服务器
  3. .com域服务器
  4. 返回客户端
2.2.3 DNS 记录类型

A/AAAA:IP指向记录

CNAME:别名记录

TXT:文本记录

MX:邮件交换记录

NS:解析服务器记录

SOA:起始授权机构记录

2.2.4 权威 DNS 系统架构

站在企业角度思考,需要哪种 DNS 服务器?

  • 权威 DNS、LocalDNS...

2.3 接入 HTTPS 协议

2.3.1 问题背景
  • 页面返回 403
  • 搜索不了东西
  • 页面弹窗

HTTP 明文传输,弊端越来越明显

故需要 HTTPS

2.3.2 对称加密和非对称加密

常见的加密算法

对称加密:一份密钥

非对称加密:公钥和私钥

  • 私钥存在服务器
2.3.3 SSL 的通信过程
  • client random

  • server random

  • premaster secret

  • 加密算法协商

  • 👇

  • 对称密钥

2.3.4 证书链

Server 是带签名的证书链

摘要信息 - 指纹(数字签名)

利用公钥解密指纹(数字签名)

  • 保证证书不会被篡改
2.3.5 使用 https

在网址头假如https,保证不会被劫持

2.4 全站加速

2.4.1 问题背景
  • 源站容量低,可承载的并发请求数低,容易被打垮
  • ...

响应慢、卡顿 👉 用户流失

2.4.2 解决方案

源站容量 - 静态加速

流量 - 动态加速

2.4.3 静态加速 CDN

缓存:浏览器缓存?可以被下一次调用,而不用访问源站

优势

  • 解决"第一公里"问题(靠近用户的)

  • 缓解消除不同运营商之间互联瓶颈的影响

  • ...

2.4.4 动态加速 DCDN

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

2.4.5 DCDN 原理

边缘节点、汇聚节点、核心机房(一般在核心区)

中心区:机房数量少,算力大

边缘区:机房数量多,算力小

2.4.6 使用全站加速
  1. 用户首次登录抖音,注册用户名手机号等信息------ 静态加速 CDN

  2. 抖音用户点开视频加载后观看------ 动态加速 DCDN

  3. 打开今日头条进行网页浏览------ 静态加速 CDN、动态加速 DCDN

2.5 负载均衡

负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。

负载均衡的主要作用如下:

高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。

伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。

高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。

安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等。

2.5.1 问题背景

在运营商租用了公网 IP,企业内部如何使用?

  • 现状:
  • 找一个物理机
  • 租多个公网 ip(数量有限)

如何管理有限的公网 ip?

2.5.2 什么是 4 层负载均衡?

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

三个主要功能

  1. 解耦 vip 和 rs
  2. NAT
  3. 防攻击:syn proxy
2.5.3 常见调度算法原理
  • RR 轮询:Round Robin

  • 加权 RR 轮询

  • 最小连接

  • 五元组 hash

    缺点:当某个后端服务器故障后,所有连接都重新计算,影响整个hash环。

  • 一致性 hash

2.5.4 常见实现方式 FULLNAT

RS 怎么知道真实的 CIP?

  • 通过 TCP option 字段传递然后通过特殊地内核模块反解
2.5.5 4 层负载均衡特点

大部分都是通过 dpdk 技术实现,技术成熟,大厂都在用

纯用户协议栈,kernel bypass,消除协议栈瓶颈

无缓存,零拷贝...

2.5.6 使用 4 层负载均衡

外网核心设备 - 外网路由器 - 四层负载均衡 - 权威DNS解析/后端服务器

2.6 七层负载均衡

2.6.1 问题背景

四层负载均衡对 100.1.2.3 只能 bind 一个 80 端口,而有多个外部站点需要使用,该如何解决?

有一些 7 层相关的配置需求,该怎么做?

  • SLL 卸载
  • 请求重定向
  • 路由添加匹配策略
  • Header 编辑
  • 跨域支持
  • 协议支持
2.6.2 Nginx 简介

最灵活的高性能 WEB SERVER,应用最广的 7 层负载均衡

  • 模块化设计,较好的扩展性和可靠性
  • 基于 master/worker 架构设计
  • 支持热部署;可在线升级
  • 不停机更新配置文件、更换日志文件...
2.6.3 Nginx 和 Apache 性能对比

Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python解释器编译到服务器中。

2.6.4 Nginx 反向代理
2.6.5 Nginx 内部架构

Cache loader 和 Cache manager

2.6.6 事件驱动模型

03. 动手实践

3.1 服务器搭建

3.2 四层负载均衡方案

开源解决方案:LVS + keepalived

3.3 七层负载均衡实验

3.4 SSL 自签证书实验

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

服务开发前期,如何低成本让别人访问自己的服务?

  • Ngrok,Expose your localhost to the web

04 复习总结

梳理接入架构

碎碎念:坚持

与君共勉。

相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习
babe小鑫4 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms4 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下4 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。4 天前
2026.2.25监控学习
学习
im_AMBER4 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J4 天前
从“Hello World“ 开始 C++
c语言·c++·学习