云原生视角下的开放网络架构

合集下载

云原生架构的设计与实现

云原生架构的设计与实现

云原生架构的设计与实现随着互联网和云计算的快速发展,云原生架构被越来越多的企业所接受和采用。

云原生架构不仅可以提高应用程序的可靠性和可伸缩性,还可以加速企业应用的开发和部署。

在本文中,我们将探讨云原生架构的设计和实现,重点包括云原生架构的概念、核心技术、优势和实践经验。

一、云原生架构的概念云原生架构是指一种以云计算为基础的软件架构,其核心理念是将应用程序切分成多个微服务,并以容器化的形式进行部署和管理。

云原生架构包含三个关键概念:微服务、容器化和自动化。

微服务指的是将一个大型的应用程序拆分成多个小型的服务,以便单独部署和扩展。

容器化指的是将每个微服务以容器的形式进行打包、部署和管理。

自动化指的是使用自动化工具和平台来管理和监控容器化的微服务。

云原生架构还包括其他一些关键概念,例如DevOps文化、敏捷开发、持续集成和持续交付等。

二、云原生架构的核心技术云原生架构所依赖的核心技术包括容器技术、编排技术和服务网格技术。

容器技术是指使用Docker等工具将应用程序打包成容器,并在容器内运行应用程序。

容器技术的优势在于隔离性强、部署快速、可移植性好。

编排技术是指使用Kubernetes等工具来统一管理和编排容器化的微服务。

通过编排技术,可以快速扩展和缩减服务的数量,也可以实现服务的灰度发布等。

服务网格技术是指使用Istio等工具来管理和监控容器化的微服务之间的通信。

通过服务网格技术,可以实现服务之间的流量控制、日志收集、安全加密等。

三、云原生架构的优势云原生架构的优势在于可以提高应用程序的可靠性、可伸缩性和可维护性。

通过将应用程序拆分成多个微服务,可以实现服务之间的解耦,从而减少服务之间的依赖和影响。

通过容器化的部署和管理,可以快速部署和扩展服务,也可以方便地进行服务的迁移和备份。

通过自动化工具和平台,可以快速发现和解决服务的问题,也可以实现应用程序的自动化测试和部署。

四、云原生架构的实践经验在实践中,采用云原生架构需要注意以下几点。

云原生应用的设计和实现

云原生应用的设计和实现

云原生应用的设计和实现云原生应用是近年来兴起的一种全新的应用开发模式,它将应用程序的设计和实现深度融合在云计算的技术体系中,以实现可扩展性、高可用性和灵活性的要求。

本文将从三个方面来探讨云原生应用的设计和实现:云原生理念、技术架构和实践经验。

一、云原生理念云原生理念是云原生应用的核心之一,它包括了一系列的开发、部署和运维的最佳实践,以便为应用程序提供更高的可靠性、可伸缩性和安全性。

这里我们将主要介绍以下三个方面的内容。

1、微服务化微服务架构将一个单一的应用程序分解成了多个小的、可独立运行的服务程序,并通过API 和消息队列来实现它们之间的通信。

每个服务都有自己的代码库和数据库,它们可以独立地设计、开发和调整,以便实现更加敏捷和快速的代码开发和迭代。

2、容器化容器是一种轻型的虚拟化技术,能够更好的实现应用程序的分布式和弹性扩缩容。

应用程序通过容器来快速部署和启动,并可以自动扩展和缩减容器来满足实时的负载需求。

3、基础设施即代码基础设施即代码是一种将 IT 基础设施与代码一起进行版本控制的方法,以提高部署和安全管理的自动化程度。

通过版本化的代码库,可以更加轻松地管理和协作各种设备和云资源的配置和变更,并提高应用程序的可靠性和可恢复性。

二、技术架构云原生应用的技术架构主要包括了以下四个方面:云平台、容器编排、微服务框架和 API 管理器。

1、云平台云平台是云原生应用运行的基础,它提供了云资源的管理和分配、安全性和可用性管理、服务自动化和监控等功能。

常见的云平台包括阿里云、AWS、Microsoft Azure 等。

2、容器编排容器编排是指一种自动化管理容器的方法,包括容器的启动、关闭、弹性伸缩和安全管理等操作。

目前最为流行的容器编排平台包括 Kubernetes、Docker Swarm、Mesos 等。

3、微服务框架微服务框架是一种用于实现微服务应用程序的技术架构,它通过把应用程序划分成多个小的、可独立运行和管理的服务模块,来增加代码的可维护性、可扩展性和可伸缩性。

云原生应用开发的架构和实践

云原生应用开发的架构和实践

云原生应用开发的架构和实践随着云计算技术的不断发展和应用,云原生应用开发逐渐成为了当前技术领域的热门话题。

本文将介绍云原生应用开发的架构和实践,旨在为读者提供一个全面了解云原生应用开发的指南。

一、什么是云原生应用云原生应用是指设计和构建基于云技术的应用程序,充分利用云计算的弹性、可扩展和容错等特性。

云原生应用开发可以让应用程序更好地适应云环境,提高开发效率和应用性能。

二、云原生应用开发的基本原则1. 微服务架构:云原生应用开发倡导使用微服务架构来构建应用。

微服务将应用程序拆分为一些独立的小型服务,每个服务可以独立部署和扩展,提高系统的可维护性和扩展性。

2. 容器化:云原生应用常使用容器来部署和运行应用。

容器技术可以将应用程序及其依赖项打包成一个独立的可移植的容器镜像,提供了更好的应用隔离性和部署效率。

3. 自动化运维:云原生应用开发强调在开发和部署过程中的自动化操作,如自动化构建、测试、部署和监控等。

通过自动化,可以减少人为错误,提高开发效率和系统稳定性。

三、云原生应用开发的实践过程1. 环境准备:搭建云原生应用开发环境,包括安装容器平台(如Docker)、编写Dockerfile文件定义容器镜像等。

2. 应用设计:根据需求分析和系统架构设计,将应用程序拆分为多个微服务,确定微服务之间的接口和通信方式。

3. 编码实现:使用合适的编程语言和框架进行微服务的开发实现,确保各个微服务的功能完备和可靠。

4. 容器化与部署:将每个微服务打包成独立的容器镜像,并通过容器编排工具(如Kubernetes)进行部署和管理。

5. 自动化测试和监控:编写自动化测试脚本,对每个微服务进行功能测试和性能测试;建立相应的监控系统,及时发现和处理异常情况。

6. 持续交付与持续集成:使用持续集成工具(如Jenkins)将代码和配置的更改集成到主干分支,并自动构建和部署。

7. 故障处理与扩展:实时监控应用程序运行状态,及时发现和处理故障情况。

云原生应用开发中的服务网格实践

云原生应用开发中的服务网格实践

云原生应用开发中的服务网格实践云原生应用开发是一种新兴的开发理念,它旨在利用云计算、容器化和微服务等技术,为应用开发提供更为灵活和高效的架构。

其中,服务网格作为云原生应用开发的一个重要组成部分,旨在管理应用内部的服务通信,提供更好的服务可靠性和可扩展性。

本文将从服务网格的定义和实现原理入手,介绍云原生应用开发中的服务网格实践。

一、服务网格的定义和实现原理服务网格是一种微服务架构的实现方式,它将在应用内部的服务通信转移至网格内部进行管理。

服务网格由大量的代理组成,这些代理成为“sidecar”,负责管理各服务之间的通信和流量控制。

服务之间的通信被限制在网格内部,不需要借助于网络层面的路由,这保证了服务间通信的稳定性和可靠性。

服务网格的核心是控制平面和数据平面。

控制平面负责管理各个代理之间的协作和管理服务的配置、发现、监控等功能,而数据平面则负责负载均衡和流量管理等功能。

二、云原生应用开发中的服务网格实践经过多年的发展,服务网格已经成为了云原生应用开发中的一个重要技术,架构设计中也趋于成为标配。

服务网格的实现框架可以有多种选择,例如Istio、Consul、Linkerd等。

下面分别介绍Istio和Linkerd两种框架的服务网格实践。

1. Istio服务网格实践Istio是由Google、IBM以及Lyft等公司共同开发的服务网格框架,它是目前最为流行的服务网格实现框架之一。

Istio采用Envoy代理进行流量管理,由Pilot进行服务发现和配置管理。

同时,Istio还具有强大的安全功能,例如mTLS和策略管理等。

Istio 还提供了较为完善的监控和追踪系统,例如Prometheus和Jaeger。

在使用Istio进行服务网格实践时,如下几个步骤是必要的:1)部署和安装Istio控制平面2)部署和安装Istio代理 Envoy3)进行服务注册和发现4)进行流量管理和策略控制2. Linkerd服务网格实践Linkerd是一个开源的服务网格框架,它采用Finagle网络库进行服务通信和管理。

开放计算机网络架构

开放计算机网络架构

开放计算机网络架构计算机网络在我们的生活中扮演着重要的角色,它连接了全球各地的机器和人们,使信息的传递变得更加便捷和高效。

然而,在过去的几十年中,网络架构一直是所谓的“封闭式”或“专有”的,即由少数大公司开发和控制。

这种局面阻碍了新的进步和创新,并为用户带来了一些问题,比如不稳定性、安全性和隐私问题等。

为了解决这些问题,一种新的开放式网络架构应运而生。

开放式网络架构是一种新的网络结构,可以让用户自由选择网络设备和协议,并拥有更大的控制权。

这种架构的基础是开放的技术标准,使任何人都可以自由地使用和修改这些标准。

与封闭式网络不同,开放式网络允许用户根据自己的需求定制和管理其网络,而不是被强制接受供应商的特定硬件和软件。

这样做可以促进创新和竞争,并提高网络的性能和可靠性。

开放的技术标准是开放架构的核心。

这些标准通常由国际组织或多个组织共同制定,比如IEEE、IETF和W3C等。

这些组织制定的标准必须经过广泛的审查和测试,确保其可靠性和稳定性。

此外,开放标准还解决了网络设备和协议之间的兼容性问题,使不同供应商的设备和协议可以在同一网络上无缝协作。

开放式网络架构也可以帮助改善网络安全和隐私。

开放架构使网络管理员能够更好地了解其网络组件和运作方式,从而更好地消除潜在漏洞和安全隐患。

此外,开放网络还可以加强用户对其个人数据的控制和保护。

随着物联网、云计算和人工智能等新兴技术的出现,开放式网络架构也变得更加重要。

这些技术需要更高性能和更灵活的网络架构来支持其快速增长和发展。

相比之下,封闭式网络架构因其刚性和限制性往往无法满足这些需求。

总之,开放式网络架构是未来网络的趋势和发展方向。

它可以带来更高的灵活性、可靠性、安全性和隐私性。

与封闭式网络相比,它可以更好地满足用户的需求和创新,促进竞争和发展。

未来,我们相信这种开放式架构将会在全球范围内得到更广泛的应用和推广。

云原生和微服务架构的设计和部署方法

云原生和微服务架构的设计和部署方法

云原生和微服务架构的设计和部署方法云原生和微服务架构是当前主流的应用架构设计和部署方法,它们能够帮助企业构建高可用、可扩展的应用系统。

本文将对云原生和微服务架构的设计和部署方法进行深入探讨,包括云原生和微服务架构的定义、特点及优势,以及在实际应用中的设计和部署策略。

一、云原生和微服务架构的定义云原生是一种软件架构风格,旨在利用云服务和云计算资源进行应用的开发和部署。

它将应用程序拆分成多个独立的微服务单元,每个单元都可以独立部署和扩展,以便更好地应对高并发和大访问量的需求。

云原生架构通常包括容器化、自动化部署、弹性伸缩和持续交付等特性。

微服务架构是一种分布式系统架构风格,将应用程序划分为一系列小型服务单元,每个服务都可以独立开发、部署和扩展,通过轻量级通信机制进行交互。

微服务架构能够提供更高的灵活性和可伸缩性,使得开发团队能够更快速地推出新功能,并提高系统的可维护性。

二、云原生和微服务架构的特点及优势1.灵活性:云原生和微服务架构能够将应用程序拆分成多个独立的服务单元,每个单元都可以独立开发、部署和扩展,使得开发团队能够更灵活地推出新功能,并快速响应用户需求。

2.可扩展性:云原生和微服务架构借助云计算资源和容器化技术,实现了应用程序的弹性伸缩,能够根据系统负载和流量量动态调整服务的规模,以确保系统的高可用性和高性能。

3.可靠性:云原生和微服务架构通过多副本部署和自动化容错处理等技术手段,提高了系统的稳定性和可靠性,降低了单点故障的风险。

4.持续交付:云原生和微服务架构利用容器化和自动化部署技术,实现了持续集成和持续交付,能够提高开发团队的工作效率,缩短开发周期,更快速地将新功能推送到生产环境。

5.安全性:云原生和微服务架构通过多层安全防护和监控技术,提高了系统的安全性,保护了用户数据的安全和隐私。

三、云原生和微服务架构的设计和部署方法1.架构设计在设计云原生和微服务架构时,首先需要对应用程序进行功能分解和服务划分,将整个系统拆分成多个独立的服务单元。

云原生架构的优势和应用场景

云原生架构的优势和应用场景

云原生架构的优势和应用场景随着云计算的普及和发展,云原生架构受到越来越多的关注和重视。

那么,什么是云原生架构呢?简而言之,云原生架构是一种基于云计算的全新应用架构,它可以充分利用云计算的特性,提供更加高效和弹性化的应用服务。

一、云原生架构的理念和特点云原生架构的核心理念是以容器为中心,构建和运行容器化的应用程序,并利用自动化和微服务等技术实现敏捷开发、快速部署、弹性扩展和稳定运行。

云原生架构具有以下特点:1、容器化:云原生架构是基于容器的,容器是轻量级的应用程序运行环境,其优点是占用系统资源少,启动和停止速度快,跨平台兼容性强。

2、自动化:云原生架构倡导自动化,通过自动化工具(如CI/CD、自动化测试等)来实现快速部署、故障恢复和性能优化。

3、微服务:云原生架构采用微服务的方式组织和构建应用程序,将复杂的应用拆分成多个小而独立的服务,提高应用的灵活性和可维护性。

4、可观察性:云原生架构注重监控和日志的采集和分析,从而能够帮助应用程序快速定位和解决问题。

二、云原生架构的优势云原生架构相对于传统的单体应用架构有以下几个优势:1、灵活性:云原生架构采用微服务的方式组织应用程序,从而可以实现服务粒度的调整和按需扩展,提高应用程序的灵活性和可扩展性。

2、高效性:云原生架构倡导自动化,通过自动化部署和测试等技术来提高应用程序的部署和交付效率。

3、可靠性:云原生架构采用容器化的技术,能够实现快速容器的启动和停止,从而可以有效地应对故障和峰值流量等问题。

4、成本优势:云原生架构可以使用云计算平台提供的弹性计算和存储资源,从而可以提升应用的资源利用率,降低应用程序的成本。

三、云原生架构的应用场景随着云原生架构的不断发展,越来越多的组织和开发者开始尝试将云原生架构应用于实际的软件开发和部署中。

云原生架构的应用场景有以下几个方面:1、微服务架构:云原生架构采用微服务的方式来组织和构建应用程序,从而可以提高应用的灵活性和可维护性。

云原生架构的优势与挑战

云原生架构的优势与挑战

云原生架构的优势与挑战随着云计算技术的快速发展,云原生架构成为了当今企业构建应用程序的新趋势。

云原生架构可以显著提升应用程序的可伸缩性、弹性和可靠性,同时还能够大幅度减少应用程序的开发、部署和运维成本。

然而,云原生架构也面临着一系列的挑战。

本文将会探讨云原生架构的优势和挑战,并且分析如何克服这些挑战以实现有效的应用程序开发和部署。

一、云原生架构的优势1. 可伸缩性:云原生架构允许应用程序根据需求进行自动伸缩,以适应不同的负载情况。

通过云原生技术,应用程序可以根据流量的增减自动调整资源的分配,提供高效的性能和响应速度。

2. 弹性:云原生架构可以通过容器化的方式将应用程序组件进行隔离,实现高度的弹性和可靠性。

即使某个组件出现故障,其他组件仍然可以正常运行,从而保证了应用程序的可用性。

3. 高效的开发和部署:云原生架构利用容器化和微服务架构,使得应用程序的开发、测试和部署变得更加简便和高效。

通过容器化,可以将应用程序组件独立打包,从而实现模块化的开发和部署。

4. 降低成本:云原生架构可以大幅度减少应用程序的开发、部署和运维成本。

通过自动化的方式管理和运维应用程序,减少了人工操作的需求,同时云平台的弹性计算能力也有效降低了硬件和基础设施的成本。

二、云原生架构面临的挑战1. 技术复杂性:云原生架构涉及到多个技术领域,如容器化、容器编排、微服务等,对开发团队的技术素质要求较高。

同时,云原生架构还需要进行持续集成和持续部署,对开发和运维团队的协同能力提出了挑战。

2. 安全性:云原生架构的开放性和分布式特性给应用程序的安全性带来了新的挑战。

如何保障容器和微服务之间的隔离性,以及如何保护数据在分布式环境下的安全性,是云原生架构需要解决的重要问题。

3. 性能管理:云原生架构中的容器化和微服务架构使得应用程序变得更加复杂,容器与容器之间的通信和调度也会对应用程序的性能产生影响。

因此,如何有效地管理和调优云原生应用程序的性能成为了一个挑战。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

云原生视角下的开放网络架构目录1.云原生概述 (3)2.云原生网络架构 (8)3.总结 (21)1.云原生概述随着容器等轻量级高效率虚拟化技术的兴起与微服务理念的普及,云计算正向着“云原生”(Cloud Native)的方向发展。

为了适应这个趋势,网络也需要进行相应的改造以更好地支撑云原生平台大规模的弹性能力与服务自愈和的特性。

开放网络的技术将在云原生场景中得以广泛应用。

从2015年开始,微服务、CI/CD、DevOps、Serverless、SRE等词汇大量涌现,一场云原生的运动正式拉开大幕。

云原生,从广义上来说,是更好地构建云平台与云应用的一整套新型的设计理念与方法论,而狭义上讲则是以docker容器和Kubernetes(K8S)为支撑的CNCF技术生态堆栈正在革新整个IT架构。

我关注到本次大会还设了一个OpenStack开发者论坛,但是其中所有演讲议题都以容器或K8S为主,由此也可以印证,云原生的潮流势不可挡。

以Docker为代表的轻量级容器虚拟化技术,将成为今后企业应用发布的标准形态,横跨众多Linux甚至是Windows平台。

以Kubernetes(K8S)为代表的云原生编排系统,将成为分布式集群架构的核心操作系统。

当时硅谷的大佬们抛出云原生的提法,说明之前用云的方式存在很大问题,并不是原生的,主要体现为:1)业务系统烟囱式的构建,项目经验无法沉淀复用,项目数据无法协作共享,IT治理难度较大2)运维模式未有本质性的改变,虚拟化的出现使得物理资源无需运维,但是多出了运维虚拟机的负担,像服务高可用、自动伸缩、监控审计,这些在平台方面是没有保障的,还是需要人工介入3)开发并未得到解放,开发人员在写程序时仍然需要考虑资源的使用情况,高可用的方案,还需要自己部署中间件,自己进行测试。

而随着云原生的出现,它理想的场景,一是IT的能力可以最大化的复用,能力层次化地构建,体现IT治理的成效。

其次是最重要的可运维性,它包括云原生所强调的大规模横向弹性,自愈高可用性,平滑升级,可测量、容器化等特性。

最后是开发友好性,越来越多的项目表明,能够吸引开发者的项目更容易成为主流,此外,CICD开发运维一体化的流程可以大大节省集成部署的时间与难度,提升生产效率。

再从数据中心架构演进的视角来看,最早的云计算是IaaS资源池化,以Vmware与OpenStack为代表的IaaS编排系统,对网络计算以及存储及资源进行统一的管理。

这一阶段主要解放的是资源的运维,但是对于应用的构建、部署的方式,弹性伸缩与高可用保障并无本质性的改变。

第二阶段是PaaS的服务化,强调的是服务的能力,需要具备弹性与高可用的保障,而不是简单的提供IT资源服务,云原生的应用能够更好的利用云平台所提供的能力。

云原生是整个IT架构与组织架构的真正向分布式云化的重构,其终极的状态是Serverless,应用彻底无需关心底层的资源运维。

第三阶段是更加现代化的数据智能阶段,它强调的是数据的运营能力以及内外部数据整合对外提供服务的能力,其中数据治理与隐私数据保护是数据运营的重要保障,系统架构设计则是以数据流为核心的,也是真正将企业的核心数据转化为生产力与生产价值的重要阶段。

当前的系统架构主要聚焦于第二阶段,第三阶段的大数据智能也在逐步开展,当然也是要以PaaS服务化作为基础的。

作为PaaS服务化的核心,云原生目标就是能力堆栈可以复用,业务可以在有保障的云平台中快速上线。

2.云原生网络架构第二大部分周博士介绍了云原生网络。

由于云原生的内涵非常丰富,要理清其中的脉络,绝非易事。

在此,主要从两个角度来对云原生网络进行说明:一是网络如何为云原生应用提供支撑,二是如何用云原生的设计理念来改进网络。

第一部分称之为云原生组网,第二部分称之为网络的云原生化。

云原生组网云原生对于网络的诉求,可以从平台以及业务两个方面来进行分析:∙从平台方面而言,scale up的性能增益越来越有限,整个平台的体系向分布式弹性化的方向进行发展,在性能与可靠性上都可以有较高的保障。

∙而对于业务而言,整个的趋势则是从原来的单体应用向微服务化进行转变,从而能够更好的利用到云平台弹性可扩展的优势。

前端的服务尽量无状态化,有状态的部分存储到后端的分布式存储之中,而至于服务间的可靠通信、流量均衡与故障自愈合等问题则交由平台来负责处理。

无论是平台的分布化以及业务的微服务化,都需要一个强大的网络来支撑大规模虚拟节点以及微服务之间的通信。

具体到技术层面,云原生对于网络的要求,一是基础的二三层网络联通,二是4~7层的高级网络功能。

二三层的网络主要实现K8S中CNI接口,CNI接口的定义相当简单,基本上就是创建一张二层的虚拟隔离网络,相当于IaaS中vpc网络的概念。

具体的实现方案有calico,flannel,weave,contiv等,这些方案的介绍网上资料有很多。

与以前虚拟机时代的vPC不同,云原生场景下,对于二三层网络的创建有很高的性能要求,每秒要创建上千个网络的end point,并且能够快速地弹性伸缩,还要具备自愈合的能力,此外为了将服务部署到多个集群中,网络还要需要提供跨K8S集群多活组网的能力。

4~7层的组网,则是ServiceMesh,中文翻译为服务网格。

顾名思义,ServiceMesh 里的通信,不再是点到点的通信,而是抽象成服务到服务之间的通信,每个服务由众多的计算实例所组成。

这种以服务为中心的抽象,将弱化每个实例的IP而更加关注的是服务的虚拟IP,ServiceMesh的本质是提供安全、可靠、灵活、高效的服务间通信。

有文章将ServiceMesh 称之为下一代的SDN,有一定的道理,但是它也离不开基础二三层网络的联通。

ServiceMesh 将会提供一些更加高级的网络功能,例如有状态的通信,路由限流,灰度流量切换,熔断监控等等,是整个微服务框架的基础支撑。

对于上述的这些功能,可以分解开来看:首先是负载均衡。

负载均衡在K8S中的作用,无论如何高估都不过分,整个分布式架构的数据平面基本上都是靠负载均衡来进行维系的,比如入口的路由,就是一个7层的负载均衡器;而服务间的通信或者说服务发现,也是依靠负载均衡来让流量分发到另外一个服务中的具体实例;此外灰度发布的话,也是由负载均衡在新旧版本之间做切换,而弹性伸缩其实本质上就是一个负载均衡,将流量按比例逐步切换到新增的计算实例之中。

在K8S中,服务间的负载均衡实现是通过iptables中对于每条实例规则的概率匹配来实现的。

而在服务网格Istio中的实现,则是靠一个sidecar边车容器来“劫持”两个服务容器之间的流量,流量一旦被“劫持”后,那就可以做负载均衡、熔断限流、灰度发布、安全检测、遥测上报等一系列的操作了。

当然,在这种方案中,sidecar(envoy容器)的转发性能是关键所在。

之前说到了Istio,它是当前CNCF主推的微服务框架,下面详细介绍一下它的实现架构。

在数据平面,它通过sidecar对于流量进行劫持,从而实现无代码侵入的服务网格。

这是它的一大实现特点,相比于spring cloud,dubbo等框架,它可以被称作是平台级的微服务框架,也就是说其中微服务通信的所有功能都是靠平台来进行实现,而无需通过增加应用代码,或者Java应用框架进行支撑,这更加符合云原生的设计理念。

控制平面的两个组件中,pilot负责下发控制,mixer收集运行的状态,citadel则负责安全证书方面的处理。

此外,在另一个维度。

Istio还有非常丰富的后台工具,能够对其运行进行闭环支撑。

首先是Prometheus与Grafana,对于Istio的各项指标进行监控,并做可视化的呈现。

其次是Jaeger和Kiali这样的分布式追踪工具,他们可以显示出微服务之间的调用拓扑,以及每个API完整调用中的子调用,相应的时长等,这对于发现微服务通信之间的网络异常以及性能瓶颈,有非常重要的作用。

最后再来看一下云原生组网的安全,这里强调的是组网与安全是一体化的。

具体而言,一是最小权限组网,相对于以往的默认互通,在服务化场景中,最优化的实现是默认不连通,只有当服务之间有调用关系时,才下发访问策略,从而实现精细化的网络访问控制。

其次是零信任安全,它强调的是,每次调用前先验证后连接,对于组网而言,可以基于K8S的身份认证体系进行认证。

这里再看一个比较有意思的实现案例,叫做Cilium,它也是CNCF CNI中的一个项目,但它主打的却是安全牌,首先在数据平面,采用了BPF机制(Berkeley Packet Filter, Cilium 的整个开发团队就是BPF的原班人马),其次是对于应用的感知能力,基于BPF框架,Cilium能够以service / pod / container 为对象进行动态地网络和安全策略管理,解耦控制面的策略管理和不断变化的网络环境,还做到7 层能力,感知常见的HTTP,Kafka等应用流量,从而实现对于流量的精确化控制,三是可扩展设计,它的状态通过etcd来进行维护,复用K8S的一些能力。

网络的云原生化周博士主要以BGP与SDN两种典型的网络架构为例,分析了他们的云原生指数。

其中BGP的实现以SONiC为例,SDN的实现以Stratum+ONOS为例,这两者都是开源的交换机操作系统。

首先是云原生最重要的两个指标:横向的弹性可扩展,以及自愈和高可用,这一点上BGP 分布式路由具有天然的优势, 这在全球Internet大规模的场景中已经久经考验。

而对于SDN式的集中式控制而言,控制平面的分布式可扩展以及高可用,需要花大量的笔墨进行设计。

此外,一旦数据平面与控制平面的链路出现故障,是否能够快速恢复也是一大考虑因素。

在另外一方面,配置友好性、可测量性、闭环可控性,这些指标BGP并不占优势,经常出现BGP人为配置错误的报道,分布式网络的故障排查尤其困难,而这又反过来是SDN网络控制的一些优势。

在容器化支持方面,SONiC操作系统采用了先进的容器化、模块化的设计;而ONOS 是基于Java OSGi的框架,尚无容器化的计划。

最后在开发友好性方面,两者目前的状态都只能评价为一般。

接下来周博士分享了这两个系统未来有可能的改进方向。

正如之前所说的,SONiC操作系统的设计采用了容器化、模块化的理念。

其中心是一个用于存储状态的redis数据库,其他的功能组件都是围绕他而进行构建交互,其中有BGP路由的容器,以及SAI容器,负责与内核层硬件转发芯片的驱动打交道。

相关文档
最新文档