精华内容
下载资源
问答
  • Rainbond 是云原生且易用的云原生应用管理平台,云原生应用交付的最佳实践,简单易用。专注于以应用为中心的理念。赋能企业搭建云原生开发云、云原生交付云。 对于企业: Rainbond 是开箱即用的云原生平台,借助 ...
  • 上一篇文章中我们介绍过CNCF 给出的云原生定义中包括微服务、容器、服务网格、不可变基础设施和声明式 API 等代表技术,构建云原生应用就主要靠这些关键技术。下面我们就来具体介绍下这 5 个关键技术。 1. 微服务 ...

    云原生的基础架构

    云原生中既有指导云原生开发的方法论,也包含实践的具体技术。上一篇文章中我们介绍过CNCF 给出的云原生定义中包括微服务、容器、服务网格、不可变基础设施和声明式 API 等代表技术,构建云原生应用就主要靠这些关键技术。下面我们就来具体介绍下这 5 个关键技术。

    1. 微服务

    单体应用开发简单,但随着业务复杂度的提升,单体应用的弊端逐渐显现,开发效率和系统应用的可扩展性等方面出现严重问题。微服务架构的出现就解决了这个问题,它根据领域模型将巨大的单体分成界限清晰的微服务,并保持每个服务独立可以迭代(如下图)。
    在这里插入图片描述
    单体应用架构 VS 微服务架构

    相比传统的单体应用架构,微服务架构具有服务高度自治、高效迭代、易于扩展和支持多语言编程等优点。

    但是从另一个角度来看,微服务架构的灵活、开发的敏捷也带来了一些新的问题,如数量众多的微服务运维、分布式系统固有的复杂性,以及分布式事务、服务之间的调用等。单体应用可能只需部署至“一个”应用服务器集群,而微服务架构则需要开发维护“很多个”独立的服务,并且还可能需要支持多种语言和环境,这当中的构建、测试、部署和运行成本提高了不少。

    2. 容器

    为了解决微服务架构下大量应用部署的问题,由此引入了容器。容器是一种轻量级的虚拟化技术,能够在单一主机上提供多个隔离的操作系统环境,通过一系列的命名空间隔离进程,每个容器都有唯一的可写文件系统和资源配额。

    容器化功能比较强大,不仅能解决虚拟机所能够解决的问题,同时也能够解决虚拟机由于资源要求过高而无法解决的问题。它具有的特点主要包括:隔离应用依赖、创建应用镜像并进行复制、创建容易分发的即启即用的应用、支持实例简单、快速地扩展等。

    Docker 是当前流行的开源应用容器引擎,基于 Docker 容器化技术,用户可以将微服务及其所需的所有配置、依赖关系和环境变量打包成容器镜像,并轻松移植到全新的安装了 Docker 的服务器节点上,运维人员无须关心底层操作系统,且无须重新配置环境,这使得容器成为部署单个微服务的最理想工具。

    但仅仅有容器还是不够的,毕竟人工部署成本高且易出错。

    因此容器技术又被分为了运行编排两层。运行层主要是指容器的基础设施,包括存储、网络、CPU 等。编排层主要是容器集群的管理,包括容器调度、服务注册与发现、资源的管理等;其相关工具有 Kubernetes 、Swarm 等,用以解决容器的管理和调度问题。其中,由 Google 开源的 Kubernetes 目前基本算是统一了容器编排的市场,实现了容器集群的自动化部署、扩缩容和维护等功能。

    就这样 Kubernetes 与 Docker 相互配合、相辅相成,其中 Docker 是作为 Kubernetes 内部使用的低级别组件,而 Kubernetes 又可以高效管理调度 Docker 集群。

    3. 服务网格

    微服务架构实践主要有侵入式架构非侵入式架构两种实现形式。侵入式架构是指服务框架嵌入程序代码,开发者组合各种组件,如 RPC、负载均衡、熔断等,实现微服务架构。非侵入式架构则是以代理的形式与应用程序部署在一起,代理接管应用程序的网络且对应用程序透明,这时开发者只需要关注自身业务即可,这种方式以服务网格(Service Mesh) 为代表。

    服务网格产品的存在和具体工作模式,对运行于其上的云原生应用来说是透明无感知的,但是在运行时这些能力都动态赋能给了应用,从而帮助应用在轻量化的同时依然可以继续提供原有的功能(如下图所示)。
    在这里插入图片描述
    服务网格的一般架构

    服务网格提供了分布式环境中几大核心问题的解决方案,比如服务间通信、限流、统一认证等功能,使得微服务的开发者更加关注业务,降低了微服务的门槛。

    服务网格目前的发展也比较火热,有多款开源软件,Linkerd 最早加入 CNCF,其他还有 Istio、Envoy、Dubbo Mesh 等。同时,为了让服务网格有更好的底层支撑,我们又将其运行在 Kubernetes 上。Kubernetes 对于资源的动态调度有极强的能力,用户可以快速编排出复杂环境、复杂依赖关系的应用程序,同时开发者又无须过分关心应用程序的监控、扩展性、服务发现和分布式追踪这些烦琐的事情,从而更专注于程序开发。

    1. 不可变基础设施与 DevOps
      Chad Fowler 于 2013 年提出了不可变基础设施(Immutable Infrastructure) 的构想,主要强调基础设施的状态性质。具体来说:一旦创建基础设施的实例,其将会变成只读状态,如果后续需要修改和升级,则需要使用新的实例替换旧实例。这种模式使得 DevOps 更加容易实践,可以为运维人员减少配置管理的负担。

    DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。DevOps 在一定程度上可以解决开发者与运维人员之间的协作问题,增强开发团队与运维部门之间的沟通和交流。
    在这里插入图片描述
    DevOps 是开发、运维和 QA 三者的交集

    你可能对精益软件开发中的敏捷、Scrum 不陌生,Scrum 是敏捷的一种具体实践,而 DevOps 则很好地补充了敏捷。DevOps 的目标是缩短开发周期,增加部署频率,更可靠地发布升级系统应用。DevOps 和云原生架构的结合能够实现精益产品开发流程,帮助软件产品及其开发持续改进,适应快速变化的市场,从而为企业提供更小的试错成本。

    5. 声明式 API

    声明式设计(Declarative) 是指通过向工具描述自己想要让事物达到的目标状态,然后由这个工具自己内部去计算如何令这个事物达到目标状态。简言之,声明式设计中,描述的是目标状态,即 How;与之相对的是过程式设计(Imperative),所描述的是一系列的动作,即 What。这一系列的动作如果被正确执行,最终结果就是这个事物达到了你期望的目标状态。

    声明式 API 和命令式 API 是两种不同的编程方式:在声明式 API 中,你声明了系统要执行的操作,然后系统将不断向该状态驱动;而在命令式 API 中,你可以直接发出服务器要执行的命令,如 “运行实例”“停止实例”等。SQL 就是一种常见的声明式编程语言,开发者可以自行指定获取所需的数据。在声明式语言中,描述一般为“创建三个 Web 实例的集群”,而不是把创建 Web 实例的命令运行三次组成一个集群。

    声明式设计是一种设计理念,同时也是一种工作模式,它使得你的系统更加健壮。分布式系统环境可能会出现各种不确定的故障,面对这些组件故障,如果使用声明式 API ,查看对应组件的 API 服务器状态,再确定需要执行的操作即可;而使用命令式 API 时,恢复组件则会变得比较困难。

    云原生应用的特征:云原生与“12 因素”

    Heroku于 2012 年提出“12因素(12-Factors)” 的云应用设计理念,(HeroKu 曾于2009 年推出公有云 PaaS),这些设计理念指导开发者利用云平台来开发易于维护、更具可靠性和扩展性的云原生应用

    1. 方法论和核心思想

    “12 因素”适用于任何语言开发的后端应用,并提供了很好的方法论和核心思想。“12 因素”为构建 SaaS 应用提供了如下的方法论:

    • 使用声明式格式来搭建自动化,从而使新的开发者花费最少的学习成本来加入这个项目;

    • 和底层操作系统保持简洁的契约,在各个系统中提供最大的可移植性;

    • 适合在现代的云平台上部署,避免对服务器和系统管理的额外需求;

    • 最小化开发和生产之间的分歧,持续部署以实现最大灵活性;

    • 可以在工具、架构和开发实践不发生重大变化的前提下实现扩展。

    2. 编码、部署和运维原则

    “12 因素”理论适用于以任意语言编写,并使用任意后端服务(数据库、消息队列、缓存等)的应用程序,它是关于如何编码、部署和运维的原则。这些是软件交付生命周期里最常见的场景,为多数开发者和 DevOps 整合团队所熟知(如下图)。
    在这里插入图片描述
    “12 因素”的内容

    • 编码有关:基准代码、构建发布运行、开发/生产环境等价 ,与源码管理相关;

    • 部署有关:显式依赖、配置、独立进程、后端服务、端口绑定,与微服务该如何部署以及如何处理依赖相关;

    • 运维原则:并发、易处理、日志、管理进程,与如何简化微服务的运维相关。

    3. 具体内容

    12 因素的具体内容如下所示。

    • Codebase:基准代码。一份基准代码,多份部署。在统一的代码库中为代码配置、测试和脚本部署建立独立的项目和模块。

    • Dependencies:显式声明依赖关系。通过 Bundler、NPM 等工具隔离依赖性,不依赖于部署环境。

    • Config:在环境中存储配置。通过操作系统级的环境变量将配置信息或其他可能存在的不同信息(如开发环境、预生产环境、生产环境)应用到各个部署环境中。

    • Backing services:把后端服务当作附加资源。数据库、缓存等均被作为附加资源在不同环境中被同等调用,每个不同的后端服务都是一份资源。

    • Build, release, run:严格分离构建和运行。基准代码进行部署需要三个步骤,构建阶段,将代码仓库转化为可执行包的过程;发布阶段,将构建的结果和当前部署所需的配置相结合,并能够立刻在运行环境中投入使用;运行阶段,是指针对选定的发布版本在执行环境中启动一系列应用程序的进程。

    • Processes:进程。以一个或多个无状态进程运行应用。

    • Port binding:通过端口绑定提供服务。互联网应用可以通过端口绑定来提供服务并随时监听所有发送至该端口的请求。

    • Concurrency:并发。通过进程模型进行扩展。

    • Disposability:易处理、快速启动和优雅终止可最大化健壮性。

    • Dev/prod parity:开发环境与生产环境等价。保持开发、预发布、线上环境的相似性来实现持续交付与部署。

    • Logs:日志。把日志当作事件流,允许执行环境通过集中式服务来收集、聚合、检索和分析日志。

    • Admin processes:管理进程。后台管理任务当作一次性进程运行,如数据库迁移。

    “12因素”对于构建 Web 应用程序或 SaaS 平台具有指导作用。虽说提出之后已有八年之久,可能有些细节跟不上最新的体系架构,但“12 因素”依旧是目前最为系统的云原生应用开发指南。你在开发时可以依旧参考它,但也不用拘泥于教条规则。

    小结

    以上我们主要介绍了云原生基础架构的组成:微服务、容器、服务网格、不可变基础设施和声明式 API ,这五大主要技术可以帮助你构建云原生应用;随后我们又介绍了“12 因素”的具体内容以及云原生应用具有的基本特征,它可以指导你如何去构建云原生应用。

    工欲善其事必先利其器,从本节课的介绍你可以知道,学习云原生不是一蹴而就的事,不仅需要你掌握相关的方法论,而且还需要大量的实践。这五大代表技术,展开来还有更加详细的知识体系,通过本节课你先有个整体的把握后,在后面的学习中才能够有侧重点,更加得心应手。

    好了,关于云原生我们暂时介绍到这里,你的云原生架构思维导图已经绘制好了吗?欢迎你在留言区分享你最熟悉的云原生技术。下节课我们将进入微服务相关的学习,这也是本课程的重点。

    转载文章:

    • https://kaiwu.lagou.com/course/courseInfo.htm?courseId=287#/detail/pc?id=3800
    展开全文
  • 云原生与云原生应用概念解析

    千次阅读 2018-09-25 17:10:35
    什么是云原生云原生(Cloud Native)是由 Pivotal 的Matt Stine在2013年提出的一个概念,...云原生是面向“云”而设计的应用,因此技术部分依赖于在传统云计算的3层概念(基础设施即服务(IaaS)、平台即服务(Pa...

    什么是云原生?
    云原生(Cloud Native)是由 Pivotal 的Matt Stine在2013年提出的一个概念,是他多年的架构和咨询总结出来的一个思想的集合。

    在云的时代,应用会更多的迁移到云端,基于云的架构设计和开发模式需要一套全新的理念去承载,于是云原生思想应运而生。

    云原生是面向“云”而设计的应用,因此技术部分依赖于在传统云计算的3层概念(基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)),例如,敏捷的不可变基础设施交付类似于IaaS,用来提供计算网络存储等基础资源,这些资源是可编程且不可变的,直接通过API可以对外提供服务;有些应用通过PaaS服务本来就能组合成不同的业务能力,不一定需要从头开始建设;还有一些软件只需要“云”的资源就能直接运行起来为云用户提供服务,即SaaS能力,用户直接面对的就是原生的应用。

    在一般用法中,“云原生”是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势。“云原生”是关于如何创建和部署应用程序,和位置无关。 这意味着应用程序位于云中,而不是传统数据中心。

    概况来说,云原生(Cloud Native)是一个思想的集合,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。Cloud Native既包含技术(微服务,敏捷基础设施),也包含管理(DevOps,持续交付,康威定律,重组等)。Cloud Native也可以说是一系列Cloud技术、企业管理方法的集合。
    云原生更是一个不断丰富的理念和技术体系,它在基础架构、应用程序和管理上都将深刻的影响和改变企业云的未来!

    云原生应用
    云原生应用是天然适合云特点的应用,云原生应用系统需要与操作系统等基础设施分离,不应该依赖Linux或Windows等底层平台,或依赖某个云平台。也就是说,应用从开始就设计为运行在云中,无论私有云或公有云;其次,该应用必须能满足扩展性需求,垂直扩展(向上和向下)或水平扩展(跨节点服务器)。
    CNCF给出了云原生应用的三大特征:

    容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
    动态管理:通过集中式的编排调度系统来动态的管理和调度。
    面向微服务:明确服务间的依赖,互相解耦。

    云原生应用和本地部署应用程序之间的差异

    云原生应用程序开发采用与传统企业应用程序完全不同的体系结构。

    编程语言

    编写在公司服务器上运行的本地部署应用程序往往使用传统语言编写,如C/C ++,C#或其他Visual Studio语言(如果部署在Windows Server平台上)和企业级Java。如果它在大型机上,可能使用Cobol。

    云原生应用更有可能以网络为中心的语言编写,这意味着使用HTML,CSS,Java,JavaScript,.Net,Go,Node.js,PHP,Python和Ruby。

    可更新

    云原生应用程序始终是最新的,云原生应用始终可用。

    本地部署应用程序需要更新,并且通常由供应商按订阅提供,并且在安装更新时需要停机。

    弹性

    云原生应用程序通过在峰值期间增加的资源来利用云的弹性。如果你的基于云的电子商务应用程序使用频繁,你可以将其设置为使用额外的计算资源,直到峰值消退然后关闭这些资源。云原生应用可以根据需要调整增加资源和规模。

    本地部署应用程序无法动态扩展。

    多租户

    云原生应用程序在虚拟化环境中工作,并与其他应用程序共享资源没有问题。

    许多本地部署应用程序要么在虚拟环境中不能正常工作,要么根本不工作,必须要非虚拟化环境。

    连接资源

    本地部署应用程序与网络资源的连接相当严格,例如网络,安全性,权限和存储。其中许多资源需要进行硬编码,如果移动或更改了任何内容,它们就会中断。

    “网络和存储在云端完全不同。当你听到“重新平台化”一词时,通常是为了适应网络,存储甚至数据库技术的变化,以允许应用程序在云中运行,“Deloitte的Kavis说。

    停止时间

    云中存在比本地部署更大的冗余,因此如果云供应商遭受中断,则另一个冗余区域可以消除中断。

    本地部署应用程序可能已准备好故障转移,但如果服务器出现故障,应用程序可能会崩溃。

    自动化

    云计算的大部分都是自动化的,其中包括应用程序管理。 “云原生交付的好处,特别是速度和敏捷性,依赖于可靠,经过验证和经过审核的已知良好流程的基础,这些流程根据自动化和编排工具的需要而不是通过人工干预重复执行,”Splunk的Mann说。工程师应该考虑自动化是不止一次做的任何事情,以实现可重复性,自助服务,敏捷性,可扩展性以及审计和控制。

    本地部署应用程序必须手动管理。

    模块化设计

    本地部署应用程序往往在设计上是单一的。他们肯定会将一些工作卸载到库中,但最终它是一个包含大量子程序的大应用程序。云原生应用程序更加模块化,许多功能分解为微服务。这允许在不需要时关闭它们,并将更新推广到那个模块,而不是整个应用程序。

    无状态

    云的松耦合特性意味着应用程序与基础架构无关,这意味着它们是无状态的。云原生应用程序将其状态存储在数据库或其他外部实体中,因此实例可以来去,应用程序仍然可以跟踪应用程序在工作单元中的位置。 “这是松耦合的本质。不依赖于基础架构允许和应用程序以高度分布的方式运行,并且仍然保持其状态独立于底层基础架构的弹性性质,“Kavis说。

    大多数本地部署应用程序都是有状态的,这意味着它们会在运行代码的基础架构上存储应用程序的状态。因此,在添加服务器资源时可能会破坏应用程序。

    展开全文
  • 云原生应用概念解析

    2020-03-26 00:35:07
    什么是云原生云原生(Cloud Native)是由 Pivotal 的Matt Stine在2013年提出的一个概念,是他...云原生是面向“云”而设计的应用,因此技术部分依赖于在传统云计算的3层概念(基础设施即服务(IaaS)、平台即服务...

    什么是云原生?
    云原生(Cloud Native)是由 Pivotal 的Matt Stine在2013年提出的一个概念,是他多年的架构和咨询总结出来的一个思想的集合。

    在云的时代,应用会更多的迁移到云端,基于云的架构设计和开发模式需要一套全新的理念去承载,于是云原生思想应运而生。

    云原生是面向“云”而设计的应用,因此技术部分依赖于在传统云计算的3层概念(基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)),例如,敏捷的不可变基础设施交付类似于IaaS,用来提供计算网络存储等基础资源,这些资源是可编程且不可变的,直接通过API可以对外提供服务;有些应用通过PaaS服务本来就能组合成不同的业务能力,不一定需要从头开始建设;还有一些软件只需要“云”的资源就能直接运行起来为云用户提供服务,即SaaS能力,用户直接面对的就是原生的应用。

    在一般用法中,“云原生”是一种构建和运行应用程序的方法,它利用了云计算交付模型的优势。“云原生”是关于如何创建和部署应用程序,和位置无关。 这意味着应用程序位于云中,而不是传统数据中心。

    概况来说,云原生(Cloud Native)是一个思想的集合,包括DevOps、持续交付(Continuous Delivery)、微服务(MicroServices)、敏捷基础设施(Agile Infrastructure)、康威定律(Conways Law)等,以及根据商业能力对公司进行重组。Cloud Native既包含技术(微服务,敏捷基础设施),也包含管理(DevOps,持续交付,康威定律,重组等)。Cloud Native也可以说是一系列Cloud技术、企业管理方法的集合。
    云原生更是一个不断丰富的理念和技术体系,它在基础架构、应用程序和管理上都将深刻的影响和改变企业云的未来!

    云原生应用
    云原生应用是天然适合云特点的应用,云原生应用系统需要与操作系统等基础设施分离,不应该依赖Linux或Windows等底层平台,或依赖某个云平台。也就是说,应用从开始就设计为运行在云中,无论私有云或公有云;其次,该应用必须能满足扩展性需求,垂直扩展(向上和向下)或水平扩展(跨节点服务器)。
    CNCF给出了云原生应用的三大特征:

    容器化封装:以容器为基础,提高整体开发水平,形成代码和组件重用,简化云原生应用程序的维护。在容器中运行应用程序和进程,并作为应用程序部署的独立单元,实现高水平资源隔离。
    动态管理:通过集中式的编排调度系统来动态的管理和调度。
    面向微服务:明确服务间的依赖,互相解耦。

    云原生应用和本地部署应用程序之间的差异

    云原生应用程序开发采用与传统企业应用程序完全不同的体系结构。

    编程语言

    编写在公司服务器上运行的本地部署应用程序往往使用传统语言编写,如C/C ++,C#或其他Visual Studio语言(如果部署在Windows Server平台上)和企业级Java。如果它在大型机上,可能使用Cobol。

    云原生应用更有可能以网络为中心的语言编写,这意味着使用HTML,CSS,Java,JavaScript,.Net,Go,Node.js,PHP,Python和Ruby。

    可更新

    云原生应用程序始终是最新的,云原生应用始终可用。

    本地部署应用程序需要更新,并且通常由供应商按订阅提供,并且在安装更新时需要停机。

    弹性

    云原生应用程序通过在峰值期间增加的资源来利用云的弹性。如果你的基于云的电子商务应用程序使用频繁,你可以将其设置为使用额外的计算资源,直到峰值消退然后关闭这些资源。云原生应用可以根据需要调整增加资源和规模。

    本地部署应用程序无法动态扩展。

    多租户

    云原生应用程序在虚拟化环境中工作,并与其他应用程序共享资源没有问题。

    许多本地部署应用程序要么在虚拟环境中不能正常工作,要么根本不工作,必须要非虚拟化环境。

    连接资源

    本地部署应用程序与网络资源的连接相当严格,例如网络,安全性,权限和存储。其中许多资源需要进行硬编码,如果移动或更改了任何内容,它们就会中断。

    “网络和存储在云端完全不同。当你听到“重新平台化”一词时,通常是为了适应网络,存储甚至数据库技术的变化,以允许应用程序在云中运行,“Deloitte的Kavis说。

    停止时间

    云中存在比本地部署更大的冗余,因此如果云供应商遭受中断,则另一个冗余区域可以消除中断。

    本地部署应用程序可能已准备好故障转移,但如果服务器出现故障,应用程序可能会崩溃。

    自动化

    云计算的大部分都是自动化的,其中包括应用程序管理。 “云原生交付的好处,特别是速度和敏捷性,依赖于可靠,经过验证和经过审核的已知良好流程的基础,这些流程根据自动化和编排工具的需要而不是通过人工干预重复执行,”Splunk的Mann说。工程师应该考虑自动化是不止一次做的任何事情,以实现可重复性,自助服务,敏捷性,可扩展性以及审计和控制。

    本地部署应用程序必须手动管理。

    模块化设计

    本地部署应用程序往往在设计上是单一的。他们肯定会将一些工作卸载到库中,但最终它是一个包含大量子程序的大应用程序。云原生应用程序更加模块化,许多功能分解为微服务。这允许在不需要时关闭它们,并将更新推广到那个模块,而不是整个应用程序。

    无状态

    云的松耦合特性意味着应用程序与基础架构无关,这意味着它们是无状态的。云原生应用程序将其状态存储在数据库或其他外部实体中,因此实例可以来去,应用程序仍然可以跟踪应用程序在工作单元中的位置。 “这是松耦合的本质。不依赖于基础架构允许和应用程序以高度分布的方式运行,并且仍然保持其状态独立于底层基础架构的弹性性质,“Kavis说。

    大多数本地部署应用程序都是有状态的,这意味着它们会在运行代码的基础架构上存储应用程序的状态。因此,在添加服务器资源时可能会破坏应用程序。

    展开全文
  • 作者| 郡宝 阿里云技术专家 参与文末留言互动,即有机会获得赠书...从本文开始,我们将用一个系列文章对云原生存储进行方方面面的探析,该系列文章将从云原生存储服务的概念、特点、需求、原理、使用、案例等方面,.

    头图.png

    作者| 郡宝 阿里云技术专家

    参与文末留言互动,即有机会获得赠书福利!

    导读:存储服务支撑了应用的状态、数据的持久化,是计算机系统中的重要组成部分,也是所有应用得以运行的基础,其重要性不言而喻。在存储服务演进过程中,每一种业务类型、新技术方向都会对存储的架构、性能、可用性、稳定性等提出新的要求,而在当今技术浪潮走到云原生技术普及的时代,存储服务需要哪些特性来支持应用呢?

    从本文开始,我们将用一个系列文章对云原生存储进行方方面面的探析,该系列文章将从云原生存储服务的概念、特点、需求、原理、使用、案例等方面,和大家一起探讨云原生存储技术新的机遇与挑战,欢迎大家讨论:

    "There is no such thing as a 'stateless' architecture" - Jonas Boner
    

    云原生存储系列文章(一):云原生应用的基石
    云原生存储系列文章(二):容器存储与K8S存储卷
    云原生存储系列文章(三):Kubernetes存储架构
    云原生存储系列文章(四):K8S存储实践-Flexvolume
    云原生存储系列文章(五):K8S存储实践-CSI
    云原生存储系列文章(六):存储卷高可用方案
    云原生存储系列文章(七):存储调度与容量感知
    云原生存储系列文章(八):数据卷扩缩容能力
    云原生存储系列文章(九):云原生存储安全
    云原生存储系列文章(十):高性能计算场景的存储优化

    本节会介绍云原生存储的基本概念和常用的存储方案。

    云原生存储

    1.概念

    要理解云原生存储,我们首先要了解云原生技术的概念,CNCF 对云原生定义如下:

    云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。
    这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

    简言之:云原生应用和传统应用并没有一个标准的划分界限,其描述的是一种技术倾向,即越符合以下特征的应用越云原生:

    • 应用容器化
    • 服务网格化
    • 声明式 API
    • 运行可弹性扩展
    • 自动化的 DevOps
    • 故障容忍和自愈
    • 平台无关,可移植的

    云原生应用是一簇应用特征能力的集合,而实现了这些能力的应用在可用性、稳定性、扩展性、性能等核心能力都会有大幅的优化。优异的能力代表了技术的方向,云原生应用正在引领各个应用领域实现云原生化,同时也在深刻改变着应用服务的方方面面。存储作为应用运行的基石,也在服务云原生化过程中提出了更多的需求。

    云原生存储的概念来源于云原生应用,顾名思义:一个应用为了满足云原生特性的要求,其对存储所要求的特性是云原生存储的特性,而满足这些特性的存储方案,可以称其为倾向云原生的存储。

    2.云原生存储特征

    1)可用性

    存储系统的可用性定义了在系统故障情况下访问数据的能力,故障可以是由存储介质、传输、控制器或系统中的其他组件造成的。可用性定义系统故障时如何继续访问数据,以及在部分节点不可用时如何将对数据的访问重新路由到其他的可访问节点。

    可用性定义了故障的恢复时间目标(RTO),即故障发生与服务恢复之间的时长。可用性通常计算为应用运行时间中的可用时间的百分比(例如 99.9%),以及以时间单位度量的 MTTF(平均故障时间)或 MTTR(平均修复时间)来度量。

    2)可扩展性

    存储的可扩展性主要衡量以下参数指标:

    • 扩展可以访问存储系统的客户端数量的能力,例如:一个 NAS 存储卷同时支持多少客户端挂载使用;
    • 扩展单个接口的吞吐量和 IO 性能;
    • 扩展存储服务单实例的容量能力,例如:云盘的扩容能力。

    3)性能

    衡量存储的性能通常有两个标准:

    • 每秒支持的最大存储操作数 - IOPS;
    • 每秒支持的最大存储读写量 - 吞吐量;

    云原生应用在大数据分析、AI 等场景得到广泛应用,在这些重吞吐 / IO 场景中对存储的需求也非常高,同时云原生应用的快速扩容、极致伸缩等特性也会考验存储服务在短时间内迎接峰值流量的能力。

    4)一致性

    存储服务的一致性是指在提交新数据或更新数据后,访问这些新数据的能力;根据数据一致性的延迟效果,可以将存储分为:“最终一致”和“强一致”存储。

    不同的服务对存储一致性的敏感度是不一样的,像数据库这类对底层数据准确性和时效性要求非常高的应用,对存储的要求是具有强一致性的能力。

    5)持久性

    多个因素应用数据的持久性:

    • 系统冗余等级;
    • 存储介质的耐久性(如:SSD 或 HDD);
    • 检测数据损坏的能力,以及使用数据保护功能重建或恢复损坏数据的能力。

    3.数据访问接口

    在云原生应用系统中,应用访问存储服务有多种方式。从访问接口类型上可以分为:数据卷方式、API 方式。

    1.png

    数据卷:将存储服务映射为块或文件系统方式共应用直接访问,使用方式类似于应用在操作系统中直接读写本地目录文件。例如:可以将块存储、文件存储挂载到本地,应用可以像访问本地文件一样对数据卷进行访问;
    API:有些存储类型并不能使用挂载数据卷的方式进行访问,而需要通过调用 API 的方式进行。例如:数据库存储、KV 存储、对象存储,都是通过 API 的方式进行数据的读写。

    需要说明的是对象存储类型,其标准使用方式是通过 Restful API 对外提供了文件的读写能力,但也可以使用用户态文件系统的方式进行存储挂载,使用方式模拟了块、文件存储数据卷挂载的方式。

    下面表格列举了各种存储接口的优缺点:

    2.jpg

    4.云原生存储分层

    3.png

    1)编排和操作系统层

    这一层定义了存储数据的对外访问接口,即应用访问数据时存储所表现的形式。同上节所述,可以分为数据卷方式和 API 访问方式。这一层是容器服务存储编排团队关注的重点,云原生存储对敏捷性、可操作性、扩展性等方面的需求都在这一层集成、实现。

    2)存储拓扑层

    这一层定义了存储系统的拓扑结构和架构设计,定义了系统不同部分是如何相互关联和连接的(如存储设备、计算节点和数据)。拓扑结构在构建时影响存储系统的许多属性,因此必须加以考虑。

    存储拓扑可以是集中式的、分布式的、或超融合的。

    3)数据保护层

    定义如何通过冗余的方式对数据进行保护。在存储系统出现故障时,如何通过数据冗余对数据进行保护、恢复非常重要。通常有以下几种数据保护方案:

    • RAID(独立磁盘冗余阵列):用于在多个磁盘之间的分发数据技术,同时考虑到冗余;
    • 擦除编码:数据被分成多个片段,这些片段被编码,并与多个冗余集合一起存储,保证数据可恢复;
    • 副本:将数据分布在多个服务器上,实现数据集的多个完整副本。

    4)数据服务

    数据服务补充了核心存储功能以外的存储能力,例如可以提供存储快照、数据恢复、数据加密等服务。
    数据服务所提供的补充能力也正是云原生存储所需要的,云原生存储正是通过集成丰富数据服务来实现其敏捷、稳定、可扩展等能力。

    5)物理层

    这一层定义了存储数据的实际物理硬件。物理硬件的选择影响系统的整体性能和存储数据的持续性。

    5.存储编排

    云原生意味着容器化,而容器服务场景中通常需要某种管理系统或者应用编排系统。这些编排系统与存储系统的交互可以实现工作负载与存储数据的关联。

    4.png

    如上图所示:

    • 负载:表示应用实例,会消费底层存储资源;
    • 编排系统:类似于 K8s 一样的容器编排系统,负责应用的管理和调度;
    • 控制平面接口:指编排系统调度、运维底层存储资源的标准接口,例如 K8s 里面的 Flexvolume,已经容器存储通用的 CSI 接口;
    • 工具集:指控制平面接口运维存储资源时所依赖的三方工具、框架;
    • 存储系统:分为控制平台数据数据平面。控制台平面对外暴露接口,提供存储资源的接入、接出能力。数据平面提供数据存储服务。

    当应用负载定义了存储资源需求时,编排系统会为应用负载去准备这些存储资源。编排系统通过调用控制平面接口,进而实现对存储系统控制平面的调用,这样就实现了应用负载对存储服务的接入、接出操作。当实现了存储系统接入后,应用负载可以直接访问存储系统的数据平面,即可以直接访问数据。

    常见的云原生存储方案

    1.公有云存储

    每个公有云服务提供商都会提供各种云资源,其中也包含了各种云存储服务。以阿里云为例,其几乎提供了能够满足所有业务需要的存储类型,包括:对象存储、块存储、文件存储、数据库等等。公有云存储的优势是规模效应,足够大的体量实现了巨大研发、运维投入的同时,提供低廉的价格优势。而且公有云存储在稳定性、性能、扩展性方面都能轻松满足您的业务需求。

    随着云原生技术的发展,各个公有云厂商都开始对其云服务进行云原生化改造或适配,提供更加敏捷、高效的服务来适应云原生应用的需求。阿里云存储服务也在云原生应用适配做了很多优化,阿里云容器服务团队实现的 CSI 存储驱动无缝的衔接了云原生应用和存储服务之间的数据接口。实现了用户使用存储资源时对底层存储无感知,而专注于自己的业务开发。

    5.png

    优点如下所示:

    • 高可靠性:多数云厂商都可以提供服务稳定性、数据可考虑下都非常优异的服务,例如:阿里云ebs提供了9个9的可靠性服务,为您的数据安全提供了强有力的基础保障能力;

    • 高性能:公有云对不同的服务提供了不同等级的存储性能适配,几乎可以满足所有应用类型对存储性能的需求。阿里云 EBS 可以提供百万级别的 IOPS 能力,接近本地盘的访问性能。NAS 服务最大提供每秒数十 G 的吞吐能力,在数据共享的应用场景满足您的高性能需求。而 CPFS 高性能并发文件系统最高可以提供近 TB 级别的吞吐能力,更是可以满足一些极端高性能计算对存储的需求;

    • 扩展性好:公有云存储服务一般都提供了容量扩容能力,让您在应用对存储的需求增加的时候可以动态的实现容量伸缩,且实现应用的无感知;

    • 安全性高:不同的云存储服务都提供了数据安全的保护机制,通过 KMS、AES 等加密技术实现数据的加密存储,同时也实现了客户端到服务的链路加密方案,让数据传输过程中也得到加密保护;

    • 成熟的云原生存储接口:提供了兼容所有存储类型的云原生存储接口,让您的应用无缝的接入不同存储服务。阿里云容器服务提供的 CSI 接口驱动已经支持了:云盘、OSS、NAS、本地盘、内存、LVM等多种存储类型,可以让应用无感知的访问任何的存储服务类型;

    • 免运维:相对于自建存储服务来说,公有云存储方案省去了运维的难度

    缺点如下所示:

    • 定制化能力差:由于公有云存储方案需要服务所有用户场景,其能力主要集中在一些通用需求,而对某些用户个性化需求很难满足。

    2.商业化云存储

    在很多私有云环境中,业务方为了实现数据的高可靠性通常会购买商业化的存储服务。这种方案为用户提供了高可用、高效、便捷的存储服务,且运维服务、后期保障等也都有保证。私有云存储提供商也意识到云原生应用的普及,也会为用户提供完善的、成熟的云原生存储接口实现方案。

    优点如下所示:

    • 安全性好:私有云部署,可以从物理上实现数据的安全隔离;
    • 高可靠、高性能:很多云存储提供商都是在存储技术上深耕多年,具有优异的技术能力和运维能力,其商业化存储服务可以满足多数应用的性能、可靠性的需求;
    • 云原生存储接口:从多家存储服务提供商开源的项目可以看出,其对云原生应用的支持已经实现或者展开。

    缺点如下所示:

    • :商业化的存储服务加个多数都很昂贵;
    • 云原生存储接口兼容性:商业化的云原生存储接口都是针对其一家的存储类型。多数用户会使用不同的存储类型,而使用了不同家的存储服务,很难实现统一的存储接入能力。

    3.自建存储服务

    对于一些 SLA 要是不是很高的业务数据,很多公司都会选择使用自建的方式提供存储服务。业务方需要通过当前的开源的存储方案,并结合自建的业务需求进行方案选择。

    • 文件存储:考虑 CephFS、GlusterFS、NFS 等方案。其中 CephFS,GlusterFS 在技术的成熟度上还需要进一步验证,且在高可靠、高性能场景上也存在不足。而 NFS 虽然已经成熟,但是自建集群在性能上很难达到高性能应用的需求。

    • 块存储:例如 RBD、SAN 等是常见的块存储方案,技术也相对比较成熟,已经有较多的公司将其应用在自己的业务上。但其复杂度也相对很高,需要有专业的团队来运维支持。

    优点如下所示:

    • 业务匹配度高、灵活性好:可以在众多开源方案中选择最适合自己业务的方案,且可以在原生代码的基础上进行二次开发来优化业务场景;
    • 安全性好:如果搭建在公司内部使用,则具有物理隔离的安全性;
    • 云原生存储接口:常用的开源存储方案都可以在社区找到云原生存储接口的实现,且可以在其基础上进行开发、优化。

    缺点如下所示:

    • 性能欠佳:多数开源的存储方案其原生的性能表现并不是很好。当然您可以通过架构设计、物理硬件升级、二次开发等方案进行优化;
    • 可靠性差:开源存储方案在可靠性方面无法和商业化的存储比较,所以更多场景是应用在 SLA 低的数据存储场景;
    • 云原生存储插件鱼龙混杂:目前网上开源的云原生存储驱动版本众多,且质量参差不齐,有些项目存在 bug,且长期无人维护,所以使用时需要更多的甄别和调测工作;
    • 专业的团队支撑:自己搭建的服务需要自己负责,面对并不是十分成熟的开源方案,需要组建一个具有较强技术能力的专业团队来运维、开发存储系统。

    4.本地存储

    一些业务类型不需要高可用分布式存储服务,而会选择使用性能表现更优的本地存储方案。

    数据库类服务:对存储的 IO 性能、访问时延有很多的要求,一般的块存储服务并不能很好的满足这方面的需求。且其应用本身已经实现了数据的高可用设计,不再需要底层实现多副本的能力,即分布式存储的多副本设计对这类应用是一种浪费。

    存储作为缓存:部分应用期望保存一些不重要的数据,数据在程序执行完成即可以丢掉,且对存储的性能要求较高,其本质是将存储作为缓存使用。云盘的高可用能力对这样的业务并没有太大的意义,且云盘在 IO 性能、价格方面的表现(相对本地盘)也没有优势。

    所以本地盘存储在很多关键能力上要比分布式块存储弱很多,但在特定场景下仍然有其使用的优势。阿里云存储服务提供了基于 NVMe 的本地盘存储方案,以更好的性能表现和更低的价格优势,在特定的应用场景得到了用户的青睐。

    6.png

    阿里云 CSI 驱动供了云原生应用使用本地存储的接入实现,支持:lvm 卷、本地盘裸设备、本地目录映射等多种接入形式,实现数据的高性能访问、quota、iops 配置等众多适配能力。

    优点如下所示:

    • 性能高:提供相对分布式存储更优的 IOPS、吞吐能力;
    • 低价:通过物理裸设备直接提供本地盘,在价格上相对于多副本的分布式存储具有优势。

    缺点如下所示:

    • 数据可靠性差:本地盘保存的数据丢失后不能找回,需要从应用层实现数据的高可用设计;
    • 灵活性差:不能像云盘一样实现数据迁移到其他节点使用。

    5.开源容器存储

    随着云原生技术的发展,社区提供了一些开源的云原生存储方案。

    1)Rook

    Rook 作为第一个 CNCF 存储项目,是一个集成了 Ceph、Minio 等分布式存储系统的云原生存储方案,意图实现一键式部署、管理方案,且和容器服务生态深度融合,提供适配云原生应用的各种能力。从实现上,可以认为 Rook 是一个提供了 Ceph 集群管理能力的 Operator。其使用 CRD 方式来对 Ceph、Minio 等存储资源进行部署和管理。

    7.png

    Rook 组件:

    • Operator:实现自动启动存储集群,并监控存储守护进程,并确保存储集群的健康;
    • Agent:在每个存储节点上运行,并部署一个 CSI / FlexVolume 插件,和 Kubernetes 的存储卷控制框架进行集成。Agent 处理所有的存储操作,例如挂载存储设备、加载存储卷以及格式化文件系统等;
    • Discovers:检测挂接到存储节点上的存储设备。

    Rook 将 Ceph 存储服务作为 Kubernetes 的一个服务进行部署,MON、OSD、MGR 守护进程会以 pod 的形式在 Kubernetes 进行部署,而 rook 核心组件对 ceph 集群进行运维管理操作。

    Rook 通过 ceph 可以对外提供完备的存储能力,支持对象、块、文件存储服务,让你通过一套系统实现对多种存储服务的需求。同时 rook 默认部署云原生存储接口的实现,通过 CSI / Flexvolume 驱动将应用服务与底层存储进行衔接,其设计之初即为 Kubernetes 生态所服务,对容器化应用的适配非常友好。

    Rook 官方文档参考:https://rook.io/

    2)OpenEBS

    OpenEBS 是一种模拟了 AWS 的 EBS、阿里云的云盘等块存储实现的开源版本。OpenEBS 是一种基于 CAS 理念的容器解决方案,其核心理念是存储和应用一样采用微服务架构,并通过 Kubernetes 来做资源编排。其架构实现上,每个卷的 Controller 都是一个单独的 Pod,且与应用 Pod 在同一个 Node,卷的数据使用多个 Pod 进行管理。

    8.png

    架构上可以分为数据平面(Data Plane)和控制平面(Control Plane)两部分:

    • 数据平面:为应用程序提供数据存储;
    • 控制平面:管理 OpenEBS 卷容器,通常会用到容器编排软件的功能;

    数据平面

    OpenEBS 持久化存储卷通过 Kubernetes 的 PV 来创建,使用 iSCSI 来实现,数据保存在 node 节点上或者云存储中。OpenEBS 的卷完全独立于用户的应用的生命周期来管理,和 Kuberentes 中 PV 的思路一致。
    OpenEBS 卷为容器提供持久化存储,具有针对系统故障的弹性,更快地访问存储,快照和备份功能。同时还提供了监控使用情况和执行 QoS 策略的机制。

    控制平面

    OpenEBS 控制平面 maya 实现了创建超融合的 OpenEBS,并将其挂载到如 Kubernetes 调度引擎上,用来扩展特定的容器编排系统提供的存储功能;
    OpenEBS 的控制平面也是基于微服务的,通过不同的组件实现存储管理功能、监控、容器编排插件等功能。

    更多关于 OpenEBS 的介绍可以参考:https://openebs.io/

    3)Heketi

    类似于 Rook 是 Ceph 开源存储系统在云原生编排平台(Kubernetes)的一个落地方案,Glusterfs 同样也有一个云原生实践方案。Heketi 提供了一个 Restful 管理接口,可用于管理 Gluster 存储卷的生命周期。使用 Heketi,Kubernetes 可以动态地为 Gluster 存储卷提供任何支持的持久性类型。Heketi 将自动确定集群中 brick 的位置,确保在不同的故障域中放置 brick 及其副本。Heketi 还支持任意数量的 Gluster 存储集群,为云服务提供网络文件存储。

    使用 Heketi,管理员不再管理或配置块、磁盘或存储池。Heketi 服务将为系统管理所有硬件,使其能够按需分配存储。任何在 Heketi 注册的物理存储必须以裸设备方式提供,然后 Heketi 在提供的磁盘上使用 LVM 进行管理。

    9.png

    更多详解参考:https://github.com/heketi/heketi)

    6. 优势

    • 上述几种云原生存储方案其设计之初既充分考虑了存储与云原生编排系统的融合,具有很好的容器数据卷接入能力;
    • 在 Quota 配置、QoS 限速、ACL 控制、快照、备份等方面有较好的云原生集成实现,云原生应用使用存储资源时更加灵活、便利;
    • 开源方案,社区较为活跃,网络资源、使用方案丰富,让您更容易入手。

    7. 劣势

    • 成熟度较低,目前上述方案多在公司内部测试环境或者 SLA 较低的应用中使用,很少存储关键应用数据;
    • 性能差:和公有云存储、商业化存储相比,上述云原生存储方案在 IO 性能、吞吐、时延等方面都表现欠佳,很难应用在高性能服务场景;
    • 后期维护成本高:虽然上面方案部署、入门都很简单,但一旦运行中出现问题解决起来非常棘手。上述项目属于初期阶段,并不具备生产级别的服务能力,如果使用此方案需要有强有力的技术团结加以保障。

    现状和挑战

    1.敏捷化需求

    云原生应用场景对服务的敏捷度、灵活性要求非常高,很多场景期望容器的快速启动、灵活的调度,这样即需要存储卷也能敏捷的根据 Pod 的变化而调整。

    需求表现在:

    • 云盘挂载、卸载效率提高:可以灵活的将块设备在不同节点进行快速的挂载切换;
    • 存储设备问题自愈能力增强:提供存储服务的问题自动修复能力,减少人为干预;
    • 提供更加灵活的卷大小配置能力。

    2.监控能力需求

    多数存储服务在底层文件系统级别已经提供了监控能力,然后从云原生数据卷角度的监控能力仍需要加强,目前提供的PV监控数据维度较少、监控力度较低;

    具体需求:

    提供更细力度(目录)的监控能力;
    提供更多维度的监控指标:读写时延、读写频率、IO 分布等指标;

    3.性能要求

    在大数据计算场景同时大量应用访问存储的需求很高,这样对存储服务带来的性能需求成为应用运行效率的关键瓶颈。

    具体需求:

    • 底层存储服务提供更加优异的存储性能服务,优化 CPFS、GPFS 等高性能存储服务满足业务需求;
    • 容器编排层面:优化存储调度能力,实现存储就近访问、数据分散存储等方式降低单个存储卷的访问压力。

    4.共享存储的隔离性

    共享存储提供了多个 Pod 共享数据的能力,方便了不同应用对数据的统一管理、访问,但在多租的场景中,不同租户对存储的隔离性需求成为一个需要解决的问题。

    底层存储提供目录间的强隔离能力,让共享文件系统的不同租户之间实现文件系统级别的隔离效果。
    容器编排层实现基于名词空间、PSP 策略的编排隔离能力,保证不同租户从应用部署侧即无法访问其他租户的存储卷服务。

    - 赠书福利 -
    图片1.jpg
    6 月 12 日 17:00 前在“阿里巴巴云原生”公众号留言区欢迎大家讨论交流云原生存储新的机遇与挑战,精选留言点赞第 1 名即可免费获得此书!

    课程推荐

    为了更多开发者能够享受到 Serverless 带来的红利,这一次,我们集结了 10+ 位阿里巴巴 Serverless 领域技术专家,打造出最适合开发者入门的 Serverless 公开课,让你即学即用,轻松拥抱云计算的新范式——Serverless。

    点击即可免费观看课程:https://developer.aliyun.com/learning/roadmap/serverless

    阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的公众号。”

    展开全文
  • 云原生应用的12要素

    万次阅读 2018-03-12 21:33:40
    在云的时代,应用会更多的迁移到云端,基于云的架构设计和开发模式需要一套全新的理念去承载,于是云原生思想应运而生,而针对云原生应用开发的最佳实践原则,12-Factor脱颖而出,同时也带来了新的解读。 12-Factor...
  • 在MEC全球应用开发者大会的“MEC开放论坛”上,阿里云高级技术专家周哲进行了《阿里边缘云原生应用实践》主题分享,站在技术视角对边缘云原生的技术概念、应用场景、阿里云边缘云原生实践案例等多方面进行解读。...
  • 作者| 郡宝 阿里云技术专家 参与文末留言互动,即有机会获得赠书福利!...从本文开始,我们将用一个系列文章对云原生存储进行方方面面的探析,该系列文章将从云原生存储服务的概念、特点、需求、原理、使用、案例..
  • 什么是云原生应用

    2020-08-07 11:05:48
    云原生应用越来越多,其是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的,只要云平台支持这个传统应用所运行的计算机架构和操作系统。只不过...
  • 什么是 云原生应用

    2021-02-02 09:28:35
    云原生意味着应用程序原生就被设计为在云上以最佳方式运行。 云原生是一种专门针对云上应用而设计的方法,用于构建和部署应用,以充分发挥云计算的优势。这些应用特点是可以实现快速和频繁的构建、发布、部署,...
  • 云原生应用开发框架Quarkus介绍 1. 概述 Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈Kubernetes云原生Java框架,用于专门针对容器优化的Java开发框架,并使其成为 serverless、cloud和Kubernetes...
  • 云原生应用架构包含三个特征:容器化、微服务和 DevOps。 容器已有10来年的历史,2013年开源的Docker 容器引擎,被开发者所广泛熟悉. 容器可以理解为隔离环境的“运行时”,这也很好诠释了 Docker 集装箱的理念 --...
  • 应用迁移到云上就是云原生架构吗?什么才是云原生架构?为什么要作云原生架构?本文告诉你,除了把应用搬到云上,要实现云原生,你还要做很多。
  • Dapr是一个开源、可移植、事件驱动的云原生分布式应用运行时,它使开发人员能够轻松地构建运行在云平台和边缘的弹性而微服务化的无状态和有状态的应用程序,从而降低基于微服务架构构建现代云原生应用的准入门槛。...
  • 最近在做云原生相关的业务,简单梳理了一下项目中的实现,所以特地记录一下用到的技术以及知识点。 云函数/云应用 云函数/云应用都是使用knative实现的,配合istio进行流量控制,具体体现出来就是这样的伪代码: ...
  • 来源 | 阿里巴巴云原生公众号 作者 | 溪恒、遥方 一年一度的 “双11” 大促中,交易额每年都在刷新,承接这些交易商品的快递包裹的数量也在成倍增长。这些快速的增长对物流系统带来了巨大的挑战,让物流管理更加敏捷...
  • 云原生技术发展简史 首先从第一个问题进行分享,那就是“为什么要开设云原生技术公开课?”云原生、CNCF都是目前非常热门的关键词,但是这些技术并不是非常新鲜的内容。 2004年— 2007年,Google 已在内部大规模地...
  • 丁宇,花名叔同,阿里巴巴研究员、阿里云智能云原生应用平台负责人,他所看到且给出的,也许不是客户数字化转型的唯一方案,但却是经过阿里云多年实践得出的对某类问题的最优解。 回顾过去十五年,阿里巴巴的云原生...
  • 要写一个时髦的云原生应用,首先当然要了解什么是云原生。CNCF,也就是云原生计算基金会,作为目前人气最旺的云计算行业协会,在今年6月份给出了云原生的定义,阿里云牵头做了一个官方的翻译: “云原生技术有利于各...
  • 简介:Gartner于 2019 年发布报告表示:云原生时代已经到,在未来三年中将有 75% 的全球化企业使用容器化的应用云原生具有诸多优势,如系统弹性带来用户体验提升、研发效能提升、低成本运维或免运维,以及即插即用...
  • 云原生技术应用产生了新的云安全需求,CISO 要在竞争激烈的云原生市场中确保业务安全。传统的防火墙、反病毒、服务器监控、终端检测响应和SIEM等安全产品,与云原生的适配性较好,容易部署上云。但工作负载安全、...
  • 要写一个时髦的云原生应用,首先当然要了解什么是云原生。CNCF,也就是云原生计算基金会,作为目前人气最旺的云计算行业协会,在今年6月份给出了云原生的定义,阿里云牵头做了一个官方的翻译: “云原生技术有利于各...
  • Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deployment 等,实际上只是应用中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,070
精华内容 7,228
关键字:

云原生应用的特点