Skip to content

Commit

Permalink
fix typo
Browse files Browse the repository at this point in the history
  • Loading branch information
isno committed Jan 14, 2025
1 parent 7fc0878 commit 0b10fa2
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 13 deletions.
2 changes: 1 addition & 1 deletion architecture/background.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Mark Andreessen 是风险投资公司 Andreessen-Horowitz 的联合创始人(
- 企业 IT(Enterprise IT):规模小、变化慢,容易处理。
- 电信(Telcos):规模大、变化慢,主要应对硬件失败。
- 初创公司(Startups):规模小、变化快,主要应对软件失败。
- 网络规模的互联网企业(Web-Scale):规模大、变化快,软硬件或者说所有东西都会出问题。
- 互联网企业(Web-Scale):规模大、变化快,软硬件或者说所有东西都会出问题。

:::center
![](../assets/ppt4.jpg)<br/>
Expand Down
10 changes: 5 additions & 5 deletions container/auto-scaling.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,18 +140,18 @@ spec:
```
## 7.8.4 节点自动伸缩
业务的增长(也有可能萎缩),会导致集群资源不足或者过度冗余。为了控制成本,动态伸缩的范畴应该扩展到整个集群范围,也就是说能根据资源利用率情况自动增/减节点
业务的增长(也有可能萎缩),会导致集群资源不足或者过度冗余。开源节流的背景下,根据资源利用率情况自动增/减节点,集群规模越大,降低的成本越高!
专门用于自动扩展和缩减集群节点的组件为 Cluster AutoScaler。它的主要功能如下
- **自动扩展(Scale Up)**:当集群中的节点资源不足以满足当前的 Pod 请求时,Cluster AutoScaler 自动向云服务提供商(如 GCE、GKE、Azure、AKS、AWS 等)请求创建新的节点,扩展集群容量,确保应用能够获得所需的资源。
- **自动缩减(Scale Down)**:当某个节点的资源利用率长期处于较低水平(如低于 50%),Cluster AutoScaler 自动将该节点上的 Pod 重新调度到其他节点,确定节点可安全地移除时,将这些节点从集群中移除,减少成本和资源浪费。
专门用于自动增/减节点组件为 Cluster AutoScaler。它的功能如下
- **自动扩展(Scale Up)**:当节点资源不能满足 Pod 需求时,Cluster AutoScaler 自动向云服务提供商(如 GCE、GKE、Azure、AKS、AWS 等)请求创建新的节点,扩展集群容量,确保应用能够获得所需的资源。
- **自动缩减(Scale Down)**:当节点资源利用率长期处于低水平(如低于 50%),Cluster AutoScaler 自动将该节点上的 Pod 重新调度到其他节点,然后将节点从集群中移除,减少成本和资源浪费。
:::center
![](../assets/Cluster-AutoScaler.png)<br/>
图 7-40 Cluster AutoScaler 自动缩减(Scale Down)的原理
:::
Cluster Autoscaler 虽然是 Kubernetes 官方标准,但是由于他深度依赖公有云厂商,因此具体使用方法、功能以及限制以公有云厂商具体实现为准。笔者就不再过多介绍了。
虽然 Cluster Autoscaler Kubernetes 官方提供的组件,但它深度依赖公有云厂商!因此具体使用方法、功能以及限制以公有云厂商实现为准,笔者就不再过多介绍了。
[^1]: 参见 https://keda.sh/docs/2.12/scalers/
[^2]: 参见 https://keda.sh/community/#end-users
Expand Down
14 changes: 7 additions & 7 deletions network/networking.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

本节,我们了解数据包进入网卡(eth0)后,Linux 内核中各个模块是如何相互协作的,对 Linux 系统下网络包的接收过程有个全局性的认识。

总结 Linux 系统收包流程,笔者绘制出图 3-1。
Linux 系统收包流程,如图 3-1 所示
:::center
![](../assets/networking.svg)<br/>
图 3-1 Linux 系统收包流程
:::

1. 当外部网络发送数据包到服务器时,首先由网卡 eth0 接收该数据包
2. 网卡通过 DMA(Direct Memory Access,直接内存访问)技术,将数据包直接拷贝到内核中的 RingBuffer(环形缓冲区)等待 CPU 处理。RingBuffer 是一种首尾相接的环形数据结构,它的主要作用是作为缓冲区,缓解网卡接收数据的速度快于 CPU 处理数据的速度问题。
3. 数据包成功写入 RingBuffer 后,网卡产生 IRQ(Interrupt Request,硬件中断),通知内核有新的数据包到达。
4. 内核收到硬件中断后,立即调用对应的中断处理函数。通常情况下,中断处理函数会简单地标记有新数据到达,并唤醒 ksoftirqd 内核线程来处理软中断(SoftIRQ)。
5. 软中断处理过程中。内核调用网卡驱动提前在内核中注册的 NAPI(New API)poll 接口,从 RingBuffer 中提取数据包,并生成 skb(Socket Buffer)数据。skb 是 Linux 内核中用于管理网络数据包的主要结构。它包含了网络包的所有信息,包括头部、数据负载等,并在内核的各个网络协议层之间传递
6. skb 被传递到内核协议栈中进行处理。这里涉及多个网络层次的处理操作
1. 外部数据包到达服务器时,首先由网卡 eth0 接收
2. 网卡通过 DMA(Direct Memory Access,直接内存访问)技术,将数据包拷贝到内核中的 RingBuffer(环形缓冲区)等待 CPU 处理。RingBuffer 是一种首尾相接的环形数据结构,它作为缓冲区,缓解网卡接收数据的速度快于 CPU 处理数据的速度问题。
3. 接着,网卡产生 IRQ(Interrupt Request,硬件中断),通知内核有新的数据包到达。
4. 内核调用中断处理函数,标记有新数据到达。接着,唤醒 ksoftirqd 内核线程,执行软中断(SoftIRQ)处理
5. 软中断处理中,内核调用网卡驱动的 NAPI(New API)poll 接口,从 RingBuffer 中提取数据包,并转换为 skb(Socket Buffer)格式。skb 网络子系统中用于描述网络数据包的核心数据结构。数据包的发送、接收还是转发,内核都会通过 skb 来处理
6. skb 被传递到内核协议栈,在多个网络层次间处理
- 网络层(L3 Network layer):根据主机中的路由表,判断数据包路由到哪一个网络接口(Network Interface)。这里的网络接口可能是稍后介绍的虚拟设备,也可能是物理网卡 eth0 接口。
- 传输层(L4 Transport layer):如解/封数据包,处理网络地址转换(NAT)、连接跟踪(conntrack)等操作。
7. 内核协议栈处理完成后,数据包被传递到 socket 接收缓冲区。应用程序随后利用系统调用(如 Socket API)从缓冲区中读取数据。至此,整个收包过程结束。
Expand Down

0 comments on commit 0b10fa2

Please sign in to comment.