当前位置:文档之家› 软件开发常用技术介绍

软件开发常用技术介绍

软件开发技术实现要点介绍一、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 python daemons)。

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-registry and 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)硬件上。

相关主题