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 问题引入
从输入网站域名 - 到网页加载出来经历了什么
- 域名解析
- TCP建联
- SSL握手
- …
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查询过程
- 网络客户端 - 本地DNS服务器
- DNS根服务器
- .com域服务器
- 返回客户端
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 使用全站加速
-
用户首次登录抖音,注册用户名手机号等信息—— 静态加速 CDN
-
抖音用户点开视频加载后观看—— 动态加速 DCDN
-
打开今日头条进行网页浏览—— 静态加速 CDN、动态加速 DCDN
2.5 负载均衡
负载均衡(Load Balance,简称 LB)是高并发、高可用系统必不可少的关键组件,目标是 尽力将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。
负载均衡的主要作用如下:
高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力(吞吐量)。
伸缩性:添加或减少服务器数量,然后由负载均衡进行分发控制。这使得应用集群具备伸缩性。
高可用:负载均衡器可以监控候选服务器,当服务器不可用时,自动跳过,将请求分发给可用的服务器。这使得应用集群具备高可用的特性。
安全防护:有些负载均衡软件或硬件提供了安全性功能,如:黑白名单处理、防火墙,防 DDos 攻击等。
2.5.1 问题背景
在运营商租用了公网 IP,企业内部如何使用?
- 现状:
- 找一个物理机
- 租多个公网 ip(数量有限)
如何管理有限的公网 ip?
2.5.2 什么是 4 层负载均衡?
基于 IP+ 端口,利用某种算法将报文转发给某个后端服务器,实现负载均衡地落到后端服务器上。
三个主要功能:
- 解耦 vip 和 rs
- NAT
- 防攻击: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 复习总结
梳理接入架构
碎碎念:坚持
与君共勉。
相关文章:
241125学习日志——[CSDIY] [ByteDance] 后端训练营 [16]
CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…...
如何优化 PHP 性能?
以下是一些常见的优化 PHP 性能的方法: 启用缓存,例如使用 OPcache 来加速 PHP 脚本的执行。合理使用数据库索引,优化数据库查询语句。避免不必要的计算和重复操作,尽量复用数据和结果。减少文件包含的数量和复杂度。优化代码逻辑…...

【Linux服务器】内存问题排查
概述 项目制作过程中经常出现内存问题,在该处对排查思路进行汇总,也对常见问题进行总结,以期待下一次遇到相似问题时可以快速排查,然后解决问题 排查流程总结 首先检查内存的整体情况 使用工具htop和seme快速得知系统内存使用的…...

ModuleNotFoundError: No module named ‘simple_knn‘
【报错】复现 GaussianEditor 时引用 3D Gaussian Splatting 调用simple_knn 时遇到 ModuleNotFoundError: No module named ‘simple_knn‘ 报错: 【原因】 之前安装时直接进行配置pip install simple-knn 【解决办法】 查看 requirements.txt,才发现需…...

【论文分享】采用现场测量、卫星影像和机器学习方法研究空气温度与城市发展强度之间的关系
鉴于城市热问题的严重性,城市化与空气温度之间的关系已成为全球关注的关键问题。本次我们给大家带来一篇SCI论文的全文翻译。该论文提取了常见城市规划指标,这些指标通过卫星影像来确定城市发展的强度。该论文确定的关系可以帮助在城市化和植被平衡的决策…...

Linux -初识 与基础指令1
博客主页:【夜泉_ly】 本文专栏:【Linux】 欢迎点赞👍收藏⭐关注❤️ 文章目录 📚 前言🖥️ 初识🔐 登录 root用户👥 两种用户➕ 添加用户🧑💻 登录 普通用户⚙️ 常见…...

页的初步认识
关于准备 我们在之前的学习中,已经学习了相当一部分有关段的知识,CPU提供了段的机制来给我们的内存进行保护,但实际上我们在x86下的段base是0,实际上并没有偏移 两种分页模式 我们有两种分页模式,29912分页和101012…...

[C++]:IO流
1. IO 流 1.1 流的概念 在C中,存在一种被称为“流”的概念,它描述的是信息流动的过程,具体来说就是信息从外部输入设备(比如常见的键盘)传输到计算机内部(像内存区域),以及信息从内…...

Excel如何批量导入图片
这篇文章将介绍在Excel中如何根据某列数据,批量的导入与之匹配的图片。 准备工作 如图,我们准备了一张员工信息表以及几张员工的照片 可以看到,照片名称是每个人的名字,与Excel表中的B列(姓名)对应 的卢易…...

TCP socket api详解
文章目录 netstat -nltpaccept简单客户端工具 telnet 指定服务连接connect异常处理version 1 单进程版version 2 多进程版version 3 -- 多线程版本version 4 ---- 线程池版本 应用-简单的翻译系统服务器细节write 返回值 客户端守护进程化前台和后台进程的原理Linux的进程间关系…...
《C++搭建神经网络基石:开启智能编程新征程》
在人工智能的璀璨星空中,神经网络无疑是最为耀眼的星座之一。而 C以其卓越的性能和高效的执行效率,成为构建神经网络模型的有力武器。今天,就让我们一同探索如何使用 C构建一个基础的神经网络模型,踏上智能编程的奇妙旅程。 一、…...
if (条件) { return true; } return false; 简写为 return 条件 详解
在 Java 中,将以下代码: if (条件) {return true; } return false;简写为: return 条件;原理 在 Java 中,条件 是一个布尔表达式,它直接返回 true 或 false。所以,if-else 结构中的逻辑判断和返回值的逻…...
Pytorch使用手册-Datasets DataLoaders(专题三)
数据集与数据加载器(Datasets & DataLoaders) 在 PyTorch 中,torch.utils.data.Dataset 和 torch.utils.data.DataLoader 是数据处理的两种核心工具。它们通过模块化的方式,将数据加载与模型训练分离,提高代码的可读性和可维护性。 1. 加载数据集 以 Fashion-MNIST …...

【数据结构】双向链表、单向循环链表、双向循环链表、栈、链栈
目录 一、双向链表 定义类和封装函数以及测试样例如下: 注意事项: 二、循环链表 单循环列表的类和函数封装如下: 注意事项: 三、双向循环链表 结点类和双循环链表的定义部分 函数封装之判空和尾插 双循环链表遍历 双循…...

(动画)Qt控件 QProgressBar
文章目录 QProgressBar1. 介绍一、基本特性二、核心属性 2. 代码实现3. 动画效果 QProgressBar 1. 介绍 QProgressBar是Qt框架中的一个控件,主要用于显示进度条,以图形化的方式表示任务的完成进度或操作的进度。 一、基本特性 显示方向:…...
【AI】基础原理
文章目录 前言1. AI 是如何学习的?2. AI 怎么做决定?3. AI 的“大脑”是什么样的?4. AI 为什么会犯错?5. AI 的不同类型总结:AI 的本质是什么? 前言 人工智能(AI)这个词对很多人来说…...

多模态大型语言模型(MLLM)综述
目录 多模态大语言模型的基础 长短期网络结构(LSTM) 自注意力机制 基于Transformer架构的自然语言处理模型 多模态嵌入概述 多模态嵌入关键步骤 多模态嵌入现状 TF-IDF TF-IDF的概念 TF-IDF的计算公式 TF-IDF的主要思路 TF-IDF的案例 训练和微调多模态大语言模…...

计算机的错误计算(一百六十六)
摘要 探讨 MATLAB 关于算式 的计算误差。 例1. 已知 计算 直接贴图吧: 然而,16位的正确结果为 -0.9765626220703239e-21(ISRealsoft 提供)。这样,MATLAB输出的有效数字的错误率为 (16-2)/16 87.5% . 注&…...
typeof 和 as 关键字
在编程语言中,类型系统是确保代码正确性和可维护性的关键。JavaScript和TypeScript作为现代前端开发的两大支柱,它们在处理类型方面有着不同的机制。本文将探讨typeof和as这两个关键字在JavaScript和TypeScript中的应用,帮助开发者更好地理解…...

Python酷库之旅-第三方库Pandas(237)
目录 一、用法精讲 1116、pandas.tseries.offsets.BusinessHour.is_year_end方法 1116-1、语法 1116-2、参数 1116-3、功能 1116-4、返回值 1116-5、说明 1116-6、用法 1116-6-1、数据准备 1116-6-2、代码示例 1116-6-3、结果输出 1117、pandas.tseries.offsets.Cu…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...