云原生,不一样的组织有不一样的定义,但综合起来大体意思是:使用开源技术栈开发微服务架构的应用,并容器化部署在动态变化的云环境中,以充分利用云环境提供的一系列优点。因此,云原生架构指的是一个架构体系,而不仅是某种单一的应用架构,而云原生应用呢,是指充分利用云环境所提供优点的应用,这些应用从一开始的设计就要考虑到云环境的特色,生在云上,长在云上,是云计算环境的原住民。微信
云原生是云计算发展到必定阶段才提出的概念,和云计算服务推出的时间相比,大概后推了十年。这是能够理解的,由于在云计算发展的初期,云计算的各类功能都不是很成熟,你们都是摸索着前进。而当云计算趋于成熟的时候,愈来愈多的应用上云、云化,这时候就须要考虑怎样的使用方式才能最大发挥出云计算的价值,云原生的概念也就应运而生了。网络
说到云原生,首先绕不开的是Kubernetes项目,它是云原生计算基金会(CNCF)孵化后最早毕业的项目,是容器编排领域事实上的标准,全部的其它云原生项目,几乎都是围绕它而发展。Kubernetes不只仅编排和调度容器,并且抽象出了部署系统里面须要涉及的各类资源对象,上层只须要操做这些资源对象来完成部署,从而达到将底层异构的硬件基础设施标准化的目的。不一样的基础设施标准化后,各个厂商能够基于此构建本身的PaaS平台,这样也能提升应用在不一样PaaS平台中的移植性。从某种程度上来讲,你能够认为Kubernetes是一个分布式操做系统或者是一个云操做系统的内核,各家云厂商都基于一样的操做系统内核去进行扩展、定制,从而为用户提供具备差别化的操做系统界面。架构
那么咱们所说的云原生架构,就包括了这个分布式操做系统自己的架构,以及基于此操做系统进行的其它各类应用、内核扩展组件的架构。这里的内核组件,并非真正的Linux或Windows的系统内核,只是一种类比。由于咱们说Kubernetes是操做系统内核,那么围绕它提供服务的存储、网络组件,就能够当作是对这个内核的扩展组件。咱们基于这个操做系统开发的微服务应用,使用了底层存储、网络组件提供的服务,充分利用了云计算环境提供的优点,那么这种微服务应用架构也就符合了云原生架构所倡导的理念。分布式
对于要学习和了解云原生的技术同仁来讲,首先要了解云计算的基本概念和技术,而后根据实际须要,适当学习Kubernetes,以及围绕着Kubernetes而发展的其它一些项目,这样才会有一个全局的视角。对于一个架构师或一个企业的技术领导者来讲,须要思考怎样构建企业的基础架构和应用架构,那么全局的视角是很是重要的,所谓不谋全局者不足以谋一域,说的就是这个意思,还没体会到的朋友,随着你逐渐地成长,慢慢就体会到了。微服务
可能有人就质疑了,云原生架构,真的有那么神吗,真的值得去关注吗?我一贯喜欢化繁为简,因此这么说吧,云原生架构体系,应该是将来5年到10年的架构方向,而在这期间,Kubernetes会逐渐成为云操做系统,当90%的人都采用这种新的操做系统来跑应用的时候,对于那10%的人来讲,就比如如90%的同行都在使用Win7或Win10系统了,而你还在坚持使用XP甚至Dos系统!从这个角度来看,你是否是彷佛明白了点什么。学习
欢迎微信扫码关注【技术人成长】视频号,与你分享更多技术人成长的心法,咱们视频上见!云计算