当前位置: 首页 > 科技观察

2021年流行的网络系统架构

时间:2023-03-15 20:42:21 科技观察

2021年了,一起来看看流行的网络系统架构吧。系统的质量属性必须满足客户的需求,所以架构的第一出发点也是需求。偏好的需求构成场景,架构的选择基于应用场景的偏好。网络系统在管道中的位置大致可以分为两类:傻快型:无内容感知,主要是交换和路由。比如各种交换机、路由器等设备,主要靠硬件。纯软件实现的需求,主要是牺牲部分硬件的高性能来换取管理维护的方便和统一,如SDN、NFV。目前,为了实现硬件和软件的集成,x86架构普遍采用高速可编程网卡和转发芯片(如支持P4)。获得绩效和管理的双重优势。但本质还是矛盾的。硬件的专业化将导致管理的专业化。具体问题需要详细讨论解决,不再展开。智能:内容感知,主要是业务驱动的负载均衡和网关系统。比如负载均衡、API网关等,主要靠软件。今天重点说一下2021年流行的软件架构,因为这两种没有明确的界限,但是都有一定程度的内容意识,所以互联网行业对业务驱动的网络系统的需求很大。因此,网络基础设施的软件化不仅是统一管理的问题,更是在通用设备上难以完美解决的具体业务问题。虽然软件实现的性能不佳,但其灵活性和硬件解耦带来的收益大于性能收益,其水平扩展能力也弥补了整体性能。好处主要体现在快速迭代(满足需求的速度)、硬件统一、部署灵活、运维简单。因此,暂时将引入硬件来解决单点性能问题作为第二个因素考虑。让我们一层一层地讲。eBPF-Passthrough2021eBPFfoundation应该是没有争议的,比较用eBPF实现的XDP和DPDK,结合我们刚才提到的问题。DPDK还是有Intel和DPDK网卡的硬件限制。eBPF系统约束更小,Kernel>4.8就足够了。虽然性能略弱,但可以在纯Linux上运行,可以在用户态和内核态之间灵活衔接,需要的迭代速度远高于DPDK。所以笨快的软件可以选择DPDK,但智能的XDP更合适。基于此的项目包括k8s网络组件Cilium,以及Facebook的业务负载均衡Katran。Cilium-网络迭代和硬件都说完了,再来看部署,部署:盒子,私有系统,各种云。对应的是Metal,VM,container等。因为eBPF的限制,没有操作系统的pureMetal不在讨论范围之内,仍然是一个很傻的方案。可以在各种部署下运行的网络是用户态网络。只要XDP是符合内核要求的Linux,Cilium已经证明DPDK与容器结合时更费力。所以eBPF还是有更多优势的。基于此的软件系统可以安装在任何Linux、VM、Docker上,实现各种环境的统一架构。未来在网络层应该会有其他的XDP用户协议栈方案。如果不需要路由和交换的网络功能,可以直接和应用结合,比如Katran。Envoy-GatewayCilium解决网络问题、路由和交换以及简单的策略。但是业务感知也需要灵活的网关,网关的选择我之前研究过。https://donge.org/posts/envoy-vs-traefik/如果这里的网络选择了Cilium(主要针对容器场景),那么Envoy是最好的组合。Evony在第四层进行服务感知,进行服务级路由和网关,具有强大的策略配置驱动和插件机制,也是快速迭代的首选。这里虽然拍了一张K8S中CNI的图,但Cilium也可以只作为一个具有网络路由功能的用户态协议栈,也可以省略。Golang-插件使用通用网关来驱动特定服务。插件无法绕过。为了平衡性能和迭代速度,Golang比C++、Lua、JavaScript和Rust略有优势。因为开发效率高,性能好。当然,WASM插件也是一个强大的解决方案,但是今年,优势还早,得不偿失。而且和Golang不冲突,Envoy也支持WASM和LUA。不过只要不是每天都在变的逻辑,Golang适度的综合例子还是略胜一筹。RustwithWASM在未来也有很大的潜力。为什么全家福被称为2021流行架构,因为几年后可能会有更好的选择,就像XDP相对于DPDK的优势一样,符合DPDK诞生时没有的一些趋势,比如容器化。最后奉上这张原创全家福,欢迎抄袭。基于此可以快速满足大部分网络系统,包括业务路由(负载均衡)、WAF、API网关、单点认证、日志记录、QoS、跟踪系统等,也可以部署在非硬件依赖独立、私有化和混合云环境等环境。虽然性能处于第二梯队,但XDP、Golang等选择也是第二梯队的王者。网络性能的热点更多的可能在IO、并发(锁)、加解密压缩和反压缩(计算)上,而他们的解决方案从来不是什么语言,有机会再讨论。附言K3S是轻量级的K8S,适合小型系统部署。