精华内容
下载资源
问答
  • 云原生架构 云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等)...

    云原生架构原则

    云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。
    传统单体应用中,开发人员的代码包含3部分:业务代码、三方软件、处理非功能特性的代码,其中只有业务代码是核心,是对业务真正带来价值的。云原生架构从业务代码中剥离了大量非功能性特性到 IaaS 和 PaaS 中,从而减少业务代码开发人员的技术关注范围。
    云原生架构的应用可以最大程度利用云服务和提升软件交付能力,加快软件开发,表现在以下3个方面:

    1. 代码结构发生巨大变化。 云把三方软硬件的能力升级成了服务,开发人员的开发复杂度和运维人员的运维工作量都得到极大降低。
    2. 非功能性特性的大量委托。 非功能性特性是没有给业务带来直接业务价值,但通常又是必不可少的特性,比如高可用能力、容灾能力、安全特性、可运维性、易用性、可测试性、灰度发布能力等等。大量非功能性特性,特别是分布式环境下复杂非功能性问题,被云产品处理掉了。以高可用为例:
      虚机:当虚机检测到底层硬件异常时,自动帮助应用做热迁移,应用对整个迁移过程都不会有任何感知;
      容器:容器通过监控检查探测到进程状态异常,从而实施异常节点的下线、新节点上线和生产流量的切换等操作,整个过程自动完成而无需运维人员干预;
      云服务:应用可以把“有状态”部分都交给了云服务(如缓存、数据库、对象存储等),由于云服务本身具备极强的高可用能力,那么应用本身会变成更薄的“无状态”应用,因为高可用故障带来的业务中断会降至分钟级。
    3. 高度自动化的软件交付。

    云原生架构原则

    1. 服务化原则
    2. 弹性原则
    3. 可观测原则
    4. 韧性原则
    5. 所有过程自动化原则
    6. 零信任原则
    7. 架构持续演进原则
    展开全文
  • 云原生架构 在马萨诸塞州波士顿的O'Reilly建筑会议上,Rags Srinivas赶上了Matt Stine。 马特(Matt)谈到云原生架构以及一些文化和技术挑战。 他谈论了一些NetFlix服务以及Spring如何对其进行包装,以便能够在平台...

    云原生架构

    在马萨诸塞州波士顿的O'Reilly建筑会议上,Rags Srinivas赶上了Matt Stine。 马特(Matt)谈到云原生架构以及一些文化和技术挑战。 他谈论了一些NetFlix服务以及Spring如何对其进行包装,以便能够在平台上设计和开发微服务。 他还谈到了SOA及其可能遗漏的内容。

    InfoQ:您好,欢迎光临。 和我一起有Pivotal的Matt Stine,我们正在马萨诸塞州波士顿举行的O'Reilly建筑师会议上。 Matt,如果您能花一点时间向InfoQ受众介绍自己,那将很棒。

    马特:好的。 是的,正如您所说,我是Matt Stine。 自从Pivotal几年前成立以来,我就一直在Pivotal工作,并以某种形式与Cloud Foundry团队一起工作。 我一直在做很多不同的事情:工程,技术传播,技术营销和博客。 最近,我开始围绕我们为Cloud Foundry构建的一组服务进行一些产品管理工作,这些服务涉及Spring Cloud和Netflix OSS。

    InfoQ:我知道您最近写了O'Reilly出版的一本书,该书在会议上被赠送给了有关云原生架构的信息。 例如,从架构师或开发人员的角度来看,云原生的确切含义是什么?

    Matt:所以我所说的“云原生”是许多不同想法的融合,同时也恰逢许多试图迁移到云的公司。 这些想法包括DevOps,持续交付,微服务,敏捷基础架构,Conway法则,以及围绕业务功能重组公司。 发生了很多事情,而云原生碰巧是我和其他一些人正在应用的通用名称。 如果这本书有一个收获,那就是我所谈论的绝大多数与人员,组织结构和文化变革有关。 而且其中融合了一些技术。

    谈论云原生的架构并花费所有时间谈论人员是很奇怪的,但这确实是这种架构仅在您更改公司以促进其运作时才有效的事实。 而且,当您这样做时,该体系结构将为您带来很多好处,同时可以进行某种重组。 因此,我认为主要的收获是,这种趋势不仅是技术趋势,甚至不是主要的技术趋势。 这主要是文化和组织变革的趋势。

    InfoQ:好的。 我认为这是我接下来要讨论的话题,微服务从根本上来说是新的吗? SOA是否又重新出现了?新瓶装老酒如某些特征所示?

    Matt:我参与了有关微服务与SOA的关系的一些对话。 在某种程度上,我认为这并不是一次非常有用的对话。 话虽如此,与SOA的Wikipedia页面的前几段相比,我们现在所说的微服务在很多方面听起来与SOA非常相似。 我认为真正的区别在于供应商如何通过SOA货币化。 他们的重点通常是将所有内容都放入这种称为企业服务总线的新中间件中,以取代不再流行的所有其他大型中间件。 并不是说ESB技术很糟糕。 这就是我们使用它的方式,用另一个整体替换一个大型整体。 从这里取走所有复杂性并将其推到那里。 迁移到面向服务的体系结构实际上并不需要这些。

    如果您只关注明确的服务,清晰的合同和清晰的API的服务原理(换句话说,SOA背后的原意是什么),它将与背后的技术原理很好地匹配微服务也将成为。 但是,随着SOA趋势,您真正看不到的是对文化,组织甚至运营方面的关注。

    当我听尼尔·福特谈论微服务时,我心中就想到了运营方面的想法。 他指出,当他查看这些涉及ESB的体系结构图时,它们看起来确实不错,而且易于理解,但从操作角度来看,它们实际上并没有做任何事情。

    因此,我们去尝试用它进行连续交付。 我们遇到了所有这些意外的障碍,因为没有人真正考虑过在生产中运行此产品会发生什么。 您会看到微服务,它是在DevOps和持续交付对话发生之后出现的最早的架构之一。 现在,您有很多团队正在与他们进行对话,并且在他们的脑海中进行对话,并且您会看到这些特定类型的体系结构不断涌现。 这些是我们现在开始将“微服务”标签应用到的体系结构。

    因此,我认为原则上两者之间没有太大差异,但是实现方面两者之间有很大差异。 我认为这就是对话的来源。 从原理和SOA和微服务背后的历史的角度来看,它们没有什么不同。 但是,当您实际了解人们日常工作以实现微服务与SOA的关系时,他们看起来就完全不同了。

    InfoQ:现在,在SOA方面失败的经典例子就是这种整体式UDDI。 我不知道您是否还记得通用发现和目录接口? 即使在微服务的角度来看,服务发现仍然非常关键,对吗?

    马特:对。

    InfoQ:那么它有多重要,以及在微服务领域正在发生什么?

    马特:是的,因此,感谢您提前向我发送问题,我得以查找UDDI来提醒自己那是什么。 当它流行时,我从未真正使用过它。 当然,我不知道它曾经流行过,但这是人们谈论的话题。 我认为我们正在谈论的服务发现有很大的不同。 据我了解UDDI一样,这就像电话簿一样,作为某些服务的开发人员,我将去该电话簿中寻找我需要的东西,例如信用卡处理服务。

    因此,我的第一个问题是:“那么,那里提供哪些信用卡处理服务?” 根据UDDI的答案,我将选择一个。 在选择一项时,我还将根据一些WSDL文档来发现该服务的合同定义。 我将使用该WSDL,并且可能会使用它来生成一些代码,这些代码将使我能够与信用卡处理服务进行交互。

    您最终得到的是这种与目录中的这些服务松散耦合的错觉,但是实际上就该WSDL而言,您与特定合同紧密耦合。 如果WSDL发生更改,那么现在突然生成的代码将不再有效,并且您必须不断地经历此循环。

    因此,当我从服务发现的角度看待今天我们谈论的内容时,目录的想法仍然存在,但是在发现“那里”有什么服务方面并没有那么多。 更进一步,我们知道我们需要某些东西,并且知道它存在于体系结构中,并且具有与之关联的逻辑名称。 我只需要知道该逻辑名如何转换为可以与之通信的实际网络地址即可。

    因此,这是我在该空间中处理过的典型代码示例:我正在构建商店服务和客户服务,并且我知道客户服务需要使用商店服务。 它只是不知道商店服务的位置。 我不想硬性规定,因为我会将这些服务紧密结合在一起。 但是,通过在外面设置服务注册表,我可以消除以下事实:我知道我需要从该组件实际所在的位置开始。 这样一来,我便具备了使用商店服务做事的能力:我可以向外扩展; 我可以放大; 我可以四处移动(就像我有时喜欢在云架构中那样)。 但是,在此过程中,我从不中断客户服务。

    另一件事是,我们已经完全将服务合同的发现与服务注册表本身分离开了。 您在Netflix的Eureka上,找不到关于API外观的任何WSDL或规范。 现在,您可能会获得服务的地址并连接到它,它可能会告诉您“这就是我的API”,或者您可以通过其他某种方式来实现。 但是,这是两个独立的问题,我们已经将它们分开。 而使用UDDI,它们之间的耦合要紧密得多。

    是的,同样,如果您像SOA和微服务一样,具有很高的思想水平,那么Service Discover和UDDI之间会有一些相似之处。 但是,实现方式却大不相同。

    InfoQ:我认为您已经提到了Netflix正在开发的一些微服务。 我知道您也在Spring Cloud上工作,对吗? 那么,您能否谈谈Netflix OSS和Spring Cloud之间的一般协同作用,以及您正在关注的某些组件?

    马特: Pivotal与Netflix之间,尤其是Spring团队与Netflix之间的关系越来越紧密,并且在不断发展,但是这种关系正在继续渗透到Pivotal的其他部分。 Netflix长期以来一直是Spring技术的用户。 他们已经成为Spring Boot的拥护者和用户,并且Netflix今天正在使用Spring Boot编写大量应用程序。 在Spring Boot诞生之前,他们还是Grails的大用户。

    在构建Spring Cloud时,我们在Spring和Netflix工程团队之间进行了多次对话–了解这些东西是如何工作的以及如何正确使用它们。 并不是说我们只是去拿起开源,将其包裹起来,然后扔到那里。 为了确保这些工作做得很好,进行了大量合作。 而且,关于如何利用Spring进行下一代工作以及Netflix利用其云技术进行下一代工作并使它们之间的联系更加紧密的讨论还在继续进行着更深入的讨论。 因此,我希望在未来的几个月和几年中,这两组之间的异花传粉会带来更多激动人心的事情。

    InfoQ:好的。 从开发人员的角度来看,有很多事情可以使所有这些事情变得正确,而我的意思是说,有服务发现,然后当然还有通常的事情-我必须扩展,我必须连接到日志等等,对吗?

    马特:对。

    InfoQ:显然,像Cloud Foundry这样的PaaS可以为您提供帮助吗? 但是,您能否详细说明微服务方法与PaaS方法或至少Cloud Foundry方法是相似还是不相似?

    马特:您只在9个月前倒带,我们真的根本没有在谈论这个。 有一次微服务对话刚刚兴起,也有一次Cloud Foundry对话–从开发人员的生产力,运营效率以及总体上来说,情况如何。 在这一点上,我们正在讨论叉车运输,接管遗留工作负载并将其转移到云中。 这在很多方面都是有问题的,很难,有时甚至是不可能的。 通常,您不想这样做。

    这些问题就会浮出水面:“好吧,为在Cloud Foundry上运行而构建的应用程序看起来像什么?” 我真的开始考虑这个问题。 您如何回答? 有一阵子,答案是十二因素。 十二因子从Heroku中出来。 我们开始在Cloud Foundry中使用他们的buildpack模型。 十二因子非常适合Cloud Foundry。 您几乎可以说Cloud Foundry已调整为运行“十二因子”应用程序。 但这甚至还告诉您一些有关应用程序运行方式的实现细节。 但是当您说“我将设计一个运行良好的应用程序”时,您可以构建一个非常大的十二因子应用程序。 这就是我们要达到的目标吗? 可能不是。

    因此,我开始研究微服务。 两者之间存在这种协同作用,几乎是共生关系。 微服务具有许多与之相关的操作挑战,您无法忽略。 事实证明,Cloud Foundry旨在解决与运营完全相同的挑战。 然后您看一下Cloud Foundry:有些应用程序在那里运行不佳,有些应用程序却在运行。 您将研究微服务及其通常的构建方式,从Cloud Foundry的角度看,它几乎像是手牵手。

    您不必一定要拥有另一个,但是当您将它们组合在一起时,就会产生强大的协同作用。 因此,我作为一个挑战去出去开始这段对话。 因此,在上届Cloud Foundry峰会上,我提出了一个演讲:“ Cloud Foundry和微服务:一种共生关系。” 它被接受了,我恰好讨论了这个话题。 它受到了很好的欢迎,并在接下来的几个月中获得了成功,最终使我们真正真正地投入了这场对话。

    同时,Spring Cloud项目开始独立于此进行,最终我们将这两个小组合并在一起。 现在,借助Cloud Foundry,微服务,Spring Cloud和Netflix可以全速前进。 我们的目标是建立一个云原生的应用程序平台和开发框架,以创建用于构建这些架构的全栈解决方案,并利用(至少从技术角度出发)完成此任务所需的一切。 因此,剩下的就是我们用技术无法解决的问题:文化和组织方面的挑战。

    InfoQ: 行业在集装箱上疯狂的一件事是吧? 您能描述一下Spring Boot的特性吗?我会把Spring称为轻量级容器,但我不知道Spring Boot是否是轻量级容器。 您一般对容器有何看法?

    马特:当我们谈论容器时,通常是在谈论Linux容器。 我假设您正在谈论Java容器。 不幸的是,容器是一个非常重载的术语。 无论如何,每个人都在谈论Docker。 那么Doc​​ker和Spring Boot之间是什么关系呢?

    因此,对于我来说创建一个Boot应用程序的Spring应用程序非常容易。 Boot帮助我嵌入了运行Web应用程序所需的servlet容器,并且可以从Tomcat,Jetty或Undertow中进行选择。

    因此,现在我有了一个自包含的JAR文件,可以执行我需要的一切。 这很容易,并获得一个具有Java的Docker容器映像,然后创建一个包含我的Spring Boot应用程序的新层。 因此,现在我有了这个可移植的容器映像,其中包含可以运送的Spring Boot应用程序。 我认为那里有很好的协同作用。 如果您将其与即将通过Cloud Foundry或Lattice在Diego上运行Docker或Rocket映像(或其他任何功能)相结合,那么您将拥有一些非常强大的工具。

    从连续交付的角度来看,可以说我在笔记本电脑上运行的东西,通过持续集成管道运送的东西以及现在在Cloud Foundry上生产中运行的东西都很棒。同一件事情。 持续交付的核心原则之一是差异很重要–即使微小的差异也可能是两者之间在这里起作用而在那里不起作用的区别。 因此,知道这些东西(我开发的东西,我测试的东西以及我在生产中运行的东西)在根文件系统中都是一样的,这使我大大提高了信心,相信它们会真正起作用。

    关键区别在于,显然这里有一个内核,那里也有内核。 大概是相同或非常接近的。 但这是唯一应该有所不同的东西,而这并不是几年前我们就能轻松实现的。 很难做到这一点。 我们可以用虚拟机来近似它,但是它们比较昂贵,但是不幸的是,它的周转时间仍然很长。 现在,我可以在几秒钟内使用容器完成此操作。

    现在,您仍然需要解决许多问题。 您如何增加规模? 您如何管理这些图像的创建和更新? 因为如果您不擅长容器图像卫生,请确保图像来自同一根目录(这是有道理的),那么您可以做的是创建大量彼此之间没有太多共享的图像。 您可以填满磁盘空间并在那里造成很多低效率的情况。 看起来看似简单。 我可以在五分钟内创建并运行一个容器映像。 这是一个入门练习。 当您超越这一范围时,团队需要做大量工作来创建一个纪律严明的流程,并需要一套工具来围绕以一致且可重复的方式创建和管理这些映像,以便不同的团队交付应用程序。 ,我们都没有自己的定制根文件系统,实际上,我们受益于容器映像可以为我们带来的预期效率。

    我要说的是,那里没有免费的午餐。 这些东西都是强大的工具,但是没有一个是免费的。 为了有效地使用它们,您必须学习一些东西并改变做事的方式。

    InfoQ:InfoQ的受众是大量实践敏捷的实践者和架构师。 我认为我们已经从敏捷开始。 所以这是我们最后要回答的问题。 从架构的角度来看,敏捷有意义吗? 有时人们会说只是继续即兴而做,是吧? 建筑与敏捷如何融合?

    马特(Matt):我认为某种意义上敏捷具有仪式,有时这些仪式使敏捷的心脏模糊不清,因为它会不断地响应反馈。 我们没有做大计划。 我们不做大设计。 我们不做大型架构。 我们看到了这一点,如果我们不注意的话,我们可以从频谱的一端开始,从繁重的,预先的计划和设计,瀑布,或者任何您想称呼的那端,我们可以一直飞翔到另一端,说我们什么都没考虑。 我们什么都不设计。 我们什么都不会集思广益。 我们紧跟方向盘,然后猛烈前进,继续前进,继续前进,继续进行编码,编码,编码,测试,测试,测试。 我们相信,最终,正确的事情将会浮出水面。 两种极端都不是一个好方法。

    Rich Hickey在几年前的一次演讲中引起了很多人的兴趣(链接到InfoQ上的演讲链接:http://www.infoq.com/presentations/Simple-Made-Easy)。 在演讲的一部分中,他将测试驱动的开发比作他所谓的“护栏驱动的开发”。 他说:“我不会将汽车不断撞在护栏上,并希望它们将我保持在道路上,从而使汽车保持在道路上。” 很多人认为他说测试驱动的开发是坏的还是愚蠢的。 你不应该这样工作。 你不应该做TDD。 我不会为Rich发言,但是我认为那根本不是他的意思。 我认为关键是仍有思考的空间。 实际上,思考是必不可少的-考虑架构,考虑设计,了解您要去的地方,然后使用TDD之类的实践作为工具来帮助您实现目标。

    因此,可以暂停一下编写测试和代码的时间,然后开始思考,好的,我们要去哪里? 希望该模块或API外观如何? 我们将要面对的担忧是什么?要么使我们难以为其编写测试,要么甚至不知道如何为它编写测试? 因此,也许我们需要退后一步,进入房间,绕过白板,然后将所有内容绘制出来。 但是,那么我们就不会将其转换为重量级的正式UML文档。 进行轻量级的体系结构和设计是完全可能的。 首先,您可以简单地意识到工作是从您的头脑开始的,然后再从您的手中流到键盘上。

    我认为,当您在团队中找到合适的位置时,您就会找到成功。 该位置主要基于您要构建的东西。 它固有的复杂性是什么? 如果要构建相对较小的应用程序,则可能不需要那么多架构。 但是,对于构建由微服务组成的大规模分布式系统而言,这些微服务以“ Web规模”运行并试图支持数百万个用户,那么,您可能不仅会以TDD的方式出现。

    因此,我认为就像软件工程中的所有内容一样,这个问题也没有二进制答案。 不是这个或那个。 在这两个极端之间,您的团队有一个正确的答案。 您必须在上下文中找到要解决的问题的答案; 您需要多少架构实践,实际需要多少文档。 而且我认为,如果您只是备份并认为敏捷可以使反馈循环持续进行-获取反馈,做出响应,进行课程改正和构建正确的东西-则其余所有这些内容都可能会自行解决。

    只要持续改进,持续反馈以及对该反馈的持续响应是您正在做的工作的核心,那么您可以进行架构设计,也可以进行配对和TDD。 您可以执行任何这些操作,并且会为您的特定情况找到合适的平衡点。

    关于被访者

    Matt Stine是Pivotal的技术产品经理。 他是企业IT行业的15年资深人士,具有跨多个业务领域的经验。 他是O'Reilly最近出版的Migrating to Cloud-Native Application Architectures的作者,可以免费下载该书。

    翻译自: https://www.infoq.com/articles/cloud-native-architectures-matt-stine/?topicPageSponsorship=c1246725-b0a7-43a6-9ef9-68102c8d48e1

    云原生架构

    展开全文
  • 云原生架构白皮书.pdf

    2020-10-26 15:14:22
    作为业界第一本全方位构建云原生架构规划与实践全景图的白皮书,本书在详细阐述云原生架构定义的同时,完整展示云原生架构应用所需的演进路径与设计规则,旨在帮助企业更好地理解与应用云原生架构,助力企业数字化...
  • 阿里巴巴云原生架构设计 ACNA(Alibaba Cloud Native Architecting)架构设计方法 ACNA 是一个 「4+1」 的架构设计流程,「4」 代表架构设计的关键视角,包括: 企业战略视角 业务发展视角 组织能力视角 云原生技术...

    阿里巴巴云原生架构设计

    ACNA(Alibaba Cloud Native Architecting)架构设计方法

    ACNA 是一个 「4+1」 的架构设计流程,「4」 代表架构设计的关键视角,包括:

    • 企业战略视角
    • 业务发展视角
    • 组织能力视角
    • 云原生技术架构视角
      「1」 表示云原生架构的架构持续演进闭环。
      ACNA 除了是一个架构设计方法,也包含了对云原生架构的评估体系、成熟度衡量体系、行业应用最佳实践、技术和产品体系、架构原则、实施指导等。

    云原生技术架构视角

    服务化能力
    用微服务或者小服务构建业务,分离大块业务中具备不同业务迭代周期的模块,并让业务以标准化 API 等方式进行集成和编排;服务间采用事件驱动的方式集成,减小相互依赖;通过可度量建设不断提升服务的 SLA 能力;
    弹性能力
    自动根据业务峰值、资源负载扩充或者收缩系统的规模;
    无服务器化程度
    在业务中尽量使用云服务而不是自己持有三方服务,特别是自己运维开源软件的情况;并让应用的设计尽量变成无状态的模式,把有状态部分保存到云服务中;尽量采用 FaaS、容器 / 应用无服务器的云服务;
    可观测性
    IT 设施需要被持续治理,任何 IT 设施中的软硬件发生错误后能够被快速修复,从而不会让这样的错误对业务带来影响,这就需要系统有全面的可观测性,从传统的日志方式、监控、APM 到链路跟踪、服务 QoS 度量;
    韧性能力
    除了包括服务化中常用的熔断、限流、降级、自动重试、反压等特性外,还包括高可用、容灾、异步化的特性;
    自动化水平
    关注整个开发、测试和运维三个过程的敏捷,推荐使用容器技术自动化软件构建过程、使用 OAM 标准化软件交付过程、使用 IaC(Infrastructure as Code)/GitOps 等自动化 CI/CD 流水线和运维过程;
    安全能力
    关注业务的数字化安全,在利用云服务加固业务运行环境的同时,采用安全软件生命周期开发,使应用符合ISO27001、PCIDSS、等级保护等安全要求。这个维度作为基础维度,要求在架构评测中关注但是并不参与评分。

    架构持续演进闭环

    **关键输入:**企业战略视角、业务发展视角;
    **关键过程:**识别业务痛点和架构债务、确定架构迭代目标、评估架构风险、选取云原生技术、制定迭代计划、架构评审和设计评审、架构风险控制、迭代验收和复盘。

    展开全文
  • 云原生架构模式 常见模式列举 服务化架构模式 服务化架构是云时代构建云原生应用的标准架构模式,要求以应用模块为颗粒度划分一个软件,以接口契约(例如 IDL)定义彼此业务关系,以标准协议(HTTP、gRPC 等)确保...

    云原生架构模式

    常见模式列举

    服务化架构模式

    服务化架构是云时代构建云原生应用的标准架构模式,要求以应用模块为颗粒度划分一个软件,以接口契约(例如 IDL)定义彼此业务关系,以标准协议(HTTP、gRPC 等)确保彼此的互联互通,结合DDD(领域模型驱动)、TDD(测试驱动开发)、容器化部署提升每个接口的代码质量和迭代速度。服务化架构的典型模式是微服务
    需要注意,服务拆分导致要维护的模块数量增多,如果缺乏服务的自动化能力和治理能力,会让模块管理和组织技能不匹配,反而导致开发和运维效率的降低。

    Mesh 化架构模式

    Mesh 化架构是把中间件框架(比如 RPC、缓存、异步消息等)从业务进程中分离,让中间件 SDK 与业务代码进一步解耦,从而使得中间件升级对业务进程没有影响,甚至迁移到另外一个平台的中间件也对业务透明。

    Serverless 模式

    Serverless 将“部署”这个动作从运维中“收走”,使开发者不用关心应用在哪里运行,更不用关心装什么 OS、怎么配置网络、需要多少 CPU …… 从架构抽象上看,当业务流量到来 / 业务事件发生时,云会启动或调度一个已启动的业务进程进行处理,处理完成后云自动会关闭 / 调度业务进程,等待下一次触发。也就是把应用的整个运行时都委托给云。
    Serverless 并不适合所有的应用场景,适合于事件驱动的数据计算任务、计算时间短的请求 / 响应应用、没有复杂相互调用的长周期任务。

    存储计算分离模式

    分布式环境中的 CAP 困难主要是针对有状态应用,因为无状态应用不存在 C(一致性)这个维度,因此可以获得很好的 A(可用性)和 P(分区容错性),因而获得更好的弹性。在云环境中,推荐把各类暂态数据(如 session)、结构化和非结构化持久数据都采用云服务来保存,从而实现存储计算分离。

    分布式事务模式

    微服务模式提倡每个服务使用私有的数据源,而不是像单体这样共享数据源,但往往大颗粒度的业务需要访问多个微服务,必然带来分布式事务问题,否则数据就会出现不一致。架构师需要根据不同的场景选择合适的分布式事务模式。
    传统采用 XA 模式,虽然具备很强的一致性,但是性能差;
    基于消息的**最终一致性(BASE)**通常有很高的性能,但是通用性有限,且消息端只能成功而不能触发消息生产端的事务回滚;
    TCC 模式完全由应用层来控制事务,事务隔离性可控,也可以做到比较高效;但是对业务的侵入性非常强,设计开发维护等成本很高;
    SAGA 模式与 TCC 模式的优缺点类似但没有 try 这个阶段,而是每个正向事务都对应一个补偿事务,也是开发维护成本高;
    开源项目 SEATA 的 AT 模式非常高性能且无代码开发工作量,且可以自动执行回滚操作,同时也存在一些使用场景限制。

    可观测架构

    可观测架构包括 Logging、Tracing、Metrics 三个方面,其中 Logging 提供多个级别(verbose/debug/warning/error/fatal)的详细信息跟踪,由应用开发者主动提供;Tracing 提供一个请求从前端到后端的完整调用链路跟踪,对于分布式场景尤其有用;Metrics 则提供对系统量化的多维度度量。
    建立可观测性的主要目标是对**服务 SLO(Service Level Objective)**进行度量,从而优化 SLA,因此架构设计上需要为各个组件定义清晰的 SLO,包括并发度、耗时、可用时长、容量等。

    事件驱动架构

    事件驱动架构(EDA,Event Driven Architecture)本质上是一种应用 / 组件间的集成架构模式,事件和传统的消息不同,事件具有 schema,所以可以校验 event 的有效性,同时 EDA 具备 QoS 保障机制,也能够对事件处理失败进行响应。事件驱动架构不仅用于**(微)服务解耦**,还可应用于以下场景中:

    典型反模式

    单体应用

    展开全文
  • 云原生架构未来发展趋势 容器技术发展趋势 趋势一:无处不在的计算催生新一代容器实现 趋势二:云原生操作系统开始浮现 趋势三: Serverless 容器技术逐渐成为市场主流 趋势四:动态、混合、分布式的云环境将成为新...
  • 云原生架构白皮书》中对于云原生架构的定义为“基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、...
  • 云原生架构 云原生开发蓝图的介绍为深入研究其逻辑图奠定了基础。 在本文中,我们继续看一下常见的架构元素。 提供了一个描述,以指导您使我们在此处介绍的内容与您的组织每天工作的情况保持一致。 这些详细...
  • 微服务和云原生架构实践

    千人学习 2019-01-11 17:37:00
    通过剖析和展示一个端到端的简化微服务应用案例MovieApp,帮助学员学习理解现代微服务应用和云原生架构实践,内容包括: 微服务应用架构 前后分离应用架构 基于Spring Security + JWT的...
  • 简介: 有幸作为阿里云MVP提前获得了阿里云云原生团队编写的《云原生架构白皮书》,希望通过自己对于云原生的理解为开发者提供一篇观后感或者是能够参考的博文1 云原生与分布式系统架构的关系1.1 云原生架构的定义...
  • 什么是云原生架构

    千次阅读 2018-10-25 18:56:00
    本文简要介绍了云原生架构的定义和个人对云原生架构的理解。 个人认为,云原生架构应该包括2大部分:云原生平台和云原生应用。 云计算提供了对无限IT资源的按需付费的商业模式,但从技术架构上看,还需要一个用于...
  • 2020 年 7 月 21 日,由阿里云 20+ 位云原生技术专家共同编撰的《云原生架构白皮书》正式对外发布。作为【业界第一本全方位构建云原生架构规划与实践全景图的白皮书】,本书在详细阐...
  • 作为业界首本全方位构建云原生架构规划与实践全景图的白皮书,本书在详细阐述云原生架构定义的同时,完整展示云原生架构应用所需的演进路径与设计规则,旨在帮助企业更好地理解与应用云原生架构,助力企业数字化转型...
  • 快速了解云原生架构

    2021-02-01 17:12:50
    简介:云原生架构本质上也是一种软件架构,最大的特点是在云环境下运行,也算是微服务的一种延伸。 作者 | 潘义文(空易) 来源|阿里巴巴云原生公众号 起源 1. 云原生(Cloud Native)的由来 云原生的概念最早...
  • 作为业界第一本全方位构建云原生架构规划与实践全景图的白皮书,本书在详细阐述云原生架构定义的同时,完整展示云原生架构应用所需的演进路径与设计规则,旨在帮助企业更好地理解与应用云原生架构,助力企业数字化...
  • 云原生架构概述

    2021-01-27 12:17:15
    在讲云原生之前,我们先了解一下CNCF,即云原生计算基金会,2015年由谷歌牵头成立,基金会成员目前已有一百多企业与机构,包括亚马逊、微软。思科等巨头。目前CNCF所托管的应用已达14个,下图为其公布的...
  • 云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再...
  • 云原生架构之前(即传统飞云原生应用),底层平台负责向上提供运行资源,而应用需要满足业务需求和非业务需求。为了更好地使代码复用,通用性好的非业务需求的实现,往往会以类库和开发框架的方式提供。在SoA、 ...
  • 微服务体系和云原生架构的区别 参考链接:https://mp.weixin.qq.com/s/8W4VY1MeC3EG7SZNCUwXvA
  • 作为云计算的最新技术成果,云原生技术快速推动互联网和企业应用上云。...分析了云原生技术应用情况和存在的问题,提出面向云网融合的智能云原生架构,研究演进设计、架构部署方案和关键技术,提出云原生化推进举措。
  • 2、云程平台在云原生架构中的定位? 3、传统单体开发和云原生开发区别有哪些? 4、应用系统满足什么样的要求才是云原生应用?有没有衡量指标? 一、什么是云原生 官方定义:云原生技术有利于各组织在公有云、私有云...
  • 今天云原生的定义有众多版本,云原生架构的理解也不尽相同,阿里将根据自身的云原生技术、产品和上云实践,给出自己的理解。
  • 今天跟大家分享关于阿里云原生架构白皮书!文末附有网盘链接可获取全部 一、为什么需要云原生架构? 二、云原生架构的定义 1.云原生架构定义 2.云原生架构原则 3.主要架构模式 4.典型的云原生架构反模式 三、...
  • 云原生架构及设计原则

    千次阅读 2019-01-14 21:35:25
    云原生架构及设计原则 云原生(Cloud Native)的概念,由来自Pivotal的MattStine于2013年首次提出,被一直延续使用至今。这个概念是Matt Stine根据其多年的架构和咨询经验总结出来的一个思想集合,并得到了社区的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,006
精华内容 1,602
关键字:

云原生架构