《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 02 Clos拓扑
本章回答以下问题:
- 什么是 Clos 拓扑,它与“接入 - 汇聚 - 核心”拓扑有何不同?
- Clos 拓扑的特征是什么?
- Clos 拓扑对数据中心网络的影响是什么?
Clos拓扑
云原生数据中心基础设施的先行者们想要构建一种支持大规模水平扩展网络。
基本的Clos拓扑如图2-1所示,一层称为spine(主干交换机),一层称为leaf(叶子交换机)
因此该布局也通常被称为 leaf - spine拓扑。
- 每个leaf交换机同时连接到每个spine交换机上。
- leaf交换机之间没有直接连接,而是通过spine交换机进行相互连接。
- 服务器通过leaf交换机连接到网络。
在部署网络时,通常的做法是将服务器和leaf交换机放在同一个机架,并将leaf交换机放在机架的顶部。因此,leaf交换机通常称为架顶交换机(TOR)
因为在任何两台服务器之间都有两条以上的路径,这种拓扑产生了一个高容量的网络。该网络拓扑中添加了更多的 spine 交换机,因此增加了 leaf 交换机之间的可用带宽。
spine交换机只有一个目的:连接不同的leaf交换机。
- 服务器不会直连到 Spine。
- Spine 也不承担其他的功能。因此 Spine 与“接入 - 汇聚 - 核心”类型网络中的汇聚交换机功能并不相同
Clos 拓扑中,所有功能都下沉到了网络边缘的leaf 交换机和服务器节点上,网络中心的 spine 交换机除连接 leaf 交换机之外并不提供任何其他的网络功能。
由于具有水平扩展的架构,Clos 网络可以用一种非常一致的方式进行扩展。 通过添加更多的 leaf交换机和服务器节点,可以增加网络支撑的工作负荷。spine 交换机只用于扩展边缘节点之间的可用带宽。
相比之下,在“接入 - 汇聚 - 核心”类型的网络中网络的扩展是通过增强汇聚交换机的CPU来实现的,这样的架构称为垂直扩展架构。
图2-2 经典的三阶段Clos 拓扑
使用同类设备
通过这种拓扑,Charles Clos 使得构建非常大型的电信级网络变得更经济,因为可以使用相对较小的交换机来构建网络。 以类似的方式,采用 Clos 拓扑结构,我们可以使用简单的盒式交换机 (这种交换机的功能是固化的,出厂后不能通过扩展模块进行升级)来构建非常大型的分组交换网络。
路由作为基本的互连模式
“接入 - 汇聚 - 核心” 网络的一个基本限制是只能支持两个汇聚交换机。
Q: Clos 拓扑如何才能支持两个以上的 Spine 交换机?
A: 在Clos 拓扑中没有使用生成树协议 (STP) 作为交换机之间的互连控制协议。在 Clos 网络中:
- 仅在网络边缘 (即在单个机架内) 直接支持桥接。
- 跨机架的桥接,使用例如虚拟可扩展局域网 (VXLAN)的网络虚拟化解决方案。(重点掌握)
Q: 那路由方式(routing)到底是如何支持多台 Spine 的呢?
A: 通过 ECMP (Equal-Cost Multipath,等价多路径)路由实现。现在几乎每种数据转发芯片都支持IP路由,并且 IP路由和桥接的成本,延迟和带宽几乎相同,消除了对IP路由速度较慢的担忧。ECMP 允许沿着多个等价路径中的任何一个路经转发数据包。例如,在图 2-1 中,一个leaf交换机可以使用任意 spine 交换机连接到任何一个其他 leaf 交换机,并且连接到任何一个 leaf 交换机的代价是相同的。
因此,基本上来说,Clos 拓扑使用了路由而不再是桥接来作为主要的数据包转发模式。
Clos拓扑中的收敛比
在分组交换网络中,交换机的收敛比被定义为下行链路和上行链路带宽之比。
在leaf交换机层面,下行链路是面向服务器节点的连接,而上行链路是面向spine交换机的连接。
1:1
的收敛比意味着下行总带宽等于上行总带宽。
大部分数据中心都会确保Clos网络中的高层具有1:1的收敛比。在三层或四层Clos网络中,可能只在leaf级别不是1:1的收敛比。
采用1:1
的收敛比的网络也被称为非阻塞网络
假设spine和leaf都是n端口交换机且所有的n个端口都具有相同的带宽,并采用
1:1
的超额订阅比,则图2-1中的Clos拓扑可连接的最大服务器数量为 n 2 / 2 n^2/2 n2/2推导如下:
leaf上端口数量为 n / 2 n/2 n/2,spine数量为 n / 2 n/2 n/2,leaf最大数量 = n × n / 2 n / 2 = n \frac{n \times n/2}{n/2}=n n/2n×n/2=n
可连接的最大服务器数量= n × n / 2 = n 2 / 2 n \times n/2 = n^2/2 n×n/2=n2/2
假设图2-3中所有交换机都是四端口交换机,leaf交换机L1到L4各有两个连接到服务器的端口,以及和每个spine交换机连接的一个端口,可连接的服务器总数为 4 × 4 / 2 = 8 4 \times 4 /2 = 8 4×4/2=8。如果使用 64 端口交换机,则可连接的服务器总数为 6 4 2 / 2 = 2048 64^2/2 = 2048 642/2=2048台。
在一个使用n端口交换机的完全展开的二层Clos拓扑中,一共需要 n + n / 2 n + n/2 n+n/2台交换机。
尽管 2048 台服务器足以满足大多数中小型企业的需求,但这种设计号称能支持成万甚至数十万台服务器,如何才能实现呢? 书中将在“扩展 Clos 拓扑”中进行说明。
需要补充的是,采用 1:1
收敛比的网络也称为非阻塞网络 (从技术上讲,它实际上是非竞争性的),因为理论上从一个下行链路到一个上行链路的流量不需要与来自其他下行链路的流量进行竞争。**但是,即使超额订阅比为 1:1
,Clos 拓扑在技术上也只能是可重排的无阻塞,而不是完全无阻塞。**在某些流量模式下,流的哈希算法可能导致来自不同下行链路的数据包使用相同的上行链路(如“流和拥塞”中所述) 。如果可以对使用同一上行链路的来自不同下行链路的流重新排列,以使这些流使用不同上行链路,则可以使网络再次畅通无阻。因此,这被称为可重排的非阻寒。
流和拥塞
当到目的地的下一跳节点超过一个时,路由器可以随机选择一个节点来转发教据包,或者选择一个节点以确保属于同一个流的所有数据包都使用相同的下一个节点。一个流大致定义为一组相关的数据包。
最常见的是TCP或UDP的流定义,对这两种协议,一个流定义为源IP地址、目标IP地址、4层协议类型 (TCP或UDP) 、源端口和目标端口组成的五元组。 其他协议的数据包对于流也有相应的定义。
识别一个流的主要原因是为了确保与该流相关的协议正常运行。如果节点使用不同的网络路径转发相同流的多个数据包,则这些数据包可能以与发送顺序不同的顺序到达目的地。这种无序交付会严重影响协议的性能,进而影响使用该协议的应用程序的性能。但在另一方面,确保最大化利用所有可用网络带宽也很重要,即尽量使用所有可以到达目标的网络路径。每个网络节点都会基于这两点进行平衡,以做出转发决策。
为确保一个流的所有数据包都采用相同的下一跳,路由器 (硬件或软件) 使用了基于流的哈希算法。这意味着路由器会根据数据包的头信息和一些其他信息,例如来源的交换机端口,为每个数据包计算一个哈希值。然后使用该哈希值的某些固定字节对可用下一跳节点个数取模,以计算该数据包使用的下一跳节点。这种计算流的下一跳的方法使路由器能够确保一个流的所有数据包都采用相同路径进行转发,而无需在路由器中为每一个流单独保存状态。
需要理解的一个重要因素是,虽然对流进行哈希可以保证流在链路上均匀分布,但对应到数据包的分配并不均匀,这是因为不同的流中有不同数量的数据包。这意味着尽管网络中的流均匀分布,但总带宽的利用并不均匀。这种情况导致了链路拥塞,特别是在某些流中包含的数据包远超过合理数量的情况下。包含较多数据包的流称为大象流,而数据包相对较少的流称为老鼠流。网络表现出经典的重尾分布形态,一部分流占用了绝大部分的网络带宽。当多个大象流被分配在同一链路上时,将引起网络拥塞,并影响该链路上的老鼠流。这就是所谓的象 - 鼠(elephant-mice) 问题。
即使没有象 - 鼠问题,在某些特定的流量模式下,流哈希算法也可能导致某些链路相对于其他链路更偏向于被用于转发。这种不平衡的上行链路利用率被称为流量极化。大多数数据转发芯片都有更改其哈希算法参数的功能,以缓解或消除流量极化。
互连链路速率
常见的Clos模型部署在服务器链路使用一种速率,而交换机间链路(ISL, inter-switch link)则使用更高的速率。使用高速上行链路的主要原因是,可以使用更少的spine交换机来支持相同的收敛比。
目前为止,只有极少数大型数据中心运营商在网络中使用等速上行链路。
这样的好处是:
-
即使使用端口较少的交换机,也可以构建很大的网络。(最主要的原因)
-
更好的负载均衡。
根据上一节中的示例,使用较低速率的交换机意味着该网络中可以使用 54 个10GbE的10端 spine 交换机,而不是16个40GbE的32端口交换机(32个 40GbE 端口中的一半)。由于下一跳数量由 16 个增加到 54个,大大降低了象 - 鼠问题的风险。
-
更多的交换机意味着在链路或 spine 交换机发生故障时,受到影响的故障域更小
一些现实的限制
前面部分的数字是根据理论计算出来的,并不完全符合实际情况。实际与理论不符的原因与 Clos 拓扑无关,而是与设备散热,机架大小标准,服务器摆放和交换芯片技术等的技术限制有 关。
最常见的是每个机架上20台或40台服务器
以图2-4 左为例,假设每个机架上有40台服务器,使用一个有64个10GbE端口的交换机连接这写服务器,在交换机上还有24个空闲端口。
如果仅将其中20个用于上行链路,这上行链路带宽为200GbE,收敛比为 400 : 200 = 2 : 1 400:200 = 2:1 400:200=2:1
在二层Clos网络中,可以连接 64 × 40 = 2560 64 \times 40 = 2560 64×40=2560个服务器,大于理论上的2048台服务器( 64 × 64 / 2 64 \times 64 /2 64×64/2)
假设spine和leaf都是64端口的设备,因为spine要连接到每一台leaf,因此leaf最多64台,spine为20台
以图2-4 右为例,将24个10GbE端口合并为6个40GbE端口组成一个4-spine交换机网络,则收敛比为 400 : 160 = 2.5 : 1 400:160 = 2.5:1 400:160=2.5:1
由于大部分企业中的服务器不支持40GbE或100GbE的端口,因此一些40GbE或100GbE的端口会被拆分为10GbE或25GbE的端口,并使用这些端口连接到服务器。假设面向服务器的连接速率为25GbE,每个机架不超过40台服务器,则需要10个100GbE的连接服务器的端口(10 x 100 = 25 x 40),对于1:1
的收敛比,需要10个100GbE的连接spine的端口,一共使用leaf上的20个端口,会导致交换机上有很多未使用的端口。因此,有些资源少的组织会部署双连接服务器,以利用40个面向服务器的端口。
简而言之,尽管数据中心运营商希望使用端口数量较多的交换机来构建更大的网络,但他们也想在 leaf 节点使用端口数量较少的交换机。为了满足这些需求,交换机设备供应商通常会提供两种(如果不是更多的话)交换机设备类型,一种用于spine节点,一种用于 leaf 节点。
细粒度的故障域
如果有2个以上的spine交换机,则单个链路或spine节点的故障不会造成灾难性的后果。
对于有16台spine交换机的网络,单个spine节点或链路故障只会导致总带宽减少 1 / 16 1/16 1/16。
考虑一个具有n台spine交换机( S 1 − S N S_1-S_N S1−SN)和m台leaf交换机( L 1 − L M L_1-L_M L1−LM)的网络拓扑。
假设当L1和S1之间的链路发生故障时,所有其他leaf交换机将停止采用从S1来到L1。对于已经到达S1,但需要发送到L1的流量,可以通过L2和S2发送到L1。
尽管在leaf和spine之间跳转的流量会导致这些leaf交换机的链接发生拥塞,但是与STP不同,路由协议将故障链路的影响仅限制在连接到该链路的节点上。
拓展Clos拓扑
本节中,假设每层之间的收敛比都为
1:1
,只有最底层除外。
图2-5(b)中,使用四端口交换机构建了一个可以连接16台服务器的三层Clos网络。
将原本二层Clos网络中的leaf交换机下再接入一层交换机,将虚线框看作一个二层交换机。
作者称之为虚拟机箱模型
One way to build a three-tier Clos topology is to take the two-tier Clos topology of Figure 2-5(a) but instead of attaching servers directly to the leaves, create another tier by attaching another row of switches.
The model in Figure 2-5(b) is a three-tier model popularized by Facebook. I call this the virtual chassis model because some vendors build a single large chassis-based switch that houses the two layers represented by the dashed box (see “A Different Kind of Chassis for Clos” for more details).
图2-5(c)中,将二层Clos拓扑中的spine交换机拿出两个端口,并将它们连接到另一层交换机(SS1-SS4)
该模型通常称为pod或集群模型。
虚线中的交换机原来属于二层Clos交换拓扑,现在将这些交换机每4个组成一个单元,通常称为pod或集群。
连接这些pod的新的一层交换机在本书中称为“超级spine交换机”
The new layer of switches that connects the pods is called by different names: some refer to this tier as super-spine switches or inter-pod spine switches, whereas others just relabel the three tiers in which the spine becomes the top-most tier, and what we called spine-leaf in the two-tier Clos topology becomes leaf-ToR in the three-tier Clos topology. In this book, we follow the leaf, spine, super-spine terminology.
类似二层Clos的公式,由n端口交换机组成的三层Clos网络可以支持的服务器数量为 n 3 / 4 n^3/4 n3/4。
对于64端口交换机,可与支持的服务器总数为 6 4 3 / 4 = 65536 64^3/4=65536 643/4=65536
该公式对以上两种建立Clos网络的方式均成立
一个完全展开的三层Clos拓扑中所需的交换机总数为: n + ( n 2 ) n+(n^2) n+(n2)
以Pod模型为例,每个Pod中的spine交换机的数量为端口数的一半 n/2(虚线框中的S11、S12)
每个spine交换机支持的leaf交换机数量也为 n/2(虚线框中的L11、L12)
因此每个Pod中有n个交换机
超级交换机的数量 = 交换机端口数量n
最多连接n个Pod,即每一个超级交换机都挂接到一个由n个Spine交换机组成的网络中
两种三层模型的比较
这两种模型在流量上的均匀程度有所不同
虚拟机箱模型整个网络的通信延迟更为一致
pod模型,pod内和跨pod的服务器通信存在两种截然不同的延迟。
提供云服务并需要本地化客户实力的数据中心运营商更倾向于使用pod模型。
在pod模型中,如果大多数流量都在pod内部,则开始构建网络时可以之部署较少的超级交换机。
Clos网络的最佳实践
交换机之间不使用多链路
图2-6(b)中,如果L2到S1之间的一条链路发生故障,从L1的角度来看,它仍然能看到通往L2的两条等价路径,导致它想S1和S2发送相同数量的去往L2的流量,然而,S1的带宽实际只有S2的half,这导致一些随机的流遭受分组丢失增加或等待时间延长。
如果将两条链路绑定在一起,则不同的路由协议也不能很好的支持。
If the two links are treated as a bond, the behavior is different with different routing protocols. In Border Gateway Protocol (BGP), we can use a feature called link bandwidth extended community to send proportional traffic to S1 and S2, but the way to make this work in the presence of multiple links and link failures is not commonly supported. Using Open Shortest Path First (OSPF) or Intermediate System to Intermediate System (IS-IS), the link failure would result in a drop in cost of the link, and L1 would simply stop using S1 as a path to L2. So OSPF and IS-IS cannot handle this, either.
因此,不要考虑使用多个链路增加带宽,而是通过增加其他的spine和leaf节点来增加带宽,并使这些节点的链路数量保持一致。
spine交换机只用于连接
保留细粒度的故障域,降低发生拥塞的风险。
不使用框式交换机作为spine交换机
框式交换机是一种模块化的硬件,其内部有多个交换线卡以及一个或多个主控板卡。一个交换线卡上有多个交换端口。机箱内所有的交换线卡均通过一个专用背板或交叉连接。这种内部交叉连接的一个常用称呼是 crossbar。“接入 - 汇聚 - 核心”网络中的汇聚交换机通常是这框式交换机。
当框式交换机发生故障时,其故障原因更复杂,从而使故障定位变得更加困难。
使用框式交换机的另一个顾虑是,它使原本简单的资产管理变得复杂。
应当使用盒式交换机。
主机连接模式(Host Attach Models)
在现代数据中心中,带有一个或两个网卡的主机最为常见。
服务器要么通过单个连接点连接到一个leaf交换机上,也可以是如图2-7所示的双连接,两个网卡分别连接到两个不同的leaf交换机上。使用双连接的主要原因是,如果一个leaf交换机因计划维护或故障而下线,运营商甚至无法承受影响一个服务器机架的损失。这种情况通常发生在较小的数据中心。
当主机为双连接时,一些运营商选择仅在主备模式下使用;也就是说,一次只有一个链接处于活动状态。在这种情况下,运营商只关心确保链路故障不会切断服务器与网络的连接。但大多数运营商更喜欢同时使用这两个链路。在这种情况下,有三种可能的模型:
1)最常见的方式是将主机上的两个连接进行绑定(也称为port-channel或链路聚合)。如图2-7(a)所示。
从主机端来看,它看起来像一个标准的IEEE 802.3ad协议定义的链路绑定。
在交换机方面,最常见的方法是使用通常称为MLAG的供应商专有协议。该协议可以让主机认为它通过绑定(或port-channel)连接到单台交换机。
2)当MLAG与以太网VPN(EVPN)等网络虚拟化技术结合使用时,连接主机的两个leaf交换机之间可能不存在连接,如图2-7(b)所示。
3)主机通过路由使得其在对外转发流量时同时使用这两个连接。如图2-7(c)所示。
相关文章:

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 02 Clos拓扑
本章回答以下问题: 什么是 Clos 拓扑,它与“接入 - 汇聚 - 核心”拓扑有何不同?Clos 拓扑的特征是什么?Clos 拓扑对数据中心网络的影响是什么? Clos拓扑 云原生数据中心基础设施的先行者们想要构建一种支持大规模水平扩展网络。 基本的Clos拓扑如图…...

VUE3版本新特性
VUE3版本新特性 VUE3和VUE2的区别路由的使用vite安装项目新特性使用 1.VUE3和VUE2的区别 2020年9月18日,Vue.js发布版3.0版本,代号:One Piece 于 2022 年 2 月 7 日星期一成为新的默认版本! Vue3性能更高,初次渲染快55%, 更新渲染快133% 。…...

【Oracle篇】Oracle数据库坏块处理:rman修复坏块实践与案例分析(第七篇,总共八篇)
💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…...
学懂C#编程:从一个简单的例子理解事件处理
在C#中,事件是一种特殊的委托类型,用于在对象上发生某些事情时通知订阅者。事件的处理通常包括定义事件,创建触发事件的条件,以及订阅该事件的事件处理程序。 以下是一个简单的C#事件处理示例: using System;// 定义…...

深入理解指针(2)
4. const 修饰指针 4.1 const修饰变量 变量是可以修改的,如果把变量的地址交给⼀个指针变量,通过指针变量的也可以修改这个变量。 但是如果我们希望⼀个变量加上⼀些限制,不能被修改,怎么做呢?这就是const的作⽤。 …...

C#.Net筑基-集合知识全解
01、集合基础知识 .Net 中提供了一系列的管理对象集合的类型,数组、可变列表、字典等。从类型安全上集合分为两类,泛型集合 和 非泛型集合,传统的非泛型集合存储为Object,需要类型转。而泛型集合提供了更好的性能、编译时类型安全…...

AI PPT生成器,一键在线智能生成PPT工具
PPT作为商业沟通和教育培训中的重要工具,PPT制作对于我们来说并不陌生。但是传统的PPT制作不仅耗时,而且想要做出精美的PPT,需要具备一定的设计技能。下面小编就来和大家分享几款AI PPT工具,只要输入主题,内容就可以在…...

stm32学习笔记---零基础入门介绍2
目录 STM32介绍 STM32家族系列 ARM介绍 ARM内核型号种类 我们学习用的STM32 片上资源/外设(Peripheral) 命名规则 系统结构 引脚定义 STM32的启动配置 STM32最小系统电路和其他部分电路 最小系统板的实物图 附:安装软件准备 声明…...

搭建取图系统app源码开发,满足广泛应用需求
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 图片已成为信息传递的重要媒介,广泛应用于各个领域。为满足日益增长的图片需求,搭建一款高效的取图系统,可以为用户提供便捷、全面的…...

语音质量评价方法之MOS
引言 在语音增强、语音合成、语音转换、声音转换、语音克隆、语音修复等等领域,常常要对输出的语音进行评价。对语音的质量评价一般关注两个方面,即主观评价和客观评价。主观评价就是人凭借听觉感受对语音进行打分,客观评价比较广泛…...

gorm简介
【1】ORM: 即Object-Relational Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它们就可以了。 【2】GORM gorm是go语言的一个orm…...

MySQL:SELECT list is not in GROUP BY clause 报错 解决方案
一、前言 一大早上测试环境,发现测试环境的MySQL报错了。 SELECT list is not in GROUP BY clause and contains nonaggregated column二、解决方案 官方文档中提到: 大致意思: 用于GROUP BY的SQL / 92标准要求满足以下条件: SE…...
IPython的使用技巧
1、解释说明 IPython是一个强大的Python交互式shell,它提供了丰富的功能,如自动补全、历史记录、内置帮助等。IPython使得在命令行下编写和测试Python代码变得更加方便和高效。 2、使用示例 安装IPython: pip install ipython启动IPython…...
Spring Boot 多线程例子
在Spring Boot中,多线程可以通过Java的并发工具来实现。以下是一些常见的多线程实现方法: 1. 使用Async注解和CompletableFuture: 首先,需要在Spring Boot应用的主类上添加EnableAsync注解,以启用异步支持。 java Spr…...
java干货 线程池的分析和使用
文章目录 一、了解线程池1.1 什么是线程池1.2 为什么需要线程池 二、四种线程池的使用2.1 newFixedThreadPool2.2 newCachedThreadPool2.3 newSingleThreadExecutor2.4 newScheduledThreadPool 三、自定义线程池3.1 线程池七大核心参数3.2 线程池内部处理逻辑 一、了解线程池 …...
文本张量入门
张量,英文为Tensor,是机器学习的基本构建模块,是以数字方式表示数据的形式。 张量的基本类型: 创建一个标量(0维张量),也就是一个单独的数字 scalar torch.tensor(7) scalar.ndim # 返回张量的维度 0 # …...
js文字如何轮播?
<div class"td-style"> <span class"td-text">内容1内容1内容1内容1内容1内容1</span> </div> css: <style> .td-style { width: 160px; height: 72px; overflow: hidden; white-…...

Linux 五种IO模型
注:还有一种信号驱动IO,使用较少暂不讨论; 一,区分阻塞、非阻塞和同步、异步 看了很多文章对这两组概念解释和对比,说的太复杂了,其实没必要,两句话就能说清楚。 首先,对于读数据rec…...

深度解析响应式异步编程模型
上一篇文章中我们聊了一下线程池,基于线程池的多线程编程是我们在高并发场景下提升系统处理效率的有效手段,但却不是唯一的。今天我们来看一下另一种异步开发的常用手段-响应式编程模型 传统多线程模型的缺陷 多线程模型是目前应用最为广泛的并发编程手段,但凡遇到什么性能…...

一个软件是如何开发出来的呢?
一、前言 如今,AI大爆发的时代,作为一名IT从业者,你是否也想尝试开发一套自己的系统,实现那些看似有可能实现的天马行空的想法,变成一个优秀甚至伟大的产品,甚至带来某个行业的革新,那作为一名…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...

如何做好一份技术文档?从规划到实践的完整指南
如何做好一份技术文档?从规划到实践的完整指南 🌟 嗨,我是IRpickstars! 🌌 总有一行代码,能点亮万千星辰。 🔍 在技术的宇宙中,我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...
虚幻基础:角色旋转
能帮到你的话,就给个赞吧 😘 文章目录 移动组件使用控制器所需旋转:组件 使用 控制器旋转将旋转朝向运动:组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转:必须移动才能旋转,不移动不旋转控制器…...

GC1808:高性能音频ADC的卓越之选
在音频处理领域,高质量的音频模数转换器(ADC)是实现精准音频数字化的关键。GC1808,一款96kHz、24bit立体声音频ADC,以其卓越的性能和高性价比脱颖而出,成为众多音频设备制造商的理想选择。 GC1808集成了64倍…...