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…...

git提交到远程仓库如何撤回?
git提交到远程仓库如何撤回? 要撤回已经提交到远程仓库的更改,你可以使用以下步骤: 首先,确保你的本地仓库是最新状态。如果不是,请先执行 git pull 来更新你的本地仓库。 使用 git log 查看提交历史,找到你想要撤回…...

微信小程序常用全局配置项及窗口组成部分详解
微信小程序常用全局配置项及窗口组成部分详解 引言 微信小程序作为一种新兴的应用形态,凭借其轻量级、便捷性和丰富的功能,已成为开发者和用户的热门选择。在开发小程序的过程中,了解全局配置项和窗口组成部分是至关重要的。本文将详细介绍微信小程序的常用全局配置项及窗…...

ThingsBoard规则链节点:Azure IoT Hub 节点详解
目录 引言 1. Azure IoT Hub 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 数据传输 3.2 数据分析 3.3 设备管理 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,提供了设备…...

「Mac玩转仓颉内测版32」基础篇12 - Cangjie中的变量操作与类型管理
本篇将深入探讨 Cangjie 编程语言中的变量操作与类型管理,涵盖变量的定义、作用域、类型推断、常量、变量遮蔽、类型转换等方面的知识。通过这些概念的学习,开发者将更好地理解和灵活掌握变量的使用与管理技巧。 关键词 变量定义类型推断常量变量作用域…...

【Android】RecyclerView回收复用机制
概述 RecyclerView 是 Android 中用于高效显示大量数据的视图组件,它是 ListView 的升级版本,支持更灵活的布局和功能。 我们创建一个RecyclerView的Adapter: public class MyRecyclerView extends RecyclerView.Adapter<MyRecyclerVie…...

麒麟系统性能瓶颈分析
1.使用率,表示资源用于服务的时间或容量百分比。100% 的使用率,表示容量已经用尽或者全部时 间都用于服务。 2. 饱和度,表示资源的繁忙程度,通常与等待队列的长度相关。100% 的饱和度,表示资源无法接受 更多的请求。 3…...

Java二分查找+冒泡排序
二分查找在编程中是用来查找目标元素在有序数组中的位置,并返回目标元素的索引 先给定一个有序数组,在创建一个方法来进行二分 主要思想是:根据数组具有下标的特点来分别计算,最左边的索引,以及最右边的索引,在判断目标元素与中间元素的大小,如果目标元素小于中间元素,我们可…...

(三)手势识别——动作识别应用【代码+数据集+python环境(免安装)+GUI系统】
(三)手势识别——动作识别应用【代码数据集python环境(免安装)GUI系统】 (三)手势识别——动作识别【代码数据集python环境GUI系统】 背景意义 随着互联网的普及和机器学习技术的进一步发展,手…...

大数据实战——MapReduce案例实践
🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 大数据实战——MapReduce案例实践 一.过程分析(截图)1. 确定Hadoop处于启动状态2. 在/usr/local/filecotent…...

OpenCV基础(3)
1.图像直方图 1.1.像素统计 计算图像均值: Scalar cv::mean(InputArray src,InputArray masknoArray()); src:输入图像mask:掩膜层过滤 返回值是对输入图像通道数计算均值后的Scalar对象 计算图像均值与方差: void cv::meanSt…...