普宁市做网站,成都房地产上市公司有哪些,台州网约车最新政策,app推广注册招代理接前一篇文章#xff1a;软考 系统架构设计师系列知识点之云原生架构设计理论与实践#xff08;3#xff09; 所属章节#xff1a;
第14章. 云原生架构设计理论与实践 第2节 云原生架构内涵 14.2 云原生架构内涵
关于云原生的定义有众多版本#xff0c;对于云原生架构的…接前一篇文章软考 系统架构设计师系列知识点之云原生架构设计理论与实践3 所属章节
第14章. 云原生架构设计理论与实践 第2节 云原生架构内涵 14.2 云原生架构内涵
关于云原生的定义有众多版本对于云原生架构的理解也不尽相同。本节将根据广泛的云原生技术、产品和上云实践给出一般性的理解。
14.2.1 云原生架构定义
从技术的角度云原生架构是基于云原生技术的一组架构原则和设计模式的集合旨在将云应用中的非业务代码部分进行最大化的剥离从而让云设施接管应用中原有的大量非功能特性如弹性、韧性、安全、可观测性、灰度等使业务不再有非功能性业务中断困扰的同时具有轻量、敏捷、高度自动化的特点。由于云原生是面向“云”而设计的应用因此技术部分依赖于传统云计算的3层概念即基础设施即服务IaaS、平台即服务PaaS和软件即服务SaaS。
云原生的代码通常包括三部分业务代码、三方软件、处理非功能特性的代码。其中“业务代码”指实现业务逻辑的代码“三方软件”是业务代码中所依赖的所有三方库包括业务库和基础库“处理非功能性的代码”指实现高可用、安全、可观测性等非功能性能力的代码。三部分中只有业务代码是核心是对业务真正带来价值的另外两个部分都只能算附属物。但是随着软件规模的增大、业务模块规模变大、部署环境增多、分布式复杂性增强使得今天的软件构建变得越来越复杂对开发人员的技能要求也越来越高。云原生架构相比较传统架构进了一大步从业务代码中剥离大量非功能性特性不会是所有比如易用性还不能剥离到IaaS和PaaS中从而减少业务代码开发人员的技术关注范围通过云厂商的专业性提升应用的非功能性能力。
此外具备云原生架构的应用可以最大程度利用云服务和提升软件交付能力进一步加快软件开发。
1. 代码结构发生巨大变化
2. 非功能特性大量委托
任何应用都提供两类特性功能特性和非功能特性。功能特性是真正为业务带来价值的代码比如建立客户资料、处理订单、支付等。即使是一些通用的业务功能特性比如组织管理、业务字典管理、搜索等也是紧贴业务需求的非功能特性是没有给业务带来直接业务价值、但通常又是必不可少的特性比如高可用能力、容灾能力、安全特性、可运维性、易用性、可测试性、灰度发布能力等。
云计算虽然没有解决所有非功能性问题但确实有大量非功能性特别是分布式环境下复杂非功能性问题被云产品解决了。以大家最头疼的高可用为例云产品在多个层面为应用提供了解决方案。
虚拟机
当虚拟机检测到底层硬件发生异常时自动帮助应用做热迁移迁移后的应用不需重新启动而仍然具备对外服务的能力应用对整个迁移过程都不会有任何感知。
容器
有时应用所在的物理机是正常的只是应用自身的问题不如bug、资源耗尽等而无法正常对外提供服务。容器通过监控检查探测到进程状态异常从而实施异常节点的下线、新节点上线和生产流量的切换等操作整个过程自动完成而无需运维人员干预。
云服务
如果应用把“有状态”部分都交给了云服务如缓存、数据库、对象存储等加上全局对象的持有小型化或具备从磁盘快速重建能力由于云服务本身是具备极强的高可用能力的那么应用本身会变成更薄的“无状态”应用高可用故障带来的业务中断会降至分钟级如果应用是N-M的对等架构模式那么结合负载均衡产品可获得很强的高可用能力。
3. 高度自动化的软件交付
软件一旦开发完成需要在公司内外部各类环境中部署和交付以将软件价值交给最终客户。软件交付的困难在于开发环境到生产环境的差异公司环境到客户环境之间的差异以及软件交付和运维人员的技能差异填补这些差异的是一大堆安装手册、运维手册和培训文档。容器以一种标准的方式对软件打包容器及相关技术则帮助屏蔽不同环境之间的差异进而基于容器做标准化的软件交付。
对自动化交付而言还需要一种能够描述不同环境的工具让软件能够“理解”目标环境、交付内容、配置清单并通过代码去识别目标环境的差异根据交付内容以“面向终态”的方式完成软件的安装、配置、运行和变更。
基于云原生的自动化软件交付相比较当前的人工软件交付是一个巨大的进步。以微服务为例应用微服务化以后往往被部署到成千上万个结点上如果系统不具备高度的自动化能力任何一次新业务的上线都会带来极大的工作量挑战严重时还会导致业务变更超过上线窗口而不可用。 更多内容请看下回。