RSS
 

云计算只是新一代计算技术的简称

15 Nov

200831016404252_2

虽然很多伟大发明和技术在我们看来都是些突发奇想的产物,但当真正探究起来,这些东西大都通过一代人,甚至于几代人的积累演变而成的,其中最明显的例子,莫过于计算机本身。早在2000年前,我们中国人就已经发明了算盘这一强大的计算工具;在1642年,法国数学家帕斯卡在在英国数学家奥特雷得所制作的“计算尺”的基础上,将其加以改进,制成了能进行八位计算的“加法器”;在1820年,英国人查尔斯·巴比奇已经在构想和设计了世界上第一台完全可编程的计算机;到了20世纪,艾伦·图灵的图灵机思想和新兴的电子技术都对最后ENIAC的问世都起着非常关键的作用。

基于上述的理解,再加上我长时间对云计算的研究,感觉在技术发面,云计算并不是一门全新或者独创的技术,而是基于一些实际需求,比如降低运维成本、海量数据处理和提升应用的易用性等,在过去技术基础发展而来的新一代技术。下面是一些具体演化的例子:

  • 在降低运维成本方面:VMware将原先使用在大型机和小型机的系统虚拟化技术引入到X86架构当中,并且对这些技术展开了进一步的发展,使得一台X86服务器能整合过去多台服务器的负载,从而有效地提升硬件的利用率,并降低能源的浪费和硬件的购置成本,还有,通过系统虚拟化技术能有效地提升了数据中心自动化管理的程度,从而极大地减少了在管理方面的投入。

    • 在海量数据处理方面:Googe在传统函数编程语言的基础上开发MapReduce这个框架,在成熟的数据库和文件系统基础上开发BigTable和GFS,这些技术都使得海量数据的处理不再是难事。

      • 在提升应用的易用性方面:通过在过去HTML4的基础上引入HTML5,而它能支持多种多媒体功能和复杂的事件处理,使Web应用在用户体验方面已经越来越接近传统的桌面应用。同时Apple将一些成熟的Mac OSX技术引入到手机端,从而构建了IOS这个移动操作系统。这样让用户远离PC之后,依然能使用到PC类的功能。

      最后,就像之前技术发展围绕着Client/Server,还有互联网那样,新一代技术大多离不开云这个主题,所以我觉得在技术层面,云计算只是新一代计算技术的简称,没必要太纠结于其具体定义。

       
      2 Comments

      Posted in 云计算

       

      [转载] MapReduce Hold不住?

      24 Oct

      本文选自《程序员》杂志2011年10期,更多精彩内容敬请关注10期杂志

      文/杨栋

      本文系统地介绍和分析比较了业界主流的Yahoo! S4、StreamBase和Borealis三种流式计算系统,希望读者能从这些系统的设计中领悟到不同场景下流式计算所要解决的关键问题。

      背景

      非实时计算几乎都基于MapReduce计算框架,但MapReduce并不是万能的。对于搜索应用环境中的某些现实问题,MapReduce并不能很好地解决问题。

      商用搜索引擎,像Google、Bing和Yahoo!等,通常在用户查询响应中提供结构化的Web结果,同时也插入基于流量的点击付费模式的文本广告。为了在页面上最佳位置展现最相关的广告,通过一些算法来动态估算给定上下文中一个广告被点击的可能性。上下文可能包括用户偏好、地理位置、历史查询、历史点击等信息。一个主搜索引擎可能每秒钟处理成千上万次查询,每个页面都可能会包含多个广告。为了及时处理用户反馈,需要一个低延迟、可扩展、高可靠的处理引擎。然而,对于这些实时性要求很高的应用,尽管MapReduce作了实时性改进,但仍很难稳定地满足应用需求。因为Hadoop为批处理作了高度优化,MapReduce系统典型地通过调度批量任务来操作静态数据;而流式计算的典型范式之一是不确定数据速率的事件流流入系统,系统处理能力必须与事件流量匹配,或者通过近似算法等方法优雅降级,通常称为负载分流(load-shedding)。当然,除了负载分流,流式计算的容错处理等机制也和批处理计算不尽相同。

      最近Facebook在Sigmod 11上发表了利用HBase/Hadoop进行实时数据处理的论文,通过一些实时性改造,让批处理计算平台也具备实时计算的能力。这类基于MapReduce进行流式处理的方案有三个主要缺点。

      • 将输入数据分隔成固定大小的片段,再由MapReduce平台处理,缺点在于处理延迟与数据片段的长度、初始化处理任务的开销成正比。小的分段会降低延迟,增加附加开销,并且分段之间的依赖管理更加复杂(例如一个分段可能会需要前一个分段的信息);反之,大的分段会增加延迟。最优的分段大小取决于具体应用。
      • 为了支持流式处理,MapReduce需要被改造成Pipeline的模式,而不是Reduce直接输出;考虑到效率,中间结果最好只保存在内存中等。这些改动使得原有的MapReduce框架的复杂度大大增加,不利于系统的维护和扩展。
      • 用户被迫使用MapReduce的接口来定义流式作业,这使得用户程序的可伸缩性降低。

       

      综上所述,流式处理的模式决定了要和批处理使用非常不同的架构,试图搭建一个既适合流式计算又适合批处理计算的通用平台,结果可能会是一个高度复杂的系统,并且最终系统可能对两种计算都不理想。

      目前流式计算是业界研究的一个热点,最近Twitter、LinkedIn等公司相继开源了流式计算系统Storm、Kafka等,加上Yahoo!之前开源的S4,流式计算研究在互联网领域持续升温。不过流式计算并非最近几年才开始研究,传统行业像金融领域等很早就已经在使用流式计算系统,比较知名的有StreamBase、Borealis等。

      本文简单介绍几种业界使用的流式计算系统,希望流式系统的设计者或开发者们能从中获得启示。

       

                                       111

                                                       图1 数据分析系统整体组成示意图

      图1从整个分析系统的架构角度,给出了实时计算子系统所处的位置。实时计算系统和批处理计算系统同属于计算这个大的范畴,批处理计算可以是MapReduce、MPI、SCOPE等,实时计算可以是S4、Storm等,批处理和实时都可以或不依赖统一的资源调度系统。另外,计算系统的输入、输出,包括中间过程的输入、输出,都与存储系统交互,可以是块存储系统HDFS,也可以是K-V存储系统Hypertable等。计算层的上层是数据仓库,或者直接和用户交互,交互方式可以是SQL-like或者MR-like等。

      系统

      S4

      S4是一个通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统。基于S4框架,开发者可以轻松开发面向持续流数据处理的应用。

      S4的设计特点有以下几个方面。

      • Actor Model

      为了能在普通机型构成的集群上进行分布式处理,并且集群内部不使用共享内存,S4架构采用了Actor模式,这种模式提供了封装和地址透明语义,因此在允许应用大规模并发的同时,也提供了简单的编程接口。S4系统通过处理单元(Processing Elements,PEs)进行计算,消息在处理单元间以数据事件的形式传送,PE消费事件,发出一个或多个可能被其他PE处理的事件,或者直接发布结果。每个PE的状态对于其他PE不可见,PE之间唯一的交互模式就是发出事件和消费事件。框架提供了路由事件到合适的PE和创建新PE实例的功能。S4的设计模式符合封装和地址透明的特性。

      • Decentralized and Symmetric Architecture

      除了遵循Actor模式,S4也参照了MapReduce模式。为了简化部署和运维,从而达到更好地稳定性和扩展性,S4采用了对等架构,集群中的所有处理节点都是等同的,没有中心控制。这种架构将使得集群的扩展性很好,处理节点的总数理论上无上限;同时,S4将没有单点容错的问题。
      Pluggable Architecture
      S4系统使用Java开发,采用了极富层次的模块化编程,每个通用功能点都尽量抽象出来作为通用模块,而且尽可能让各模块实现可定制化。

      • Partial Fault-Tolerance

      基于Zookeeper服务的集群管理层将会自动路由事件从失效节点到其他节点。除非显式保存到持久性存储,否则节点故障时,节点上处理事件的状态会丢失。

      • Object Oriented

      节点间通信采用“Plain Old Java Objects”(POJOs)模式,应用开发者不需要写Schemas 或用哈希表来在节点间发送Tuples。

      S4的功能组件分3大类,Clients、Adapters和PNode Cluster,图2显示了S4系统框架。

                               112

                                                 图2 Yahoo! S4流式系统框架结构图

      S4提供Client Adapter,允许第三方客户端向S4集群发送事件和接收事件。Adapter实现了基于JSON的API,支持多语言实现的客户端驱动。

      Client通过Driver组件与Adapter进行交互,Adapter也是一个Cluster,其中有多个Adapter结点,Client可以通过多个Driver与多个Adapter进行通信,这样可以保证单个Client在分发大数据量时Adapter不会成为瓶颈,也可以确保系统支持多个Client应用并发执行的快速、高效和可靠性。

      在Adapter中,真正与Client交互的是其Stub组件,该组件实现了管理Client与Adapter之间通过TCP/IP协议进行通信的功能。GenericJsonClientStub这个类支持将事件在Client与Adapter之间以JSON的形式转换,从而支持更多种类型的Client应用。不同的Client可以配置不同的Stub来与Adapter进行通信,用户可以定义自己的Stub来实现自己想要的业务逻辑,这样也使得Client的行为更加多样性、个性化。

      StreamBase

      StreamBase是IBM开发的一款商业流式计算系统,在金融行业和政府部门使用,其本身是商业应用软件,但提供了Develop Edition。相对于付费使用的Enterprise Edition,前者的功能更少,但这并不妨碍我们从外部使用和API接口来对StreamBase本身进行分析。

      StreamBase使用Java开发,IDE是基于Eclipse进行二次开发,功能非常强大。StreamBase也提供了相当多的Operator、Functor以及其他组件来帮助构建应用程序。用户只需要通过IDE拖拉控件,然后关联一下,设置好传输的Schema并且设置一下控件计算过程,就可以编译出一个高效处理的流式应用程序了。同时,StreamBase还提供了类SQL语言来描述计算过程。

      StreamBase的组件交互情况如图3所示。

                                               113

                                                                  图3 StreamBase组件交互图

      StreamBase Server是节点上启动的管理进程,它负责管理节点上Container的实例,每个Container通过Adapter获得输入,交给应用逻辑进行计算,然后通过Adapter进行输出。各个Container相互连接,形成一个计算流图。

      Adapter负责与异构输入或输出交互,源或目的地可能包括CSV文件、JDBC、JMS、Simulation(StreamBase提供的流产生模拟器)或用户定制。
      每个StreamBase Server上面都会存在一个Sytsem Container,主要是产生系统监控信息的流式数据。

      HA Container用于容错恢复,可以看出它实际包含两个部分:Heartbeat和HA Events,其中HeartBeat也是Tuple在Container之间传输。在HA方案下,HA Container监控Primary Server的活动情况,然后将这些信息转换成为HA Events交给StreamBase Monitor来处理。

      Monitor就是从System Container和HA Container中获取数据并且进行处理。StreamBase认为HA 问题应该通过CEP方式处理,也就是说如果哪个部件出现问题,就肯定会反映在System Container和HA Container的输出流上面,然后 Monitor通过复杂事件处理这些Tuples的话就能够检测到机器故障等问题,并作出相应处理。

      StreamBase提出了以下4种模板策略来解决容错问题。

      • Hot-Hot Server Pair Template

      Primary Server和Secondary Server都在同时计算,并且将计算结果交给下游。优点是Primary Server如果故障的话那么Secondary Server依然工作,几乎没有任何切换时间;并且下游只需要选取先到来的Tuple就可以处理了,保证处理速度最快;缺点是浪费计算和网络资源。

      • Hot-Warm Server Pair Template

      Primary Server和Secondary Server都在同时计算,但只有Primary Server将计算结果交给下游。优点是如果Primary Server故障,Secondary Server可以很快切换,而不需要任何恢复状态的工作。相对于Hot-Hot方式时间稍微长一些,但没有Hot-Hot那么耗费网络资源,同时也浪费了计算资源。

      • Shared Disk Template

      Primary Server在计算之后,将计算的一些中间关键状态存储到磁盘、SAN(Storage Area Network)或是可靠的存储介质。如果Srimary Server故障,Secondary Server会从介质中读取出关键状态,然后接着继续计算。优点是没有浪费任何计算和网路资源,但恢复时间依赖状态的量级而定,相对于前两种,恢复时间可能会稍长。

      • Fast Restart Template

      这种方案限定了应用场景,只针对无状态的应用。对于无状态的情况,方案可以非常简单,只要发现Primary Server故障,Secondary Server立即启动,并接着上游的数据流继续计算即可。

      Borealis

      Borealis是Brandeis University、Brown University和MIT合作开发的一个分布式流式系统,由之前的流式系统Aurora、Medusa演化而来。目前Borealis系统已经停止维护,最新的Release版本停止在2008年。

      Borealis具有丰富的论文、完整的用户/开发者文档,系统是C++实现的,运行于x86-based Linux平台。系统是开源的,同时使用了较多的第三方开源组件,包括用于查询语言翻译的ANTLR、C++的网络编程框架库NMSTL等。

      Borealis系统的流式模型和其他流式系统基本一致:接受多元的数据流和输出,为了容错,采用确定性计算,对于容错性要求高的系统,会对输入流使用算子进行定序。

      Borealis的系统架构如图4所示。

      114

      • Query Processor(QP)是计算执行的地方,是系统的核心部件,其大部分功能继承自Aurora。
      • I/O Queues将数据流导入QP,路由Tuples到其他节点或客户端程序。
      • Admin模块用来控制本地的QP,例如建立查询、迁移数据流图片段,该模块也会同Local Optimizer协作优化现有数据流图。
      • Local Optimizer职责包括本地调度策略、调整Operator行为、超载后丢弃低价值元组等。
      • Storage Manager模块用于存储本地计算的状态数据。
      • Local Catalog存储本地数据流图和元数据,可以被本地所有组件访问。
      • Borealis Node还有彼此通信的模块用于执行协作任务。
      • Neighborhood Optimizer使用本地和邻居节点来优化节点间的负载均衡或shed load。
      • High Availability (HA)模块相互监测,发现对方故障时及时代替对方。
      • Local Monitor收集本地性能相关统计数字报告给本地和Neighborhood Optimizer。
      • Global Catalog为整个数据流计算提供了一个逻辑上的完整视图。

      除作为基本功能节点外,Borealis Server也可以被设计成一个协作节点来执行全局的系统监控和其他优化任务,比如全局的负载分布和Global Load Shedding,因此Borealis实际上提供了完整的3级监控和优化(Local、Neighborhood、Global)。

      负载均衡方面,Borealis提供了动态和静态两种部署机制。

      • Correlation-based Operator Distribution

      通过分析不同Operators和Nodes间的负载变化的关系,决定和动态调整Operatpr的部署,使之达到负载均衡。

      • Resilient Operator Distribution Algorithm

      该算法的目标是提供一种静态的Operator部署方案,该方案能够在不需要重新调整的情况下处理最大可能的输入速度变化范围。

      由于动态调整需要时间和消耗,前者适用于负载变化持续时间较长的系统;而后者则能处理较快较短的负载峰值。在实现上前者使用相关系数作为节点关联度指标,并通过贪婪算法将NP问题转化为多项式求解;而后者在部署前计算完毕,保证系统能够容忍负载峰值。该算法在线性代数上建模,包括Operator Ordering、Operator Assignment两个阶段。

      Borealis通过四种容错机制来满足用户需求。

      • Amnesia Backup

      备机发现主机故障,立即从一个空的状态开始重做。

      • Passive Standby

      主机处理,备机待命,主机按周期做Checkpoint,主机故障后切换到备机,重放Checkpoint和数据流,对于不确定性计算可以很好地支持,缺点是恢复时间较长。

      • Active Standby

      主备机同时计算,主机故障时直接切换到备机,不支持不确定性计算,浪费计算资源,不过恢复时间几乎没有。

      • Upstream Backup

      通过上游备份来容错,故障时从上游重放数据即可,恢复时间最长,不过最节省资源。

      除此之外,Borealis还提供了更高级的容错机制Rollback Recovery,它是一种基于副本在节点失效、网络失效或网络分区时的故障恢复机制,在尽量减少系统不一致的情况下,尽可能地保证系统的可用性。该机制允许用户定义一个阈值来在一致性和可用性之间做一个平衡。当系统数据恢复后,系统支持重新计算输出正确的结果,保证最终一致性。该机制使用了Data-serializing Operator(SUnion)来确保所有的副本处理同样顺序的数据。当失效恢复后,通过Checkpoint/Redo、Undo/Redo来实现恢复重放。

      对比

      表1就上述3个流式系统做个分类比较,比较项基于DEBS2011会议上IFPSurvey中涉及的各种Models。Processing Model描述流元组进行计算时的选择策略、消费策略及负载降级处理。Interaction Model描述输入组件和计算系统、计算系统内部及计算系统和输出组件的交互方式。Time Model描述事件流是否按照时间约束。Rules Model描述流式计算规则是显示还是隐式。Data Model描述流中的数据组成、格式等。Function Model描述流式计算系统的功能模型。Language Model描述语言层面的各种算子。

                                   115                                                             表1 3种流式系统的模型对比

      小结
      本文介绍了业界主流的3个流式计算系统,希望从这些系统的设计中领悟到不同场景下流式计算所要解决的关键问题。
      Yahoo! S4的最新版本是Alpha version v0.3.0,动态负载均衡和在线服务迁移等重要功能都尚未实现,不过其代表性的3个特点值得学习,Actor模式、非中心化的对称结构及可插入式的架构。

      StreamBase是有着功能强大的IDE并且支持控件式的方法来搭建应用程序,同时还提供了高级语言来搭建应用程序的方法。由于是商业产品,其用户接口的精彩设计值得借鉴,同时其可组合的HA方案也是亮点之一。
      Borealis是学术界研究的重要产出,它对新一代的流式系统涉及的诸多方面,如系数据模型、负载管理、高可用性、可扩展性都作了全面和翔实的研究,一方面系统变得强大、先进,另一方面使得系统也变得臃肿、复杂。这套系统的许多策略都值得我们学习,可以应用于不同的流式计算场景。

      作者杨栋,百度分布式高级研发工程师,从事Hypertable、Hadoop及流式计算的研究和开发。

       
      1 Comment

      Posted in 云计算

       

      《云计算核心技术解剖》迷你书连载五-谷歌的云计算产品

      13 Oct

       

      3.1 Google的云计算产品

      从云计算角度而言,几乎Google的所有产品都可以被认为是典型的云计算产品。因为Google本身就是世界上最大的云,在全球有30多个数据中心,服务器的总数超过100万台,而且在运营效率和自动化管理程度这两个非常重要的云指标上也是独领风骚的,并且这些产品大都以Web的形式发布。另外,在最近一段时间,Google在云客户端方面也有发力。下面从SaaS、PaaS、IaaS和云客户端这4个方面介绍Google的云计算产品。

      3.1.1 SaaS层

      在SaaS层,Google的云服务主要可分为两大部分:其一是主要面向个人用户的普通SaaS服务,其二是面对公司和机构的企业级SaaS服务。

      1. 普通SaaS服务

      大多数Google服务(包括最重要的搜索)都可以归为这类。这些服务可总结为下面这6大类,具体请参考表3-1。

      表3-1 普通SaaS服务的列表

      类 别

      产 品

      搜索类

      网页搜索、图片搜索、视频搜索和学术搜索等

      地图产品

      Google地图、Google Earth和Google Sky等

      视频播放

      YouTube

      照片共享

      Picasa

      社交站点

      Orkut

      协作工具

      Gmail、Google 日历和Google 文档等

       

      2. 企业级SaaS服务

      Google的企业级SaaS服务统称为Google Apps,它可以有效降低 IT 成本,有助于提高现有员工的工作效率,并且有超过200万家企业已经购买了Google Apps服务,而且每天新注册的企业达数千个。Google Apps主要包括6大组件,下面将介绍这6大组件所支持的特性和功能。

      • 企业版Gmail。每位用户都可获得容量达25GB的存储空间,并提供强大的垃圾邮件过滤,与黑莓和Outlook之间的交互,以及99.9% 的正常运行时间可靠性保证。
      • Google日历。基于网络的日历应用程序使员工可以有效地协作,并帮助降低成本和IT负担,支持轻松简单的预约,共享项目日历,进行日历的同步,与电子邮件系统集成和通过移动设备进行访问等功能。
      • Google文档。可在线编辑和创建Word文档、电子表格和演示文稿,并且支持多人之间的协作编辑和强大的安全访问机制。
      • Google网上论坛。用户可创建群组,提供邮件列表,轻松共享内容和搜索存档。
      • Google协作平台。它是一种快速创建网页的工具,比较适合Intranet(内联网)和小型团队项目,只需单击几下鼠标即可创建网页,无需编写任何代码,而且支持企业级的安全控制。
      • Google视频。可以安全地托管和流化企业的视频,因此员工可随意地分享视频,也无需因复杂的本地视频解决方案而加重企业IT部门的负担。

      虽然Google Apps里面有许多服务也存在面向个人用户的普通SaaS版本,但是身为企业级服务的Google Apps,在下面这3方面有一定的增强。其一是在客户支持和可靠性方面。对于重大问题,Google提供全天候电话和电子邮件支持,并保证99.9%正常运行时间的SLA和提供自助式在线支持等。其二是在安全性方面。为确保安全而提供HTTPS访问,同时强制执行SSL协议,并可定制垃圾邮件过滤机制和密码强度要求等。其三是在迁移和集成工具方面,Google Apps提供用于电子邮箱迁移的工具和API,并可与企业的LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)系统进行目录方面的同步,还支持电子邮件的路由和网关、单点登录API以及用户与群组配置API等。

      在2010年3月,Google 还发布了Google Apps专属的应用商店Google Apps Marketplace,在这个商店中已经有上百种出色的应用供Google Apps用户选择。比如,用于在客户端的Office和Google文档之间进行同步的OffiSync、出色的在线图片编辑器Aviary和提供在线文件存储的Box.net等。

      3.1.2 PaaS层

      Google App Engine 提供一整套开发组件让用户轻松地在本地构建和调试网络应用,之后能让用户在Google强大的基础设施上部署和运行网络应用程序,并自动根据应用所承受的负载对应用进行扩展,免去用户对应用和服务器等的维护工作。同时提供大量的免费额度和灵活的资费标准。在开发语言方面,现支持Java和Python两种语言,并为这两种语言提供基本相同的功能和API。关于Google App Engine的具体介绍,将在3.4节展开。

      3.1.3 IaaS层

      由于与Google本身的业务相比,普通IaaS层的业务在利润率上相对较低,再加上其他一些原因,到现在为止,Google只推出类似Amazon S3的名为Google Storage的云存储服务。

      Google Storage是一次构建在Google基础设施之上的云服务,开发者可以非常容易地使用其基于REST模式的API,将他们的应用程序和Google Storage连接起来。这些数据将保存在若干机房内,所以将非常可靠。Google Storage支持数据的强一致性,同时每个请求都可以调用数百GB的对象。开发者可以通过Web管理界面或者 gsulti 这个开源的命令行工具来管理他们的存储内容,比如新建存储库(Bucket)、新建文件夹、批量上传、批量删除和共享文件等。

      Google Storage 内置基于 Google 账户的验证与访问控制机制,但目前它只支持个人的Google 账户,未来会加入对 Google Apps 账户的支持。Google Storage 首先向小批开发者开放,在此期间每个开发者将有100GB免费的数据存储空间,每月的数据流量限制为300GB。

      3.1.4 云客户端

      虽然Google现在的利润主要来源于搜索这样的基于Web的SaaS服务,但是近两年来,Google投入了大量的人力和物力在云客户端方面,并推出了Android、Chrome和Chrome OS这3个产品。

      1. Android

      Android是主要用于智能移动终端(包括手机和车载设备等)的操作系统和软件平台,并基于Linux内核。这个项目由前苹果工程师、现Google副总裁Andy Rubin创立。2005年7月,Google收购了Android这个项目,并对其进行重点培育。在2007年11月5日,Google正式对外发布了Android,并成立了开放手机联盟(Open Handset Alliance),其中HTC、英特尔、Sprint-Nextel、T-Mobile、中国移动以及NVIDIA等大企业都是这个联盟的成员。

      Android平均每半年发布一个新版本,而且都以甜点命名。到现在为止,Android共发布了5个比较重要的版本,具体请看表3-2。

      表3-2 Android的主要版本

      版本号

      代 号

      发布日期

      内 容

      1.1

      2009年2月

      主要特性包括:闹钟、浏览器、联系人、地图和音乐等基本功能

      1.5

      Cupcake

      2009年2月

      这是第一个主要版本,新增特性包括:录像、蓝牙和复制/粘贴等

      1.6

      Donut

      2009年9月

      新增特性包括:Android 应用市场、手势搜索、语音搜索和应用集成等

      2.0/2.1

      Eclair

      2009年10月

      这个版本的重点在于硬件速度的提升,更多屏幕以及分辨率选择,大幅度的用户界面改良和支持Exchange等

      2.2

      Froyo

      2010年5月

      重要新特性有完整的Flash 10.1支持,最高 5 倍速度提升,Android 云集成,摄像头/视频改进,大量Exchange相关的支持和能将应用安装在记忆卡上等

      在架构方面,Android总体来说和传统PC架构比较类似,但也有创新的地方,共可分为4个层次。

      • 应用程序层。以Java为编程语言,Android从接口到功能都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类负责创建Window,一个活动中的Activity就是在前台(Foreground)模式,后台运行的程序叫作服务(Service)。两者之间通过ServiceConnection机制进行通信,从而实现多个程序同时运行的效果。如果运行中的Activity的全部画面都被其他Activity所取代,该Activity便被停止,甚至系统会清除其所占用的资源。
      • 中间件。它是操作系统与应用程序之间沟通的桥梁,分为两部分:函数库(Library)和虚拟机(Virtual Machine)。在函数库方面,有作为改良libc的Bionic,名为OpenCORE的基础多媒体框架,名为skia的内核图形引擎(它支持OpenGL/ES规范)和SQLite数据库系统等。在虚拟机方面,采用了定制的Dalvik 虚拟机。Dalvik虚拟机是一种“寄存器型(Register Based)”的Java虚拟机,变量皆存放于寄存器中,这使得虚拟机的指令得到了一定程度的消减,对手机这种移动设备非常有帮助。Dalvik虚拟机可以有多个实例同时运行,每个Android应用程序都用一个其专属的Dalvik虚拟机来运行,让系统在运行程序时达到优化。Dalvik 虚拟机不是运行Java二进制代码,而是运行一种称为.dex格式的文件。
      • 硬件抽象层。Android的硬件抽象层的作用是将Android本身的框架与 Linux的内核隔开,从而降低对Linux内核的依赖,以实现内核独立。Android硬件抽象层目前以存根(stub)的形式存在,本身是“.so”库,是一种类似代理的概念。Android的运行时会向硬件抽象层取得存根的动作,再以回调的方式执行这个动作。
      • 操作系统。Android是运行于Linux内核之上的,但并不是传统的GNU/Linux。一般在GNU/Linux 里支持的功能,Android大都不支持。比如Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了,因为Android为了达到商业应用的目的,必须移除被严格的GNU GPL所约束的部分。目前,Android的Linux内核中包括了安全、存储器管理、进程管理、网络栈和驱动程序的模型等模块。

      在终端方面,由于其开放性和免费性,所以受到了除RIM、Nokia和苹果之外,其他几乎所有手机厂商的认可。已经推出的著名智能手机终端有:G1 (HTC Dream)、HTC Hero、Motorola Droid、HTC EVO、Motorola Droid X、三星的Galaxy S系列和Google自己的Nexus One,而且在市场占有率方面节节攀升,并在2010年8月份超过iPhone。

      2. Chrome

      Google Chrome是一个由Google公司开发的网页浏览器,Chrome是化学元素“铬”的英文名称。Google Chrome采用BSD许可证授权并开放源代码,开源计划名为Chromium。截至2010年6月,Chrome浏览器的市场占有率高达7.24%,排名第三,仅次于微软的IE和Mozilla的Firefox。其代码基于其他开源软件所撰写,包括WebKit和Mozilla,并开发出代号为“V8”的高效能的JavaScript处理引擎。Google Chrome的整体发展目标是在稳定性、速度和安全性3方面不断提升,并创造出简单且高效的用户界面。

      和其他主流浏览器相比,特别是IE,Chrome在以下4个方面有一定的优势。

      • 安全性。在这方面主要有两个机制。其一是黑名单(Blacklists):Chrome会定期地更新用于防止网络钓鱼和恶意软件侵入的黑名单,并在用户试图浏览有潜在危险的网站时予以警告。其二是沙盒(sandbox):Chrome中的每一个标签页都是一个沙盒,以防止恶意软件破坏用户系统。由于遵守最小权限原则,所以Chrome中每个动作的权限都会被限制,一般仅能运算而无法写入文件或者读取存储在敏感区域内的文件。
      • 稳定性。支持多进程机制,能容许多个程序同时运行而互不影响,每个网页标签独立于窗口程序存在。当资源过高或崩溃时,不会因为一个停顿而导致整个程序崩溃。
      • 速度。利用其内置的JavaScript处理引擎V8来加快运行JavaScript的速度。V8的机制是把JavaScript代码转换成机器码,利用CPU直接运算,减少了解释JavaScript的时间,并使用简易小巧、能有效利用内存的WebKit HTML排版引擎。
      • 对HTML5的支持。虽然HTML5规范还没正式发布,但是Chrome已经对大多数的HTML5规范有了很好的支持,比如在高清视频领域,它不仅支持商业的H.264格式,而且还支持开源的VP8格式。

       

      3. Chrome OS

      Chrome OS是一个开源、轻量级的操作系统,主要面向移动设备,但与Android主打手机不同的是,Chrome OS主要关注上网本(netbook)和平板(tablet),并且运行Chrome OS系统的上网本CR-48已经作为样品在2010年年底提供给试用者进行测试。这个项目本身也是Chrome的一个延伸。

      和Android一样,Chrome OS也是基于Linux内核的,并能够在x86和ARM两个架构下的芯片上运行。在内核之上就只有一个Chrome浏览器,但通过这个Chrome能访问所有基于Web的应用和服务,并支持多种插件。

      在设计上,Chrome OS非常关注速度、简便和安全性。首先是速度:Chrome OS在启动后能让用户在几秒钟后就能访问互联网。其次是简便:用户界面就是大家常用的Chrome,而且能直接访问任意基于Web的应用和服务,无需安装任何软件。最后,在安全性方面:和Chrome一样,Google重新设计了Chrome OS的底层安全架构,使用户不必担心病毒和恶意软件,并保障它一直能正常运行。

      总体而言,由于Chrome OS基本上以依赖云服务为主,而不是本地的原生应用,所以ChromeOS可以被认为是第一个云操作系统。

       

      人云亦云 新管理员加盟

      08 Oct

       

      大家好,我是90后,人云亦云的新管理员,很高兴能加入这个这个团队。我今后会带来更多的云计算相关的信息。还有,请关注我们的创始人吴朱华的微博@云计算-吴朱华和我的微博@9后h

       
      2 Comments

      Posted in 其它

       

      人云科技团队招聘系统工程师!!!

      08 Sep

       

      不好意思,由于忙于开发,所以很长时候没有更新博客,但是过段时间,会继续更新云计算相关内容的。这几个月我们团队一直在紧锣密鼓地开发产品当中,而且正在进行全面的商业测试,估计在年底将正式发布,同时我们看到随着项目的扩大,人手有一点不足,所以在这里正式对外招聘一名系统工程师来参与我们云计算产品的开发。

      职位:系统工程师

      要求:

        1. 一两年C或者C++实际项目经验,当然C尤佳;
        2. 在数据库、NoSQL和云计算方面有一定的知识积累;
        3. 在事业方面有一定的追求,并且勇于挑战自己;
        4. 最好生活在上海,这样能便于面试和工作。

       

      对于合适的人选,我们一定会根据实际的表现来给予各方面的奖励,包括期权。还有,本人将对其进行全面的指导,当然也希望能相互促进:)如果有意向者,请将简历发至ikewu83@gmail.com,或者私信我的微博,同时也请大家多多推荐,成功者有礼品赠送^_^

       
      5 Comments

      Posted in 其它