欢迎来到论文网! 识人者智,自知者明,通过生日认识自己! 生日公历:
网站地图 | Tags标签 | RSS
论文网 论文网8200余万篇毕业论文、各种论文格式和论文范文以及9千多种期刊杂志的论文征稿及论文投稿信息,是论文写作、论文投稿和论文发表的论文参考网站,也是科研人员论文检测和发表论文的理想平台。lunwenf@yeah.net。
您当前的位置:首页 > 科技论文 > 计算机论文

基于Google云的日程管理云服务的研究与实现

时间:2011-04-23  作者:秩名

论文导读:而云计算这一模式。本文涉及的日程管理作为在线规划和任务管理的一种服务。是Google开发的Java、Python、C++编程工具。云计算,基于Google云的日程管理云服务的研究与实现。
关键词:云计算,GoogleAppEngine,日程管理,Python,虚拟存储
 

1引言

互联网或许未来即将转变为“互联云”。论文写作,云计算。对于高校教育,无论是日常办公教学科研或是各种基础设施的软硬件投入都需大量资金投入,而云计算这一模式,无论是有形的IT基础设施、计算资源、存储资源还是无形的服务能力等都将带给我们这些资源的分享和能力互补。如果高校的信息化建设能开拓利用好云资源,必将使各方建设抢得先机从而获取低投入高产出的可观效益,同时有效提升教学与科研建设发展。

本文涉及的日程管理作为在线规划和任务管理的一种服务,是个人和商业计算任务最常用的日程安排手段和工具。举例,学校需要协调某些活动或会议安排时,预先要做一大堆工作,当试图找出某一天哪些人员有时间空闲,哪些人当天有事情时,就需要一个统筹协调。如何才能兼顾诸多人员或是活动日程安排等,就需要一个基于web的共享式日程管理服务,而这个日程管理服务也就是最好在云端。此文中的日程管理,是基于Google的云平台完全自定义开发。

2 Google云计算平台体系架构

Google的云计算平台能实现大规模分布式计算和应用服务程序,平台包括MapReduce分布式处理技术、Hadoop框架、分布式的文件系统GFS、结构化的BigTable存储系统以及Google其他的云计算支撑要素。现有的云计算通过对资源层、平台层和应用层的虚拟化以及物理上的分布式集成,将庞大的IT资源整合在一起。更重要的是,云计算不仅仅是资源的简单汇集,提供了一种管理机制,让整个体系作为一个虚拟的资源池对外提供服务,并赋予开发者透明获取资源、使用资源的自由。

2.1 MapReduce分布式处理技术

MapReduce是Google开发的Java、Python、C++编程工具,用于大规模数据集(大于1TB)的并行运算。一种分布式运算技术,简化的分布式编程模式,适合用来处理大量数据的分布式运算,用于解决问题的程序开发模。论文写作,云计算。MapReduce模式的思想是将要执行的问题拆解成Map(映射)和Reduce(化简)的方式,先通过Map程序将数据切割成不相关的区块,分配(调度)给大量计算机处理达到分布运算的效果,再通过Reduce程序将结果汇整,输出开发者需要的结果。

MapReduce的软件实现是指定一个Map(映射)函数,把键值对(key/value)映射成新的键值对(key/value),形成一系列中间形式的key/value对,然后把它们传给Reduce(化简)函数,把具有相同中间形式key的value合并在一起. map和reduce函数具有一定的关联性。 在 Map过程中将数据并行,即把数据用映射函数规则分开,而Reduce则把分开的数据用化简函数规则合在一起,也就是说Map是一个分的过程,Reduce则对应着合。MapReduce应用广泛,包括简单计算任务、海量输入数据、集群计算环境等,如分布grep、分布排序、单词计数、Web连接图反转、每台机器的词矢量、Web访问日志分析、反向索引构建、文档聚类、机器学习、基于统计的机器翻译等。

2.2 Hadoop架构

Hadoop框架用于实现MapReduce 算法,能够把应用程序分割成许多很小的工作单元,每个单元可以在任何集群节点上执行或重复执行。Hadoop 框架具有高容错性及对数据读写的高吞吐率,能自动处理失败节点。

2.3 分布式文件系统GFS

分布式文件系统GFS(Googlefile system),是一个可扩展、结构化、具备日志的分布式文件系统,支持大型、分布式大数据量的读写操作,其容错性较强。

2.4 分布式数据库(BigTable)

BigTable是Google公司基于自己网络结构而研发的互联网数据库。论文写作,云计算。是一个有序、稀疏、多维度的映射表,有良好的伸缩性和高可用性,用来将数据存储或部署到各个计算节点上,从而达到最终存储结构上的优化。

2.5 Google云计算执行过程

在Google云平台架构中MapReduce API提供Map和Reduce处理、GFS分布式文件系统和BigTable分布式数据库提供数据存取。基于Hadoop可以非常轻松和方便完成处理海量数据的分布式并行程序,并运行于大规模集群上。整个云计算执行过程包括以下几个步骤:

(1)将要执行的MPI程序复制到Hadoop框架中的Master和每一台Worker机器中。

(2)Master选择由哪些Worker机器来执行Map程序与Reduce程序。

(3)分配所有数据区块到执行Map程序的Worker机器中进行Map(切割成小块数据)。

(4)将Map后的结果存入Worker机器。

(5)执行Reduce程序的Worker机器,远程读取每一份Map结果,进行混合、汇整与排序,同时执行Reduce程序。

(6)将结果输出给用户(开发者)。

在云计算中为了保证计算和存储等操作的完整性,充分利用MapReduce的分布和可靠特性,在数据上传和下载过程中根据各Worker节点在指定时间内反馈的信息判断节点的状态是正常还是死亡,若节点死亡则将其负责的任务分配给别的节点,确保文件数据的完整性。

3 GAE部署与实现日程管理云服务

谷歌应用引擎(Google App Engine)是一个由Python应用服务器群、BigTable数据库访问及GFS数据储存服务组成的云服务开发平台,为开发者提供一体化的主机服务器集群及可自动升级的在线应用服务。利用它计算云,实现引擎应用易于构建、维护和扩展。利用谷歌的API和Python编程语言开发应用并将它上传到应用引擎云里以便服务于需要的用户。

3.1 开发环境准备:

利用Google帐号,申请注册Google App Engine建立自己所需的应用。同时下载安装Python以及GAE的开发包。

云计算

图1 申请注册GAE

填写 Application Identifier和 Application Title,其中Application Identifier 输入设想的应用程序地址,如此处的sd-calendar,相应就会得到一个 sd-calendar.appspot.com的日程管理云服务应用网址。点击save 即完成创建。

云计算

图2 GAE设置

3.2 日程管理云服务应用代码设计:

编译app.yaml文件,将相应application设置为 sd-calendar。以下即为日程管理服务实现的核心代码片段:

class MyCalendar(webapp.RequestHandler):

def get(self):

template_values={}

path =os.path.join(os.path.dirname(__file__), os.path.join('views','mycalendar.htm'))

html=template.render(path, template_values)

self.response.out.write(html)

classGetCalViewData(webapp.RequestHandler):

def post(self):

showday=datetime.datetime.strptime(self.request.get('showdate'),'%Y-%m-%d')

clientzone=int(self.request.get('timezone'))

viewtype=self.request.get('viewtype')

serverzone =0-time.timezone/3600

zonediff = serverzone -clientzone;

viewdate =calendar_view_date_range(viewtype,showday,1)

qstart =addtime(viewdate.start_day,h=zonediff)

qend =addtime(viewdate.end_day,h=zonediff)

dao = resp()

callist =dao.query_calendars(qstart,qend)

jsondata =build_json_calendar_viewdata(qstart,qend,callist,True,None,zonediff)

self.response.headers['Content-Type']='application/json'

self.response.out.write(simplejson.dumps(jsondata,cls=DatetimeJSONEncoder))

classQuickAddCal(webapp.RequestHandler):

defpost(self):

try:

c = Calendar()

c.subject=self.request.get('CalendarTitle') c.start_time=datetime.datetime.strptime(self.request.get('CalendarStartTime'),'%Y-%m-%d%H:%M')

c.end_time=atetime.datetime.strptime(self.request.get('CalendarEndTime'),'%Y-%m-%d%H:%M')

##c.start_time_stamp = get_date_stamp(c.start_time)

##c.end_time_stamp = get_date_stamp(c.end_time)

c.calendar_type =1

c.category =-1

c.is_all_day_event = self.request.get('IsAllDayEvent')=='1'

c.time_zone = int(self.request.get('timezone'))

dao = resp()

newid=dao.save_calendar(c)

msg={'IsSuccess':True,'Msg':'操作成功!','Data':str(newid)}

 

查看相关论文专题
加入收藏  打印本文
上一篇论文:基于GIS的交互式数据可视化系统的设计与应用
下一篇论文:基于Hibernate和Struts的J2EE应用开发(图文)
科技论文分类
科技小论文 数学建模论文
数学论文 节能减排论文
数学小论文 低碳生活论文
物理论文 建筑工程论文
网站设计论文 农业论文
图书情报 环境保护论文
计算机论文 化学论文
机电一体化论文 生物论文
网络安全论文 机械论文
水利论文 地质论文
交通论文
相关计算机论文
最新计算机论文
读者推荐的计算机论文