草庐IT

云计算概念与模型 什么样的应用适合云计算

jackniu123 2024-02-26 原文

云计算的概念

云计算是一种以网络为中心的计算模式,数据处理和数据存储可以通过互联网访问的大型计算和存储系统集群上更加有效的完成。
云计算是一种商业现实:云计算提供可伸缩的弹性计算和存储服务。可以对这些服务使用的资源进行计量,并且用户仅为它们使用的资源付费。

云计算中的核心技术

虚拟化技术

虚拟化技术是什么?说白了就是通过软件提供假象,而这种假象更利于人类使用。我们虚拟化内存,就是把一片片的DRAM片,变成程序员眼中的连续编址的内存地址空间。我们虚拟化CPU,制造了每个应用程序可以独立占有一个CPU的假象。

云服务器中运行的基本单位是虚拟机,是系统虚拟化的产物。

通过虚拟化,我们数据中心中大量的、性能参差不齐的计算机群仿佛一个大型计算机。用户可以按需订阅这台大型计算机的资源。云服务商也受益于虚拟化技术,可以更好的进行资源的集中管理与调度。

分布式系统
云基础设施是由数万服务器组成的多用户、多任务、支持并发处理的大型分布式系统。具体涉及分布式存储系统、分布式资源调度、分布式编程模式等。

云服务的优势与缺陷

  • 弹性与按需付费。客户可以动态地获取计算资源以支持可变工作负载。并且用户使用的资源可以定量,用户仅为它们使用的资源付费。
  • 低成本。类似于房东,云服务提供商将基础设施出租并没有太大的代价,反而受益于规模经济,云服务商可以更有效的进行管理。得益于虚拟化技术,一台物理机可能被多个用户使用,更节省了服务商的成本。
  • 可以更好地利用软件、网络、存储和处理器技术的最新进展。云计算由全球最顶尖的IT公司集中推动,一旦技术存在突破,会很快在云上得到应用。
  • 不安全性。云计算模式将应用与数据的控制权转交给了第三方,存在信息泄露、服务器宕机等风险。

云计算的三种交付模型

  1. 软件即服务(SaaS):在云上运行服务供应商开发的应用。用户通过简单的web页面或其他客户端(称为瘦客户接口)来访问这些应用提供的服务。
    比如云游戏,玩家可以在远程云服务器运行steam上的大作,节省购买设备的费用,也不用在自己电脑上安装应用。但这种方式极度依赖网络带宽,如果将来网络带宽继续突破,应当会成为主流模式。
    受限于现阶段的网络带宽,SaaS不适用于实时性要求较高的应用,或者不允许外部托管数据的应用(因此银行、国家电网等都有自己的云数据中心)
  2. 平台即服务(PaaS):云服务商为应用开发者提供开发应用、运行应用、测试应用的平台。消费者不用自己搭建环境,不用去自己管理操作系统、网络等配置。
    比如谷歌的AE(AppEngine),它支持用户在其上协作开发Web和移动应用,并在谷歌浏览器上运行这些应用。
  3. 基础设施即服务(IaaS):云服务商提供CPU、存储、网络和其他计算资源。消费者能够在云上部署和运行任何的软件。
    比如华为云的ECS,用户可以自主决定所需服务器的vCPU核数,网络带宽等等,相应的价格也有不同。
    4.数据库即服务(DBaaS):即用户把数据库运行在云服务商的服务器上。

云计算适用于哪些应用

云计算应用是客户/服务器模型。我个人认为,云计算适用于需要数据密集型、计算密集型、适合并行与分布式处理的应用。

  1. Web应用。Web应用是云计算的主要优势所在。
    web服务端是高并发的,而且流量波动很大。因此很适合提供弹性服务的云计算。

  2. 数据库。现在分布式数据存储技术已经比较成熟,云数据中心就是一个大的分布式集群。普通企业完全可以租用云计算服务商的服务器作为数据库,受益于按需付费与弹性服务,该成本比自己购买服务器要便宜的多。
    把数据存储在程序运行位置附近具有经济意义。那么未来是否会有大量的企业将自己的核心业务应用也放在云上呢?

  3. 可以大规模并行的程序。那么并行体现在哪?比如文件格式转换,可以把需要转换的文件分成多个部分,运行多个应用虚拟机实例,每个应用负责自己部分的文件转换。此外还有数据挖掘、数据检索、图像处理、视频转码等。

  4. 大数据:云上现在有很多大数据分布式框架。比如hadoop、spark等。

  5. 人工智能。随着深度学习神经网络的层数越来越多,越来越多的神经网络参数训练已经转移到服务器上。谷歌的tensorflow已经有分布式的计算框架。

不适用于云计算的应用

云计算不是万能的,它具有不绝对安全、网络波动大、存在宕机风险等问题。
因此,如果一个应用需要密集的通信,高实时性,强大的稳定性保证或者强大的安全性,那么它不适用于云计算。
此外,云计算本身是一个并行与分布式系统,如果一个任务不能够粗粒度并行执行,那么它在云上的表现也不会出色。

有关云计算概念与模型 什么样的应用适合云计算的更多相关文章

  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. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

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

  3. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  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-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  7. 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返

  8. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  9. ruby-on-rails - 在混合/模块中覆盖模型的属性访问器 - 2

    我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah

  10. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

随机推荐