软件开发常用技术介绍

  • 格式:pdf
  • 大小:791.03 KB
  • 文档页数:11

软件开发常⽤技术介绍

软件开发技术实现要点介绍

⼀、OpenStackOpenStack是⼀个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的⾃由软件和开放源代码项⽬。OpenStack是⼀个旨在为公共及私有云的建设与管理提供软件的开源项⽬。它的社区拥有超过130家企业及1350位开发者,这些机构与个⼈都将OpenStack作为基础设施即服务(IaaS)资源的通⽤前端。OpenStack项⽬的⾸要任务是简化云的部署过程并为其带来良好的可扩展性。本⽂希望通过提供必要的指导信息,帮助⼤家利⽤OpenStack前端来设置及管理⾃⼰的公共云或私有云。1.简介

OpenStack既是⼀个社区,也是⼀个项⽬和⼀个开源软件,它提供了⼀个部署云的操作平台或⼯具集。其宗旨在于,帮助组织运⾏为虚拟计算或存储服务的云,为公有云、私有云,也为⼤云、⼩云提供可扩展的、灵活的云计算。OpenStack旗下包含了⼀组由社区维护的开源项⽬,他们分别是OpenStackCompute(Nova),OpenStackObjectStorage(Swift),以及OpenStackImageService(Glance)。

OpenStackCompute,为云组织的控制器,它提供⼀个⼯具来部署云,包括运⾏实例、管理⽹络以及控制⽤户和其他项⽬对云的访问 (thecloudthroughusersandprojects)。它底层的开源项⽬名称是Nova,其提供的软件能控制IaaS云计算平台,类似于AmazonEC2和RackspaceCloudServers。实际上它定义的是,与运⾏在主机操作系统上潜在的虚拟化机制交互的驱动,暴露基于 WebAPI的功能。OpenStackObjectStorage,是⼀个可扩展的对象存储系统。对象存储⽀持多种应⽤,⽐如复制和存档数据,图像或视频服务,存储次级静态数据,开发数据存储整合的新应⽤,存储容量难以估计的数据,为Web应⽤创建基于云的弹性存储。OpenStackImageService,是⼀个虚拟机镜像的存储、查询和检索系统,服务包括的RESTfulAPI允许⽤户通过 HTTP请求查询VM镜像元数据,以及检索实际的镜像。VM镜像有四种配置⽅式:简单的⽂件系统,类似OpenStackObjectStorage的对象存储系统,直接⽤Amazon'sSimpleStorageSolution(S3)存储,⽤带有ObjectStore的S3间接访问S3。三个项⽬的基本关系如下图所⽰:

2.OpenStack Compute逻辑架构

OpenStack Compute逻辑架构中,组件中的绝⼤多数可分为两种⾃定义编写的Python 守护进程(custom written pythondaemons)。

a) 接收和协调API调⽤的WSGI应⽤(nova-api, glance-api, etc)

b) 执⾏部署任务的Worker守护进程(nova-compute, nova-network, nova-schedule, etc.)然⽽,逻辑架构中有两个重要的部分,既不是⾃定义编写,也不是基于Python,它们是消息队列和数据库。⼆者简化了复杂任务(通过消息传递和信息共享的任务)的异步部署。

逻辑架构图3-1如下所⽰:

从图中,我们可以总结出三点:a) 终端⽤户(DevOps, Developers 和其他的 OpenStack 组件)通过和nova-api对话来与OpenStack Compute交互。

b) OpenStack Compute守护进程之间通过队列(⾏为)和数据库(信息)来交换信息,以执⾏API请求。

c) OpenStack Glance基本上是独⽴的基础架构,OpenStack Compute通过Glance API 来和它交互。

其各个组件的情况如下:a) nova-api守护进程是OpenStack Compute的中⼼。它为所有API查询(OpenStack API 或 EC2 API)提供端点,初始化绝⼤多数部署活动(⽐如运⾏实例),以及实施⼀些策略(绝⼤多数的配额检查)。b) nova-compute进程主要是⼀个创建和终⽌虚拟机实例的Worker守护进程。其过程

相当复杂,但是基本原理很简单:从队列中接收⾏为,然后在更新数据库的状态时,执⾏⼀系列的系统命令执⾏他们。c) nova-volume管理映射到计算机实例的卷的创建、附加和取消。这些卷可以来⾃很多提供商,⽐如,ISCSI和AoE。

d) Nova-network worker守护进程类似于nova-compute和nova-volume。它从队列中接收⽹络任务,然后执⾏任务以操控⽹络,⽐如创建bridging interfaces或改变iptables rules。e) Queue提供中⼼hub,为守护进程传递消息。当前⽤RabbitMQ实现。但是理论上能是python ampqlib⽀持的任何AMPQ消息队列。f) SQL database存储云基础架构中的绝⼤多数编译时和运⾏时状态。这包括了可⽤的实例类型,在⽤的实例,可⽤的⽹络和项⽬。理论上,OpenStack Compute能⽀持SQL-Alchemy ⽀持的任何数据库,但是当前⼴泛使⽤的数据库是sqlite3(仅适合测试和开发⼯作),MySQL 和 PostgreSQL。g) OpenStack Glance,是⼀个单独的项⽬,它是⼀个compute架构中可选的部分,分为三个部分:glance-api, glance-registryand the image store. 其中,glance-api接受API调⽤,glance-registry负责存储和检索镜像的元数据,实际的Image Blob存储在Image Store中。Image Store可以是多种不同的Object Store,包括OpenStack Object Storage (Swift)

h) 最后,user dashboard是另⼀个可选的项⽬。OpenStack Dashboard提供了⼀个OpenStack Compute界⾯来给应⽤开发者和devops staff类似API的功能。当前它是作为Django web Application来实现的。当然,也有其他可⽤的Web前端。

3.OpenStack在系统中的使⽤

OpenStack强⼤的功能,为系统的云服务器环境提供了强有⼒的⽀持,在本系统中,OpenStack的主要使⽤场景如下:

1)登录到仪表板接⼝,查看、启停虚拟机实例

OpenStack提供了强⼤的界⾯⽀持,运维⼈员可通过OpenStack⽅便地管理虚拟机实例。2)镜像管理

系统集群需要部署多台完全⼀样的虚拟机,此时只需通过镜像功能拷贝多个虚拟机即可。3)⾃动化脚本

利⽤python-nova⼯具,为服务治理⼯作提供帮助,轻松地实现服务部署、维护等⼯作。

⼆、NoSQL

随着互联⽹中web 2.0⽹站的兴起,以及未来“互联⽹+”的深⼊整合,关于数据存储,传统的关系数据库在应付超⼤规模和⾼并发的动态⽹站⽅⾯,已经显得⼒不从⼼,暴露了很多难以克服的问题,例如:High performance - 对数据⾼并发读写的需求

Huge Storage - 对海量数据的⾼效率存储和访问的需求

High Scalability && High Availability - 对数据的⾼可扩展性和⾼可⽤性的需求

关系数据库在这些越来越多的应⽤场景下显得不那么合适,为了解决这类问题的NoSQL 应运⽽⽣,并得到了⾮常迅速的发展。NoSQL ⼜称为Not Only SQL,主要是指⾮关系型、分布式、⽀持⽔平扩展的数据库设计模式。NoSQL 放弃了传统关系型数据库严格的事务⼀致性和范式约束,采⽤弱⼀致性模型。NoSQL的特点是⾮关系型、分布式、开源、可⽔平扩展、模式⾃由、⽀持replication、简单的API、最终⼀致性(相对于即时⼀致性,最终⼀致性允许有⼀个“不⼀致性窗⼝”,但能保证最终的客户都能看到最新的值)。

相对于NoSQL 系统,传统数据库难以满⾜云环境下应⽤数据的存储需求,具体体现在以下3 个⽅⾯:1)根据CAP 理论,⼀致性(consistency)、可⽤性(availability)和分区容错(partition tolerance)

这3 个要素最多同时满⾜两个,不可能三者兼顾。对云平台中部署的⼤量Web 应⽤⽽⾔,数据可⽤性与分区容错的优先级通常更⾼,所以⼀般会选择适当放松⼀致性约束。

传统数据库的事务⼀致性需求制约了其横向伸缩与⾼可⽤技术的实现;2)传统数据库难以适应新的数据存储访问模式。Web 2.0 站点以及云平台中存在⼤量半结

构化数据,如⽤户Session 数据、时间敏感的事务型数据、计算密集型任务数据等,这些状态数据更适合以Key/Value 形式存储,不需要RDBMS 提供的复杂的查询与管理功能;3)NoSQL 提供低延时的读写速度,⽀持⽔平扩展,这些特性对拥有海量数据访问请求的

云平台⽽⾔是⾄关重要的。传统关系型数据⽆法提供同样的性能,⽽内存数据库容量有限且不具备扩展能⼒。分布式缓存作为NoSQL 的⼀种重要实现形式,可为云平台提供⾼可⽤的状态存储与可伸缩的应⽤加速服务,与其他NoSQL 系统间并⽆清晰的界限。

平台中应⽤访问与系统故障均具有不可预知性,为了更好地应对这些挑战,应⽤软件在架构时通常采⽤⽆状态设计,⼤量状态信息不再由组件、容器或平台来管理,⽽是直接交付给后端的分布式缓存服务或NoSQL 系统。

Google 的BigTable与Amazon的Dynamo是⾮常成功的商业 NoSQL 实现。⼀些开源的 NoSQL 体系,如Facebook 的Cassandra, Apache 的HBase,也得到了⼴泛认同。

在数字旅游云平台数据中⼼的实现⽅案上,在Hadoop基础上运⾏的HBase,及服务于前端⾼性能查询的ElasticSearch就属于典型的NoSQL。三、Hadoop1.Hadoop简介

Hadoop主要由HDFS、MapReduce和Hbase组成。它是⼀个分布式系统基础架构,由Apache基⾦会开发。⽤户可以在不了解分布式底层细节的情况下开发分布式程序。简单地

说来,Hadoop是⼀个可以更容易开发和运⾏处理⼤规模数据的软件平台。Hadoop实现了⼀个分布式⽂件系统(Hadoop Distributed File System),简称HDFS。HDFS有着⾼容错性(fault-tolerent)的特点,并且设计⽤来部署在低廉的(low-cost)硬件上。⽽且它提供⾼传输率(high throughput)来访问应⽤程序的数据,适合那些有着超⼤数据集(large data set)的应⽤程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)⽂件系统中的数据。

下⾯列举hadoop主要的⼀些特点:1)扩容能⼒(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。