云原生概要介绍-云原生架构模式分析

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
性能测试 PTS,5000VUM额度
简介: 云原生概要介绍-云原生架构模式分析

开发者学习笔记【阿里云云原生助理工程师认证(ACA)课程: 云原生概要介绍-云原生架构模式分析】

课程地址:https://edu.aliyun.com/course/3112075/lesson/19006


云原生概要介绍-云原生架构模式分析

 

内容介绍:

一、企业架构演进

二、云原生架构与传统架构对比

三、云原生架构的几种典型模式

四、典型的云原生架构反模式

 

一、企业架构演进

企业的应用软件服务架构是随着 IT 技术的发展层层迭代演进而来的,由最早的单体架构发展到现在的能够满足大型互联网公司每天上亿用户的请求和实施数据处理的架构模式。

单体架构是将所有的软件模块打包在一个项目中,集中部署在一个机器上,很多的模块都挤在一个大的模块上。如果服务器一旦出现问题,就意味着软件无法提供对外服务了。

对于开发者而言,那么多的模块,简单粗暴地挤在一个应用上,这使得应用的二次开发面临着巨大的挑战。随着系统模块的不断的增多,系统变得庞大,我们需要把一些模块独立出来,组成新的服务,并逐步分解成多个系统,形成了垂直式的企业 IT 架构。

垂直架构本身是有一定的模块化设计的,并且能够提供负载均衡,能够在底层实现一些数据的交互。但是,随之垂直服务的不断增加,在垂直架构下,服务与服务之间的交互和管控又迎来了新的问题。这时,又出现了一种新的架构模式,叫做 SOA 架构。

SOA 架构是一种面向服务的架构,它将应用程序不同的功能模块进行拆分,通过这些服务之间的定义良好的接口和通信协议,使得服务与服务之间互相协作起来。接口是采用中立的方式进行定义的,它的实现不依赖于平台、操作系统和编程语言。

SOA 架构的服务管控是将所有的服务提供者注册到服务中心,通过服务总线进行服务的订阅。随着企业业务的快速发展,SOA 架构迎来了新的难题。因为服务越来越多,导致企业 ESB 的压力会越来越大,致使其无法有效地进行实施数据的传输和送达。这样,企业的数据服务总线 ESB 就成为整个系统的瓶颈,SOA 架构对于企业的高速发展也显得分身乏术。微服务的架构到来使得这个问题迎刃而解。

微服务是一个能够独立发布的应用服务,因此可以作为独立组件进行升级,或者恢复度的发布,进而实现主件级别的复用。当某个微服务进行代码的升级时,对基于微服务架构开发整个大的应用的影响是比较小的。每个微服务都可以有专业的组织来单独的完成,每个微服务之间可以采用不同的技术栈、不同的编程语言去实现。相比较于 SOA 架构中的服务,微服务架构中的服务颗粒度将更加细致。

微服务的功能是比较独立的,比如用户注册、用户订单、用户订购,这些业务处理的微服务是可以独立部署的。微服务的自治是松散管理的,它不像 SOA 架构是通过企业数据总线 ESB 来集中的注册和管理。随着敏捷开发、虚拟化技术、容器技术及 DevOps 理论的实践,微服务架构得到了业界逐步的重视和广泛的应用。微服务架构也逐步成为云原生架构的典型架构。

 

image.png

 

二、云原生架构与传统架构的对比

云原生架构与传统的软件架构相比,传统的软件架构,用户不仅仅需要关注基础设施的能力及其运维,还需要采购及维护大量第三方软件以及非功能性能力。对开发人员来说,不仅增加了软件开发的负担,还降低了软件开发的效率。

云原生架构是基于云原生六大核心技术的一组架构原则和设计模式,通过借助云原生 IaaS 和 PaaS 的能力将云应用中的非业务代码部分进行最大化剥离,从而让云设施的接管应用中原有的大量非功能性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断的困扰的同时,具备轻量、敏捷、高度自动化的特点。

总结来说,云原生架构相比于传统软件架构,向前迈了一大步。从业务代码中剥离了大量非功能性特性到系统底层的 IaaS 和 PaaS 中,从而使业务开发人员更聚焦在业务相关的技术实现上。通过云产商的专业化的运维来提升整个应用的底层非功能性的能力。这样,提升了企业的软件开发效率,降低了企业软件开发的成本和风险。这就是云原生架构所带来的新的软件的开发模式。

 

image.png

 

三、云原生架构的几种典型模式

云原生其实很复杂,云原生的复杂来源于它想容纳更多复杂的事物和结构,形成积累与沉淀,其本质是连接数据,将杂乱无序的数据处理为简洁有序的信息、知识乃至于智慧。但从另一个方面而言,云原生其实又很简单。因为它给终端用户带来无穷无尽便利和丰富的功能的同时,无需他们改制。复杂和简单是相对的,底层越复杂,上层就越简单。

简单的了解一下这几种云原生架构的典型模式:

第一种模式,是服务化架构模式。服务化架构是云原生时代构建云原生应用的标准架构模式,要求以应用模块为颗粒度划分一个软件,以接口方式定义彼此的业务关系,以标准协议确保服务之间的彼此的互联互通。服务化架构的典型模式就是微服务化的架构模式。

第二种是 Mesh 化架构。Mesh 化架构是把中间件(比如,ITC、缓存、业务消息等)从业务中进行剥离,让中间件 SDK 与业务代码进一步的接通。从而使得中间件的升级对业务的进程没有任何的影响,让中间件对于业务的应用而言是透明的。

第三种是 Serverless 架构,它强调的是无服务,他将系统的底层都抽象出来,定义为新的服务,Serverless 将部署从运维中收走,使开发者不用关心应用在哪里运行,更不用关心装什么操作系统,怎样配置网络等等问题。从业务抽象上来看,当业务流量到来或业务实现发生时,云会自动对系统进行扩容,以应对业务涌入的高峰流量。当处理完成之后,流量平稳过渡,业务流量又恢复到一个较低水平,这时,云会自动的关闭或者调度相关的业务进程,对系统实现缩容,降低系统的运行成本,等待下一次的出发。这就把业务的整个的运行都委托给云进行管理和控制。

第四种叫做存储计算分离模式,基于开发理论,对于需要数据存储的有状态的应用而言,如何获取 C (数据的一致性)与 A (系统的可用性)以及 P (分区容错性)这三者的最佳平衡状态,这是一门技术,也是一门艺术。在云环境中为了获得更强的系统的弹性,实现系统的高可用,推荐把各类状态的数据结构化、分节化的持久化的数据都采用云存储的形式来进行保存,从而实现存储与计算的分离。

第五,是分布式事务模式。微服务的的模式提倡每一个服务使用私有的数据源,而不是像单体共享数据源,但往往大颗粒度的业务需要访问多个微服务,必然带来分布式的事务问题。如果处理不好,将会带来数据不一致的现象。架构师需要根据不同的场景选择合适的分布式的事务模式,更好的解决底层分布式的存储和数据源的问题。还有一种是可观测架构,它包括日志监控、链路追踪、监控指标三个方面。其中日志监控能够提供多个级别的详细的信息跟踪,由应用的开发者主动提供。链路请求提供一个从前端到后端的完整的调用链路的跟踪,对于分布式的场景尤为重要。监控指标则提供对整个系统量化的多维度的度量,形成了可观测的架构模式。综上所述,这就是云原生架构中的几种典型的架构模式。

 

image.png

 

四、典型的云原生架构反模式

第一、是庞大的单体应用。按原有的方式进行分发,把它部署到云原生容器里,容器进行编排,但是应用本身还是一个庞大的单体应用,带来的最大问题就是缺乏依赖的隔离,包括代码耦合带来了责任不清、模块间的接口缺乏治理,从而带来变更的影响扩散,不同模块间的开发进度和发布时间难以协调。一个子模块的不稳定会导致整个模块的都变慢。扩容时,只能整体扩容,不能对到达瓶颈的模块单独扩容,从而不能够实现更为灵活的资源调度的模式。

第二、是把单体硬拆为微服务。服务的拆分需要适度,过分服务化拆分反而会导致新架构与组织的能力不匹配,架构升级得不到技术有效的支撑。典型的例子有小规模软件的拆分、服务之间强依赖关系数据的拆分以及分布式调用导致性能的下降。针对这些问题,在课程后面的部分我们会学习如何进行微服务的设计和微服务的拆分。

第三、是缺乏自动化能力的微服务。当软件功能的服务进一步变大后,自动化缺失会带来更大的危害。由于接口的增多会带来测试用例的增加,更多的软件模块等待测试和发布。如果缺乏自动化能力的支撑就会造成软件发布的时间变长,在多个环境发布或者异地发布时更需要专家来进行处理环境差异所带来的影响。这就是缺乏自动化服务的微服务的弊端。在课程的后面,DevOps 部分会给大家做详细的讲解。

 

image.png

 

五、回顾小结

云原生的技术生态以及 CNCF 是目前云计算领域最成功的开源基金会之一,是 Kubernetes 等知名开源项目的托管基金会。

CNCF 把云原生技术分为六层。云原生的技术众多,在众多的技术里,我们最需要掌握的是云原生的六大核心技术,包括容器技术、容器编排架构、云原生微服务架构、云原生中间件、Serverless 无服务架构、DevOps 开发运维一体化。

第三部分,我们了解了云原生机构模式,云原生架构相比传统架构前进进了一大步,将业务代码中的大量非功能性特性剥离到 IaaS 和 PaaS 中,从而减少业务代码开发人员技术关注范围,开发人员关注代码,底层通过专业性平台提升用用的服务能力。

相关文章
|
17天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
15天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
17天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
18天前
|
消息中间件 存储 Cloud Native
云原生架构下的数据一致性挑战与应对策略####
本文探讨了在云原生环境中,面对微服务架构的广泛应用,数据一致性问题成为系统设计的核心挑战之一。通过分析云原生环境的特点,阐述了数据不一致性的常见场景及其对业务的影响,并深入讨论了解决这些问题的策略,包括采用分布式事务、事件驱动架构、补偿机制以及利用云平台提供的托管服务等。文章旨在为开发者提供一套系统性的解决方案框架,以应对在动态、分布式的云原生应用中保持数据一致性的复杂性。 ####
|
25天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
12天前
|
Cloud Native 云计算 Docker
云原生技术的崛起:从容器化到微服务架构
云原生技术的崛起:从容器化到微服务架构
|
15天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
42 5
|
16天前
|
Kubernetes 负载均衡 Cloud Native
云原生架构下的微服务治理策略
随着云原生技术的不断成熟,微服务架构已成为现代应用开发的主流选择。本文探讨了在云原生环境下实施微服务治理的策略和方法,重点分析了服务发现、负载均衡、故障恢复和配置管理等关键技术点,以及如何利用Kubernetes等容器编排工具来优化微服务的部署和管理。文章旨在为开发者提供一套实用的微服务治理框架,帮助其在复杂的云环境中构建高效、可靠的分布式系统。
32 5
|
16天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型浪潮中,企业纷纷拥抱云计算,而云原生架构作为其核心技术支撑,正引领着一场深刻的技术变革。本文聚焦于云原生环境下微服务架构的治理策略与实践,探讨如何通过精细化的服务管理、动态的流量调度、高效的故障恢复机制以及持续的监控优化,构建弹性、可靠且易于维护的分布式系统。我们将深入剖析微服务治理的核心要素,结合具体案例,揭示其在提升系统稳定性、扩展性和敏捷性方面的关键作用,为读者提供一套切实可行的云原生微服务治理指南。 ####
|
16天前
|
消息中间件 缓存 Cloud Native
云原生架构下的性能优化实践与挑战####
随着企业数字化转型的加速,云原生架构以其高度解耦、弹性伸缩和快速迭代的特性,成为现代软件开发的首选模式。本文深入探讨了云原生环境下性能优化的关键策略与面临的主要挑战,通过案例分析,揭示了如何有效利用容器化、微服务、动态调度等技术手段提升应用性能,同时指出了在复杂云环境中确保系统稳定性和高效性的难题,为开发者和架构师提供了实战指南。 ####
29 3