草庐IT

【云原生系列】第一讲:什么是云计算

颜淡慕潇 2023-04-20 原文

序言 

文章颜色说明:

一、为什么要有云计算

1.1 背景

1.1.1 硬件设备复杂程度越来越高

1.1.2 运维复杂程度越来越高

2 云计算定义

2.1 常规定义:

2.2 (NIST)定义:

3 云计算要素

3.1 资源池

3.2 云计算平台

3.3 部署模式

 3.3.1 公有云

 3.3.2 私有云

3.3.3 混合云

3.3.4 社区云

3.3.5 服务类型


序言 

最近看了云计算很多内容,决定学习整理下,于是有了这篇文章

这篇文章概念偏多,希望能帮助读者对云计算相关技术以及发展有一个初步的认识。

文章颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

一、为什么要有云计算

1.1 背景

1.1.1 硬件设备复杂程度越来越高

传统的应用正在变得越来越复杂,需要做到:

  • 支持更多的用户
  • 更强的计算能力
  • 更加稳定安全

为了支撑这些不断增长的需求,企业不得不去购买各类硬件设备(服务器,存储,带宽等等)和软件(数据库,中间件等等),随着硬件数量的增加,管理的复杂度也越来越高。

1.1.2 运维复杂程度越来越高

运维工作包括

  • 安装
  • 配置
  • 测试
  • 运行
  • 升级
  • 保证系统的安全

随着服务器硬件越来越多,运维工作也越来越复杂,因此企业这部分费用会随着应用的数量或规模的增加而不断提高

这种对于中小规模的企业,甚至个人创业者来说,软件产品的运维成本难以承受

于是云计算应运而生,也可以说云计算是计算机软件发展的必经道路。

现在,云计算被视为计算机网络领域的一次革命,因为它的出现,社会的工作方式和商业模式也在发生巨大的改变。 

将应用部署到云端后,可以不必再关注硬件和软件问题它们会由云服务提供商的专业团队去解决。

只需要按照需要来支付相应的费用,而关于软件的更新,资源的按需扩展都能自动完成。

总之,云计算解决的是成千上万台计算机或软件组件的部署和协作问题。

所有云计算所涉及的技术都是成熟技术,云计算的关注点是如何在实现大规模部署下的综合管理

2 云计算定义

2.1 常规定义:

云计算(cloud computing)

  1. 分布式分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,
  2. 合并&反馈:通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。

云计算早期

  • 分布式计算:简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算

通过分布式计算,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。 

现阶段

  1. 计算:分布式计算、效用计算、负载均衡、并行计算、
  2. 存储:网络存储、热备份冗杂和虚拟化等

云计算是计算机技术混合演进并跃升的结果

2.2 (NIST)定义:

云计算是一种模型,它可以实现随时随地、便捷地、随需应变地从可配置计算资源共享池中获取所需的资源(例如,网络、服务器、存储、应用、及服务),资源能够快速供应并释放,使管理资源的工作量和与服务提供商的交互减小到最低限度。

从上述描述,可以提炼出:

  1. 广泛的网络接入
  2. 快速弹性伸缩
  3. 按需自助服务

云计算=云+计算:

  1. 云:网络
  2. 计算:算力、CPU、存储。(包括功能、资源、储存)

可以理解为,云计算是互联网和计算发展的必然产物

如果离开了计算、互联网,都不算是云计算。

3 云计算要素

云计算要素有:

  1. 资源池
  2. 云计算平台
  3. 部署模式
  4. 服务类型

3.1 资源池

资源池是云计算的核心

  • 自动管理:通过专门的软件实现和管理,无须人参与。
  • 自主申请:用户可以动态的申请资源以支持各种运用程序运转,无须为繁琐的细节所烦恼,能够更加专注于自己的业务,有利于提高效率,降低成本和技术创新。
  • 动态扩展:规模可以动态扩展,处理能力可以动态回收重用。

3.2 云计算平台

云计算平台需要将以下内容整合起来:

  • 服务器设备(CPU、内存、磁盘)
  • 存储设备(磁盘阵列)
  • 网络设备(路由器、交换机、负载均衡)
  • 其他硬件资源
  • 软件资源(操作系统、集成开发环境IDE、数据库、web服务器、中间件、缓存等)

通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的系统,即为云计算平台。

用户通过云计算平台,能够快速申请、配置、发布、使用、释放和管理资源

3.3 部署模式

部署模式有四种:

  • 公有云(Public Cloud)

  • 私有云(Private Cloud)

  • 混合云(Hybrid Cloud)

  • 社区云(Community Cloud)

 3.3.1 公有云

由云服务提供商拥有和管理,通过互联网向企业或个人提供计算资源

业界有名的公有云厂商有:Amazon AWS,Microsoft Azure、Google Cloud、阿里云、腾讯云、百度云等。

公有云关注盈利模式,具有强大的可扩展性和较好的规模共享经济性。

但是,所有定制者共享相同的基础设施,配置有限,安全保护和可用性差。公有云的优势在于它们可能比企业云更大,因此可以根据需要无缝扩展。

如下图: 

 3.3.2 私有云

单个组织/企业专用的云服务,而无需与其他组织共享资源

私有云可以在内部部署,也可以由第三方云服务提供商托管

  • 内部部署内部部署私有云(也称为内部云)部署在企业数据中心的防火墙内。该模型提供了更加标准化的流程和保护,但在大小和可扩展性方面受到限制。IT部门还需要为物理资源承担资金和运营成本。这最适合需要对基础设施和安全性进行全面控制和可配置性的应用。
  • 外部托管这种类型的私有云由外部托管的云服务商提供,其中云服务商搭建专有云环境并充分保证隐私。这最适合哪些由于共享物理资源而不喜欢公有云的企业。

私有云关注信息安全,客户拥有基础设施,并可以控制在基础设施上部署应用程序。

内部用户通过内部网络或专有网络使用服务,

私有云的特点:

  • 使用体验较好
  • 安全性较高
  • 投资门槛高
  • 规模有限

当出现突发性需求时,私有云因规模有限,将难以快速地有效扩展。

业界有名的私有云厂商有:Vmware、深信服、华为云和青云等。

3.3.3 混合云

同时使用公有云和私有云。

  • 私有:公司将敏感数据保留私有云中(安全性)
  • 共有:公有云来运行应用程序(低成本)

是近年来云计算的主要模式和发展方向。

混合云特点

  • 性价比加高
  • 安全

1. 在公有云中创建网络隔离的专有云,可以完全控制该专有云的网络配置

2. 通过VPN/专线连接到内部私有云,实现公有云与私有云的连接

3.3.4 社区云

特定组织或行业共享使用的云计算服务方案

社区云是由几个具有类似关注点(eg:安全性、隐私性和合规性)的多个组织共享

金融机构、政府组织或医疗等特殊客户群体,需要满足其一定的行业规范和数据安全标准。

社区云是企业的一种过渡阶段发展的产物。

面向一个行业(行业云)或一个地理区域范围内(园区云)提供服务。

3.3.5 服务类型

提供服务类型的不同分成:

  1. 基础设施即服务(IaaS)
  2. 平台即服务(PaaS)
  3. 软件即服务(SaaS)
  4. 数据即服务(DaaS)
  5. SDN即服务(SDNaaS)
  6. 容器即服务(CaaS)
  7. 功能即服务(FaaS)
  8. 身份即服务(IDaaS)

1,2,3 是最常见三种服务。后面几种,是细分之后的类型

1.基础设施即服务(IaaS)

IaaS 指的是把

  • 计算基础
  • 服务器
  • 网络
  • 存储
  • 虚拟机
  • 数据库

等,作为服务提供给客户。

IaaS 是云服务的最底层,主要提供一些基础资源。

它与 PaaS 的区别是,用户需要自己控制底层,实现基础设施的使用逻辑。

2.平台即服务(PaaS)

云平台服务或平台即服务(PaaS)为某些软件提供云组件,主要用于应用程序。

PaaS为开发人员提供了一个框架,他们可以构建自定义应用程序

所有服务器,存储和网络都可以由企业或第三方提供商进行管理,而开发人员维护应用程序。

PaaS 主要提供软件部署平台,屏蔽掉了硬件和操作系统细节,可以无缝地扩展。开发者只需要关注自己的业务逻辑,不需要关注底层。个人认为PaaS对开发人员的影响最直接。

属于该领域的公司:MySQL,Mangodb,Java,Node.js

3.软件即服务(SaaS)

SaaSSoftware as a Service,软件即服务

是一种基于互联网提供软件服务的应用模式

SaaS 建立在

IaaS(Infrastructure as a Service,基础设施即服务)

 PaaS(Platform as a Service,平台即服务)

两服务的基础之上,是云服务中最上层、直面用户的一层。

将应用部署在其服务器上,用户只需通过网络注册账号等简单操作即可启用 SaaS 平台上的软件服务,通过互联网使用共享的基础设备,并根据实际需要向厂商订购并付费。

SaaS采用灵活租赁的收费方式,一方面,企业可以按需增减使用账号;另一方面,企业按实际使用账户和使用时间付费。由于降低了成本,SaaS的租赁费用较之传统软件许可模式更加低廉。

优势:

  • 快速启用:可以通过互联网随时随地获得 SaaS 平台上所提供的应用程序
  • 低使用成本:SaaS 模式下厂商按订阅制收费,用户无需购买证书,初始成本更低。由于基础设备共享,无需承担传统软件本地部署模式下构建及维护自用 IT 硬件设备的费用。
  • 高整合性:SaaS 最大的特点在于其多租户架构,并且可以无限期扩展以满足用户需求,对多租户的资源复用能够有效降低开发和运维成本。
  • 升级迭代方便:由于多租户共享一份核心代码,由厂商更新共性代码即可实现系统持 续、快速的升级迭代。
  • 高开放性:许多 SaaS 厂商开放 API 接口,用户可以通过 API 扩展更多个性化模块,将时间和精力专注于自身业务。

SaaS服务软件,常用的app网站如即时通讯软件,微博,邮件等。

属于该领域的公司:Facebook,Twitter,  Instagram。 Google Apps, Dropbox, Salesforce, Cisco WebEx, Concur, GoToMeeting。

总结:

优秀的云软件服务商,向世界每个角落提供软件服务——就像天空上的云一样,不论你身处何方,只要你抬头,就能看见。

有关【云原生系列】第一讲:什么是云计算的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  3. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  4. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  5. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  6. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  7. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  8. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

  9. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  10. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

随机推荐