浅谈云计算

1 篇文章 0 订阅
1 篇文章 0 订阅

 

    题外话

       云计算,顾名思义是在“云端”的计算能力,简单的理解为别人提供服务器来运行我的计算任务。从事云计算相关研发已接近三年,从开始的懵懵懂懂跟着前辈们去探索,到现在小有雏形的产品,自己对云计算也算是有些浅薄的认知。且不直接聊云计算本身,先从一个小故事开始,这个小故事对我入职本行业有些小小触动,工作中时不时会想起来斟酌一下。小故事发生在我硕士毕业,毕业时大家匆匆忙忙找工作,本人实验室是做大数据分析的,当时云计算在互联网企业已经是做的风生水起了,所以找工作也想找云计算方向的工作,当时投了某度互联网公司,一个上午进行了1面和2面,各1个半小时,面试官对我印象不错,就推荐3面boss关,boss看了简历一通虐,必然地问了云计算相关的问题,其中一个让我印象很深的问题就是,“你怎么理解云计算?”,卧槽这个概念我当然准备了啊,开始巴拉巴拉说了一通网上搜罗下来的概念,boss轻蔑一笑:“你这都是网上看到的套话虚概念,太肤浅!我给你讲讲什么是云计算,云计算的发源就是亚马逊公司当年有一批闲置机器,放着浪费,然后就想如何把这些机器让其他人用起来。。。”,当时面试完后回想了一下,这说的也没有什么深度啊,跟我说的网上看到的差不多呀,有什么牛逼的。参加工作几年后,回头看看这个故事发现跟面试官这段对话中有些对云计算一些通俗易懂的解释,这篇文章我会尽量用通俗的话来讲,下面正式开始今天的主题。

     诞生

       话说云计算,先从云计算的诞生开始,引用一句真理:万物存在即合理。云计算从诞生到现在十几年的时间,一直在互联网界保持着一定的热度,必然有他的道理,俗话说时势造英雄,那么云计算的时势是什么呢?以本人浅薄的认知,存在的道理即存在的意义和价值,换句话说就是他的存在能够为社会带来什么,我先说下我的观点吧,从利益角度,云计算的出现为资源充足的公司带来额外利益,为资源紧缺的公司带来便利;从技术角度,云计算让技术沉淀深厚的公司赋能技术基础薄弱的公司,使后者更专注于业务。可以用一个词来概括:互利共赢。

       接下来从供给和需求两方面来解释互利共赢,互利共赢指的是云计算供给侧和需求侧双方的共赢。首先是供给侧,从开头我的小故事里已经可以看到,云计算最开始的诞生的供给侧是类似亚马逊这样的互联网巨头公司,他们很有钱、服务器多啊,这么有经济头脑的公司怎么能让这些服务器闲置呢?于是他们开始想法设法的让这些闲置服务器活起来,让他们给公司带来更多的金钱。这就从供给侧有了云计算最初的萌芽,大公司凭借着多年的技术积累,开始了共享他们服务器的技术探索。其次是需求侧,前几年各行各业都在大谈数字化转型,简单地理解为如何将传统公司中各种数据转变为计算机中的数据,让计算机为我们服务,让更多的传统的线下业务转换到更为便捷的线上来,经过几年发展老百姓真真实实感受到了数字化转型带来的便利。软件开发行业的童鞋们都应该清楚,在互联网大潮刚起来的时候,传统行业的企业想数字化转型怎么做?他们需要购置一批机器,找几个开发软件的人,根据市场调研的需求转换为软件需求,开发软件上线服务,正常运行中,还需要运维主机硬件的team,这么一套流程对于新创的公司、技术较弱的公司想组建自己的团队是比较困难的,特别是对于全栈的技术积累更难。作为非公益性质的公司,他存在的根本目标就是利益,一个没有效益的公司恐怕走不长久,那么提效降本就是他们追求的目标。讲到这,其实供给侧和需求侧都在寻找一种东西,这个东西能让供给侧的限制服务器带来更多利益,让技术积累薄弱的公司更高效的实现数字化转型。此时云计算呼之欲出,这也是云计算所谓的“时势”。这种互利共赢的东西注定不会寂寞,现在百度搜索一下“云计算”,还是相当的火。

       早在2002年(笔者还是个玩泥巴的小学生),亚马逊就有了Aws服务,在2008年和2009年Google和微软相继加入云市场,微软推出Azure产品,成为当时Aws最大的竞争对手。当然,我们的马云爸爸眼光不会落后,阿里在2008年开始布局云计算和大数据战略,到今天为止,这些互联网巨头们已经在云计算市场深耕数十载,他们的技术革新与赋能为IT行业带来了巨大变化,正在更深层次地实现互利共赢。

   发展

       我来简单聊一下云计算的发展。其实普通老百姓最早也是最多接触到云计算带来的红利就是云盘(早期的网盘不是与计算产品这里不展开,感兴趣的童鞋可以探索)。简单来看,PC对大家来讲都不陌生,购置PC时都会聊到cpu型号、内存大小、硬盘大小等等,其实这也是云计算能为大家提供服务的根本来源,万物不离其本,简单的x86云服务器也是类似的构造。我们使用的云盘最后也要落到云服务器上的某个磁盘块上,我们跑的应用最后也要消耗某台云服务器的cpu时钟片和内存来得到想要的结果,只不过我们把原来本地的数据、应用放到了云厂商提供的服务器上。前面我提到,云计算的本质是云服务提供商将自己的闲置机器共享给大家使用,共享主机的本质是共享计算机的能力,这种能力包括CPU、内存、磁盘等,当然要共享就得有方法,这里的方法就是我们今天要谈的云计算的发展。云计算是个复杂的体系,为了大家好理解,我先从底层的资源共享开始谈起,底层资源共享将从虚拟机和容器两个方面来谈。

       先说虚拟机,假设我们现在有3个人要共享一台计算机,该怎们办呢?一个简单地处理方式就是分时共享,3个人轮流着用,你用一会儿我用一会儿,但是如果3个人都着急想同时使用怎么办呢?我们要解决的问题就是如何将一台计算机当作3台计算机使用的。虚拟化技术的产生就是解决这个问题的,通俗地讲,虚拟化基本的技术就是通过软件技术将一台计算机上的硬件进行虚拟,在这些虚拟的硬件资源上运行一个新的操作系统进程就形成了一个新的虚拟的计算机,我们称之为虚拟机。一台物理主机利用这种虚拟技术就可以虚拟出多个独立运行的计算机给大家使用。在云计算行业中,运用技术最多的就是kvm技术,该项技术已经被集成到linux操作系统内核中,与之并列的有名的技术还有ESX、XEN和Hyper-V(windows10就可以轻松创建虚拟机)等,具体的技术不再展开,大家可以自行搜罗。换个角度说,云服务器上的资源被虚拟以后可以同时在一台物理主机上运行多个虚拟机来同时为多个用户提供服务,这也是早先云计算提供服务的模式,这种模式也是大家最容易接受的,我花钱买了一台云计算机,在这台计算机上我可以安装我想运行的应用,完成我的业务。当前在公有云上还是占有很大比例,我们经常看到阿里云服务器、腾讯云服务器的促销活动就是该技术体现。

       再说容器,还是沿用前边3个人要共享某一台计算机的例子,作为非IT行业的普通人,大家使用计算机大部分是安装个软件,使用软件的能力,但是从“诞生”部分可以看到云计算发展可能更侧重于一些公司的数字化转型,即IT转型过程。这些公司的IT转型本质上是将公司的业务应用运行在云服务器上,此时“3个人”可以理解为要在同一台计算机上运行3个人的程序,本质需求是只要有种技术让同一台计算机上运行不同人的程序,并且相互隔离互不干扰就行。此时,容器技术就出现了。从名词上看,容器化就是就是为进程创建一个运行环境(称之为容器),程序在这个环境中运行,并且出不了这个环境。讲到这,有人可能有疑问,创建个虚拟机,在虚拟机中运行自己的程序不也行吗?当然可以了,这就要说下虚拟机技术和容器技术的区别了。这两种技术最大区别在于虚拟机“太重”了,容器化很轻量化。虚拟机技术会存在虚拟层,这个层就是硬件虚拟化层,创建一个虚拟机必然创建这么一个虚拟层,创建虚拟层本身就是比较耗资源的行为,而容器技术则是利用操作系统的命名空间隔离技术和资源控制技术来完成运行环境隔离的,这种环境的创建很轻量。由于虚拟机有自己的操作系统,所以不同虚拟机上的进程是独立内核运行;但是不同容器是运行在同一内核,从这点来讲,可以看到虚拟机技术要比容器技术更加安全。

                                                        

       无论是虚拟机还是容器,都是一种资源隔离共享物理服务器的技术,云计算当然不只是这些技术,云计算是要为企业数字化转型赋能的,大家试想,作为一个公司知识租用云服务商提供的一些虚拟机或者容器服务能完成自己的业务吗?答案是显然的,他们仍然需要组建软件开发团队在这些云资源上进行软件开发,距离成品的软件还有很远的路,但是唯一不同的是他们已经不用再组建一个硬件team来运维服务器了,看来也是省了一部分人力物力。虚拟机技术和容器化技术是偏于底层的资源共享隔离技术,在此之上,还有更多服务提供出来,赋能传统企业。为了更好理解云计算中提供的服务,在详细聊上层服务之前,先举个例子。假设现在与几个朋友想聚餐,准备租一个别墅开party,别墅老板现在提供多种服务供大家选择。第一种,老板提供厨房,但是厨房里只有基本的条件如水电天然气。第二种,老板提供厨房,除了提供厨具外还提供了新鲜的食材和烹饪的作料。第三种:老板提供餐饮服务,可以点餐。当然这三种不同的服务租赁费是不一样的。如果选择第一种,我们需要自行准备食材,准备一些厨具,然后进行加工。如果选择第二种,我们可以直接使用老板提供的厨具和食材,加上自己的创意制作美食。如果选用第三种,我们什么都不用准备,只要点餐就行。这个例子大家很好理解,但是他与云计算服务有什么关系呢?云计算服务在业界一般地分为IaaS、Paas和SaaS多个层次,这几个层次与这个生活例子很类似。假设现在我创建了一个创业公司,需要有IT支撑公司业务发展,此时我想用云计算来为公司IT业务提供服务,那么我面临的也将有多种选择。

       第一种,我只需要云服务商给我提供几台虚机,我自己组件一个软件开发团队进行软件开发。这层服务在云计算中称之为IaaS(Infrastructure as a Service),基础资源即服务,毋庸置疑,这里的基础资源就是应用运行的基础资源,即CPU、内存等。这种方式,我购买的是云服务提供商提供的虚拟机,一台虚拟机具备了基本的程序运行条件,我的软件团队需要在这几台虚机上自己搭建开软件开发、测试及生产运行的整个环境,然后进行应用开发。联想到刚才的小例子,对应选择了别墅老板提供的第一种服务。

       第二种,我希望云服务商除了提供基础的环境外,再为我提供一些编写的应用开发平台,在这个品台上开发完应用后直接运行。这层服务在云计算中称之为PaaS(Platform as a Service),平台即服务,这个平台指的是什么呢?一般地业界认为这个平台是帮助企业进行应用的开发、测试、集成、部署和运行的平台,该平台还有一些运行监控,便于实现应用扩缩容的特点。有了这层服务,我的软件团队可以在该平台上直接进行软件开发,只要关注业务需求,不用操心开发工具的搭建、运行环境和测试环境的一致性等问题。联想到刚才的小例子,对应选择了别墅老板提供的第二种服务。

       第三种,我想直接购买相关软件,这层服务在云计算中称之为SaaS(Software as a Service),我初创公司比较穷,不想组件软件团队了开发自己的业务了,在现有的软件上运行自己的业务,这些软件的运维什么的我都不想管,我只要用好这些软件就行。联想到刚才的小例子,对应选择了别墅老板提供的第三种服务。

       这三种服务自然各有利弊,由于文章长度限制,我不展开讨论了,相信大家可以很轻松的总结出来。说了这么多的云计算相关概念,我们重回到云计算的发展,云计算是在探探索中不断前进的,包括市场需求和技术两方面的发展。我相信一个好的软件是做出来的,是不断迭代出来的,谁都不能一下子看到软件最终的需求,一下子设计出来非常牛逼的架构,更何况云计算这么大的一个技术体系,它的需求在变化,技术也在不断地革新。从早期的云计算只提供IaaS基础资源服务,到后来的提供各种成品的软件(企业邮箱、云盘、云相册),这是市场需求的发展。支撑需求变化的,必然少不了技术的变革。在传统的虚拟机云时代,以KVM为代表的虚化技术遍地开花,按照用户需求可以在数分钟内准备一台可用的计算机。为了追求效率和隔离两个目标,linux的lxc容器化技术开始进入云计算的视野,lxc以极为轻便高效的虚拟技术赢得业界的认可,容器技术使得进程可以秒级启动,于是后续有了容器化业界OCI标准,OCI标准目前以runc使用最为广泛。为了更便于普通开发人员使用,类似于docker的工具开始出现,开发人员只需要在命令行上敲几条简单命令就可以轻松运行起来一个容器。云计算逐渐地不再单单提供基础资源服务,转而开始提供应用级别的隔离及管理服务,当前以kubernetes为代表的容器编排工具颇受业界青睐。

       作为技术人员,当然还是要聊一下技术架构,从IaaS和PaaS两个层面上来看有哪些技术架构形态存在。首先IaaS层,其实前面已经介绍了,最纯粹的IaaS产品还是虚拟机技术,比如开源的KVM虚拟机云,阿里的ECS弹性云服务器,阿里当然要比开源屌丝级别的技术更牛逼,ECS弹性裸金属服务器,基于神龙技术架构,通过“自研芯片”,自研神龙Hypervisor系统软件,以及重新定义服务器硬件架构等方式,打造了全球领先的深度融合物理机和虚拟机特性的创新型计算架构。对于容器来讲,一般不单独说IaaS层资源,因为容器是与应用紧密绑定的,也就是只有有进程运行才会有容器出现,一般地不会单独创建一个空的容器提供IaaS层资源(前边的讲述只是为了大家好理解)。由于这个特点,容器云的PaaS层和IaaS联系更加紧密,这也使我联想到了一些大数据的处理框架,比如Hadoop,在Hadoop中也会有分布式任务的调度,有调度一般会有资源,大名鼎鼎的yarn资源调度就是典型的代表。 容器的资源调度及编排系统要比yarn这种计算框架要复杂,在当前容器编排系统中更接近IaaS层资源调度的开源系统应该是apache的mesos了。在PaaS服务里,最流行的应当是容器云,目前技术形态使用较多的应是底层IaaS(虚拟机技术)+上层容器编排系统(kubernetes)组合来完成PaaS能力的输出,比如阿里的ACE。除此之外还存在别的形态,如mesos + marathon,mesos在底层作为数据中心资源管理平台,marathon作为上层业务编排调度平台,两者配合完成应用的全生命周期管理。无论是哪种形态,都将以多租户的形式向外提供PaaS层服务。

       看到这里,我希望你已经对云计算有了一定的了解,如果你是开发人员你一定听过云原生,接下来聊下云原生。

   云原生

       在前面的内容里,我一直都在谈云服务商在给传统企业赋能,这部分就来讲在利用云计算提供的服务到底能被赋予哪些技术红利。首先从云原生的概念说起,云原生应用可以简单地转述为原生适合在云上运行的应用,这种类型的应用具备哪些特点呢?其实关于这个问题,网上一搜一大堆,先来看下云原生基金CNCF给出的定义:

      Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.

       上边这段话在阐述云原生技术的特点,从我标注的几个词可以看到,云原生应用应具备以下几个特点:1. 可快速扩缩容  2.可被管理调度  3. 面向微服务。

       可快速扩缩容,运行在云上的应用应该具备根据工作负载快速水平扩缩业务实例的特点,该特点保证了高负载场景下应用的稳定性,以及低负载场景下减少资源浪费提高资源利用率。可被管理,是指应用可以被集中的业务应用调度系统管理,可管理应用的资源、状态,根据这些信息对应用进行治理,比如按要求调度创建删除等。面向微服务,这个特点是在说应用应该模块化拆分小服务,同时利用PaaS平台的配置管理服务发现等机制,解耦服务之间的依赖,轻量化功能模块更有助于应用的迭代。

       具备上述这些特点的云原生应用最终以什么样的形式落地呢?想必大家心里都有答案了,没错就是容器。容器技术以其轻便、封装隔离的特点,运行云原生应用具有天生的优势,所以也有人将容器化作为云原生应用的特点。将应用封装到容器中最大的两个好处在于:隔离性和易移植性。不同容器中的应用运行是相互看不到的,都有自己的rootfs,相互不干扰。一个容器封装了应用运行时需要的各种依赖,只需要平移镜像就能方便的在各个具有容器环境的主机上运行。如此容器化的应用很容易容器就解决了传统应用运行水平扩缩容带来的环境依赖问题,也解决了云环境上应用运行相互影响的问题。

       那么使用云计算PaaS平台,企业到底能享受到什么红利呢?这个红利我从研发时和运行时两个方面聊。先说研发过程,云计算的PaaS平台为软件的研发提供了一套CI/CD的能力,用户可以使用本地IDE或者云IDE进行代码编写,利用云平台的CI功能进行持续集成,自动化完成代码的规范性检查、编译、打包和测试,利用平台提供的CD能力完成应用的发布和线上部署运行。再说运行过程,一个传统的应用,按照功能模块进行拆分,将这些模块应用进行容器化,利用平台提供的微服务治理能力来解决模块之间相互发现相互依赖的问题;利用平台的集中应用调度器来控制应用运行,按照应用的要求保证应用永远在目标状态;通过平台的监控体系来实时可视化监控应用的运行状态。聊到这,大家对与计算带来的技术红利应该有了一定的了解,这也是云计算为技术薄弱和传统企业赋能的体现。

       说到云原生应用,不得不提Devops,相信很多人一提到Devops就会说敏捷开发,这种理解是有偏差的,Devops本质上是一种开发协作的思想、方法的统称,它主要的目标是用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。换句话说,改变传统的开发、运维和QA的模式,让这些部门的合作更加高效,更加敏捷。抛开Devops自身概念不说,这种文化的产生表面上是思维上的进步,其实背后推动其产生的还有更深层次的技术革新,正是有了云计算这些技术的革新,才加速了工程师们革新传统的瀑布式的软件开发管理过程,让软件研发的周期更短,让需求更快速体现到研发中,让研发更直接地接触到运行时,让运维更加了解应用,整个过程从需求到研发,到运行反馈整个过程变得高效。

     结束语

       啰啰嗦嗦聊了这么多云计算相关的话题,能看到最后的童鞋一定是对云计算感兴趣的,这篇文章我最大的目的是让大家整体了解云计算。接触一个新的领域或者学习一个新的技术,一定要先从宏观把握,云计算作为复杂的技术体系更应该如此,大家以后如果从事云计算相关工作,可能涉及的工作是在云计算的技术体系里很小一部分,不希望大家不识庐山真面目。文章的一些观点都是我浅薄的认知,可能会与大神们的观点有所出入,欢迎大家批评指正,相互学习,在此留下鄙人的邮箱hnhbwlp@163.com,欢迎骚扰。

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值