分布式系统架构与云原生—阿里云《云原生架构白皮书》导读

简介: 有幸作为阿里云MVP提前获得了阿里云云原生团队编写的《云原生架构白皮书》,希望通过自己对于云原生的理解为开发者提供一篇观后感或者是能够参考的博文

1 云原生与分布式系统架构的关系

1.1 云原生架构的定义

《云原生架构白皮书》中对于云原生架构的定义为“基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。”

1.2 分布式系统架构的定义

此处定义参考百度百科为“在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系统之上有一层软件中间件负责实现这个模型。”

1.3 云原生与分布式系统架构的关系

分布式架构的重点在于解决计算力的保障问题以及为了提高计算力并同时确保系统的可靠性、可用性和安全性而产生的诸如弹性伸缩、负载均衡、分布式存储等问题,其目标是在于构建一个分布式的安全可靠的计算力基础平台。通常来说,对于信息系统的架构方式的进化和改变即是伴随着接入数据和所提供的业务由少变多的过程,目前为止信息系统的架构经历了单机架构、集群架构、分布式架构、分布式多活数据中心架构几个阶段,同时伴随着业务系统架构一同演变的还有各种外围系统和存储系统,比如关系数据库的分库分表改造、从本地缓存过渡到分布式缓存等。要理清分布式架构和云原生的关系,先来归纳一下分布式架构与云之间的关系,云一般指的是一个提供资源的平台,云计算的本质是按需分配资源和弹性计算,而针对目前数据井喷并随着物联网应用的推进仍然接入量在呈指数上升的现状下,分布式架构是最能够满足构建一个合格的云平台所应具有特质的架构方式。云原生应用即专门为在云平台部署和运行而设计的应用,采用云原生的设计模式可以优化和改进传统应用模式,使应用更加适合在云平台上运行,因此云原生发展的本质需求来自于SAAS层面设计理念的改进,由于SAAS层的设计理念的改进而进一步从北向往南向推动了PAAS层特别是中间件的升级从而确保整个云平台的架构能够更好的服务于云原生架构的改变。因此,云原生和分布式架构的升级和迭代是一个滚动的过程,为了更好的发挥云平台的特点而有了云原生的需求和设计模式改变,而在这个过程中云原生也反过来促进了下层架构的升级。这个迭代的过程充分的反应了互联网或者说数据时代开发理念的特征,即滚动而非单向。

1.3 《云原生架构白皮书》章节导读

通过《云原生架构白皮书》的第1章和第2章内容可以充分的理解云原生的本质和云原生架构的特点,在阅读这两章的内容时推荐参考分布式架构的相关书籍,因为云原生和分布式架构密切相关,但是升级迭代的着力点又有所区别,所以能够结合在一起进行阅读是最好的。

2 云原生主要架构原则和技术分析

2.1 微服务和小系统服务

微服务架构,从宏观上来看,无非就是细化了服务拆分过程中的粒度,粒度越细,业务耦合越小,容错性就越好,并且后期扩展也会越容易。但是颗粒度过细,又会带来另外一些麻烦比如提升了维护成本、影响排查问题时的效率、业务开发人员很难梳理清楚服务之间的依赖关系等。因此《云原生架构白皮书》在微服务相关章节中又提到了小系统服务的概念,即是一个颗粒度的中间状态,其实核心就是一个服务拆分颗粒度的问题,白皮书中的第3章中有专门章节对于云原生微服务特别是微服务设计过程中的约束做了详细介绍,根本目的就是使微服务的发展处于一个受约束的状态,而不是因为有了微服务的理念就是服务拆分的颗粒度越细越好。

2.2 容器技术与云原生的关系

 


从白皮书中提供的对比图可以清楚的发现,云原生在代码方面,对于代码通常所包含的三部分:业务代码、三方软件和处理非功能特性的代码进行剥离,最终想实现的理想状态是把所有非功能性代码(即除业务代码部分)从SAAS层剥离到PAAS层和IAAS层中去,当然目前还是没有完全做到。剥离非功能代码仍然是一个设计模式理念的变化,而在这个理念的落地过程中容器技术成为了最好的工具。


在白皮书中这张对比图的基础上,根据其他一些公开资料能够更清晰的反映出容器技术应用之后,云原生架构所产生的变化。

 

单机架构


注:以上图片来源于《超大流量分布式系统架构解决方案:人人都是架构师2.0》高翔龙著 电子工业出版社

 

集群架构


注:以上图片来源于《超大流量分布式系统架构解决方案:人人都是架构师2.0》高翔龙著 电子工业出版社

 

服务化架构


注:以上图片来源于《超大流量分布式系统架构解决方案:人人都是架构师2.0》高翔龙著 电子工业出版社
在这种架构方式下以被广泛应用的Kubernetes为例,K8S中的大部分概念如Node(除了集群控制节点Master外K8S集群中的其他机器)、Pod(容器)等可以被看作资源对象,几乎所有资源对象都可以通过K8S提供的kubectl工具执行增、删、改、查等操作并将其保存在etcd中持久化存储,也就是说容器服务包括DOCKER、K8S等的全新设计模式天生就适合于分布式服务架构。当然相比集群架构来说,在开发运维自动化水平的要求上也自然较高以确保对于容器能够进行有序而全局化的管理防止系统出现不可控制的状态。

2.2 《云原生架构白皮书》章节导读

白皮书的第3章和第4章主要介绍的就是主要的云原生技术和阿里云原生架构设计的内容,其实核心的技术就是容器技术,在这个基础上包括微服务的理念、Serverless和Service Mesh等才能够被顺利的付诸于实践,而在容器技术中自动化水平又是一个重中之重,所以白皮书中数次提到的所有过程自动化原则就是能否发挥云原生技术优势的核心因素。

3 小结:云原生的未来发展方向

云原生毕竟是一个很大的概念,理论上所有从设计和开发之始就以部署在云上的设计理念都能够称为云原生,而微服务则是云原生在服务维度典型的表现形式,而容器服务即是能够将微服务成功落地的核心技术。Serverless是一个技术也可以从字面意思理解为未来的发展方向,核心理念仍然是将非业务部分的功能下沉至基础设施,从这点上来说,理想中的Serverless甚至不必包含目前K8S中的集群容量规划、安全维护和故障诊断等功能,将这些集中考虑为云基础设施所应该具有的功能,而功能模块只需考虑自身的业务,充分体现出的是轻量,通过事件驱动将轻量的服务和服务间以及轻量服务和云平台之间连接起来,整个体系相比集群化部署来说,与其说是一个系统,不如说是云基础设施基础上各类微服务形成的生态。

作者简介:朱祺 国际电气电子工程师协会IEEE高级会员、阿里云全球MVP

简介: 有幸作为阿里云MVP提前获得了阿里云云原生团队编写的《云原生架构白皮书》,希望通过自己对于云原生的理解为开发者提供一篇观后感或者是能够参考的博文

1 云原生与分布式系统架构的关系

1.1 云原生架构的定义

《云原生架构白皮书》中对于云原生架构的定义为“基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。”

1.2 分布式系统架构的定义

此处定义参考百度百科为“在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。系统中存在一个以全局的方式管理计算机资源的分布式操作系统。通常,对用户来说,分布式系统只有一个模型或范型。在操作系统之上有一层软件中间件负责实现这个模型。”

1.3 云原生与分布式系统架构的关系

分布式架构的重点在于解决计算力的保障问题以及为了提高计算力并同时确保系统的可靠性、可用性和安全性而产生的诸如弹性伸缩、负载均衡、分布式存储等问题,其目标是在于构建一个分布式的安全可靠的计算力基础平台。通常来说,对于信息系统的架构方式的进化和改变即是伴随着接入数据和所提供的业务由少变多的过程,目前为止信息系统的架构经历了单机架构、集群架构、分布式架构、分布式多活数据中心架构几个阶段,同时伴随着业务系统架构一同演变的还有各种外围系统和存储系统,比如关系数据库的分库分表改造、从本地缓存过渡到分布式缓存等。要理清分布式架构和云原生的关系,先来归纳一下分布式架构与云之间的关系,云一般指的是一个提供资源的平台,云计算的本质是按需分配资源和弹性计算,而针对目前数据井喷并随着物联网应用的推进仍然接入量在呈指数上升的现状下,分布式架构是最能够满足构建一个合格的云平台所应具有特质的架构方式。云原生应用即专门为在云平台部署和运行而设计的应用,采用云原生的设计模式可以优化和改进传统应用模式,使应用更加适合在云平台上运行,因此云原生发展的本质需求来自于SAAS层面设计理念的改进,由于SAAS层的设计理念的改进而进一步从北向往南向推动了PAAS层特别是中间件的升级从而确保整个云平台的架构能够更好的服务于云原生架构的改变。因此,云原生和分布式架构的升级和迭代是一个滚动的过程,为了更好的发挥云平台的特点而有了云原生的需求和设计模式改变,而在这个过程中云原生也反过来促进了下层架构的升级。这个迭代的过程充分的反应了互联网或者说数据时代开发理念的特征,即滚动而非单向。

1.3 《云原生架构白皮书》章节导读

通过《云原生架构白皮书》的第1章和第2章内容可以充分的理解云原生的本质和云原生架构的特点,在阅读这两章的内容时推荐参考分布式架构的相关书籍,因为云原生和分布式架构密切相关,但是升级迭代的着力点又有所区别,所以能够结合在一起进行阅读是最好的。

2 云原生主要架构原则和技术分析

2.1 微服务和小系统服务

微服务架构,从宏观上来看,无非就是细化了服务拆分过程中的粒度,粒度越细,业务耦合越小,容错性就越好,并且后期扩展也会越容易。但是颗粒度过细,又会带来另外一些麻烦比如提升了维护成本、影响排查问题时的效率、业务开发人员很难梳理清楚服务之间的依赖关系等。因此《云原生架构白皮书》在微服务相关章节中又提到了小系统服务的概念,即是一个颗粒度的中间状态,其实核心就是一个服务拆分颗粒度的问题,白皮书中的第3章中有专门章节对于云原生微服务特别是微服务设计过程中的约束做了详细介绍,根本目的就是使微服务的发展处于一个受约束的状态,而不是因为有了微服务的理念就是服务拆分的颗粒度越细越好。

2.2 容器技术与云原生的关系

 


从白皮书中提供的对比图可以清楚的发现,云原生在代码方面,对于代码通常所包含的三部分:业务代码、三方软件和处理非功能特性的代码进行剥离,最终想实现的理想状态是把所有非功能性代码(即除业务代码部分)从SAAS层剥离到PAAS层和IAAS层中去,当然目前还是没有完全做到。剥离非功能代码仍然是一个设计模式理念的变化,而在这个理念的落地过程中容器技术成为了最好的工具。


在白皮书中这张对比图的基础上,根据其他一些公开资料能够更清晰的反映出容器技术应用之后,云原生架构所产生的变化。

 

单机架构


注:以上图片来源于《超大流量分布式系统架构解决方案:人人都是架构师2.0》高翔龙著 电子工业出版社

 

集群架构


注:以上图片来源于《超大流量分布式系统架构解决方案:人人都是架构师2.0》高翔龙著 电子工业出版社

 

服务化架构


注:以上图片来源于《超大流量分布式系统架构解决方案:人人都是架构师2.0》高翔龙著 电子工业出版社
在这种架构方式下以被广泛应用的Kubernetes为例,K8S中的大部分概念如Node(除了集群控制节点Master外K8S集群中的其他机器)、Pod(容器)等可以被看作资源对象,几乎所有资源对象都可以通过K8S提供的kubectl工具执行增、删、改、查等操作并将其保存在etcd中持久化存储,也就是说容器服务包括DOCKER、K8S等的全新设计模式天生就适合于分布式服务架构。当然相比集群架构来说,在开发运维自动化水平的要求上也自然较高以确保对于容器能够进行有序而全局化的管理防止系统出现不可控制的状态。

2.2 《云原生架构白皮书》章节导读

白皮书的第3章和第4章主要介绍的就是主要的云原生技术和阿里云原生架构设计的内容,其实核心的技术就是容器技术,在这个基础上包括微服务的理念、Serverless和Service Mesh等才能够被顺利的付诸于实践,而在容器技术中自动化水平又是一个重中之重,所以白皮书中数次提到的所有过程自动化原则就是能否发挥云原生技术优势的核心因素。

3 小结:云原生的未来发展方向

云原生毕竟是一个很大的概念,理论上所有从设计和开发之始就以部署在云上的设计理念都能够称为云原生,而微服务则是云原生在服务维度典型的表现形式,而容器服务即是能够将微服务成功落地的核心技术。Serverless是一个技术也可以从字面意思理解为未来的发展方向,核心理念仍然是将非业务部分的功能下沉至基础设施,从这点上来说,理想中的Serverless甚至不必包含目前K8S中的集群容量规划、安全维护和故障诊断等功能,将这些集中考虑为云基础设施所应该具有的功能,而功能模块只需考虑自身的业务,充分体现出的是轻量,通过事件驱动将轻量的服务和服务间以及轻量服务和云平台之间连接起来,整个体系相比集群化部署来说,与其说是一个系统,不如说是云基础设施基础上各类微服务形成的生态。

作者简介:朱祺 国际电气电子工程师协会IEEE高级会员、阿里云全球MVP

原文链接:https://developer.aliyun.com/article/768344?utm_content=g_1000162426

本文为阿里云原创内容,未经允许不得转载。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纵行科技携手意法半导体推ZETA/LoRa双模智能路由,加速LPWAN 2.0泛在物联布局!

物联网在接入各行业的过程中使用了各种各样的行业标准和协议,联盟的形式可以加速聚拢物联网产业链生态,促进物联网应用更好更快地落地,因此成为物联网领域内厂商们欢迎的合作共赢方式。 ZETA就是众多物联网联盟中的一个,这是由基于…

阿里云飞天AI加速器+Serverless容器,帮助图森未来提升资源利用率

简介: 今年年初,图森未来的无人驾驶卡车还上了“钢铁侠”的扮演者小罗伯特唐尼主持的科技聚集剧集《The Age of A.I.》(《AI时代》),在剧中不仅顺利完成无人驾驶的行驶任务,还与围追堵截的摄像车“斗智斗勇…

应用中心最佳实践之——使用应用组完成多集群一键部署

简介: 在现实中的应用交付实践中,常常需要将同一应用同时部署到多个集群中。应用中心支持将同一个数据源定义的应用,通过应用组的形式一键部署到多个集群中,实现统一管理。 作者:指北 背景 在现实中的应用交付实践中…

vue cil安装axios

Vue cil 安装axios1、安装axioscnpm install axios 如果没有安装cnpm的可能安装不成功,这里列出安装cnpm,使用淘宝镜像。 npm install -g cnpm --registryhttps://registry.npm.taobao.org2、使用方法 2.1、首先在main.js配 import axios from "…

从程序员到上市公司合伙人,怎么少踩坑?

‍‍‍‍科技发展日新月异,对于程序员来说,不断地自我修炼必须提上日程。某种程度上,阅读是一条通往成功的捷径。当你被技术难题卡住时,去读书吧,去书里寻找答案当你感到人生困顿迷茫时,去读书吧&#xff0…

读完《云原生架构白皮书》,我们来谈谈开放应用模型(OAM)

简介: 受阿里云邀请,我有幸在《云原生架构白皮书》发布前试读了该书,本文结合白皮书内容,谈谈开放应用模型(OAM) 前言 7月21日阿里云发布了《云原生架构白皮书》,该书由阿里云众多技术专家共同…

抖音实战~手机号密码一键注册登录流程(限制手机终端登录)

文章目录一、手机号密码二、前端2.1. 点击登陆流程2.2. 点击登录源码三、后端登录3.1. 登录流程图3.2. 流程简述3.3. 手机号验证码登录流程一、手机号密码 二、前端 2.1. 点击登陆流程 1.先校验手机号是否合法?不合法,则提示“请输入正确的手机号”2.再…

揭秘!信息检索技术高端玩法

《SIGIR 顶会论文解读》重磅发布 由 7 位阿里巴巴技术专家精心打造,内容覆盖推荐系统 、成交转化模型 、 回音室效应 、 全空间多任务转化率预估建模 、 DeepMatch 召回模型 、 跨领域冷启动用户推荐网络 、 表示学习模型等信息检索领域新技术。 精彩内容抢先看 1、…

VSCODE远程连接服务器,远程开发。

在开发中有时需要远程开发,需要远程连接服务器,所以需要学习一下如何远程连接。 1、安装vscode的插件:Remote-ssh 需要看清楚,是这个插件不要安装错了 2、安装好后打开命令行,快捷键 CtrlShiftp,输入ssh查…

【技术史】数据中台的前世今生

数据中台自14年至今,已然成为了2B、2G业务最热门的话题,政府机构、企事业单位、互联网公司等进行着数字化、数据化、智能化转型。市场普遍认为,阿里巴巴将自身数据中台建设能力对外赋能是拉起本轮数据中台浪潮的根本所在。 本文将带你全面了…

抖音实战~密码找回

文章目录1. 密码找回流程图2. 前端源码3. 后端1. 密码找回流程图 2. 前端源码 /*** 密码找回*/updatePassword() {var me this;var mobile me.mobile;// 提交前,手机号校验var reg /^1[0-9]{10,10}$/;if (!mobile || !reg.test(mobile)) {uni.showToast({title: …

排队五小时才能吃上一口的Popeyes,要借阿里云数据中台10年内开足1500家门店

几个月前,还没多少国人了解美国炸鸡品牌Popeyes,但现在,Popeyes却成为上海滩最火爆的网红店:5月在上海市淮海中路开出首家门店当天,早上7点半,第一条队伍就已排出了半条街。 面对良好的开局,Po…

干货!Redis集群工作原理解析

作者 | 张小盼头图 | 下载于东方IC出品 | CSDN云计算(ID:CSDNcloud)Redis 缓存因其访问性能高、可靠性更高,作为缓存工具在各大互联网公司中广泛使用。今天我们就来看看Redis Cluster 的实现原理。集群建立Redis集群是由多个Redis…

让小程序在自有App中启动的技术来了:mPaaS小程序架构深度解析

本文将围绕支付宝在移动端架构的演进逐步展开,分享我们在“App 动态性”“提升研发效率”等方面所做的思考和具体实践。同时,针对 mPaaS 小程序能力的开放,也将展开介绍我们如何实现“小程序代码只写一次,多端投放”,而…

抖音实战~分布式文件存储~SpringBoot集成MinIO

文章目录1. 引入依赖2. yml配置3. 客户端配置4. 工具类5. 需求实战6. 效果图1. 引入依赖 <!-- MinIO --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.1</version></dependency>…

笑联 x mPaaS | 12 个模块,全面小程序化,如何打造真正的一次开发复用多端?

这篇故事围绕着一款 App 基于 mPaaS 小程序进行改造娓娓展开。 作为国内校园服务场景最丰富的平台&#xff0c;笑联 App 已覆盖国内 130 所高校&#xff0c;服务近百万高校学生。 截止目前&#xff0c;笑联 App 内的 12 个业务模块目前已顺利实现小程序化。不仅获得媲美原生应用…

万字长文梳理:从0开始,步入Service Mesh微服务架构的世界

来源 | 无敌码农责编 |贾凯强头图 | 下载于视觉中国新一代微服务架构——Service Mesh已经引发了诸多关注。在微服务架构盛行的今天&#xff0c;像Spring Cloud这样的微服务框架大家已然耳熟能详 &#xff0c;因为大部分互联网公司都在此基础上构建过第一代微服务体系&#xff…

开放下载!《大促背后的前端核心业务实践》

《大促背后的前端核心业务实践》电子书重磅发布! 2020年618大促已经过去&#xff0c;作为淘系每年重要的大促活动&#xff0c;淘系前端在其中扮演着什么样的角色&#xff0c;如何保证大促的平稳进行&#xff1f;又在其中应用了哪些新技术&#xff1f;淘系技术联合阿里云开发者…

33个常见问题!超全Windows排查手册

无论你是新手还是老手&#xff0c;你的Windows系统都会遇到不容易诊断的问题。而当发生这种情况时&#xff0c;你会怎么做&#xff1f;希望本书可以在系统出现问题但是又不知道到底发生了什么以及问题出现在哪里时&#xff0c;为大家提供解决思路和方法&#xff0c;高效的解决问…

上市之后,青云存储平台QingStor也要“进军”云原生

作者 | 陈利鑫头图 | 下载于东方IC出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;3 月 16 日&#xff0c;北京青云科技股份有限公司&#xff08;以下简称“青云科技”&#xff09;登录科创板&#xff0c;昔日里频频出现在公众视野的云计算企业&#xff0c;…