首页 百科知识 基于云计算模式的空间信息服务开发实例

基于云计算模式的空间信息服务开发实例

时间:2022-10-18 百科知识 版权反馈
【摘要】:SQL Azure是其关系数据库,以服务形式提供核心关系数据库功能。本文以Windows Azure为例,说明云计算的存储服务功能。在Windows Azure平台上进行空间信息服务开发,即实现的是在Windows Azure平台上部署空间数据处理功能。Windows Azure与空间信息服务相结合的方法结构图如图12.9所示。地理处理云服务的服务接口采用的是OGC网络处理服务标准。Google的云计算基础设施是在最初为搜索应用提供服务基础上逐步扩展的。应用服务器主要是用于接收来自于外部的Web请求。
基于云计算模式的空间信息服务开发实例_网络地理信息系统

12.4.2 基于云计算模式的空间信息服务开发实例

1.基于Windows Azure平台的开发

Windows Azure服务平台既可被在云端上运行的应用调用,也可被在本地系统运行的应用调用。Windows Azure云平台包括三个组件,分别是Windows Azure,AppFabric,SQL Azure,如图12.8所示。Windows Azure是Windows Azure Platform上运行云服务的底层操作系统,它提供了云服务所需要的所有功能,包括运行环境。AppFabric是平台的中间件引擎,提供访问控制服务和服务总监。SQL Azure是其关系数据库,以服务形式提供核心关系数据库功能。本文以Windows Azure为例,说明云计算的存储服务功能。Windows Azure存储服务由三个重要部分构成:Blob主要存储大型数据,Table主要存储表数据,类似关系数据库中的数据表,Queue主要为异步工作提供分派消息服务。

图12.8 Windows Azure平台

在Windows Azure平台上进行空间信息服务开发,即实现的是在Windows Azure平台上部署空间数据处理功能。Windows Azure与空间信息服务相结合的方法结构图如图12.9所示。

图12.9 Windows Azure和Web Service结合的结构图

传统的地理处理应用程序,一般都是工作在它们自己的独立环境中。实现Windows Azure与空间信息服务相结合的方法是通过AppFabric,AppFabric是平台的中间件引擎,提供访问控制服务和服务总线。Windows Azure平台上的应用有两种角色,一种是Web roles,另一种是Worker roles。Web role应用程序是一种Internet信息服务(IIS)的支持的网络应用程序,可通过使用ASP.NET或Windows通信基础(WCF)来实现。Worker role应用程序负责对Web role进行后台处理。将地理空间分析功能与Windows Azure集合的关键是:Worker role应用程序进行后台处理,然后通过Web role应用程序来暴露Web服务接口。开发Worker和Web应用程序使用Windows Azure API。地理处理云服务的服务接口采用的是OGC网络处理服务(WPS)标准。Windows Azure云平台是通过Mircrosoft Azure存储服务来管理应用程序数据,包括三种存储方式:blobs,tables,queues。最后用户可以使用Windows Azure Fabric在本地对应用程序进行测试和模拟。

以坡度计算为例,实施过程分为如下几步:

(1)创建Web Role和Worker Role的应用程序框架,这个过程需要修改一些配置文件,一个工程中可以有多个Web Role和Worker Role,其中Worker role应用程序进行后台处理,通过Web role应用程序来暴露Web服务接口;

(2)创建数据存储和Web Role和Worker Role之间的消息队列,采用blobs来存储二进制数据,其中的消息队列指的是Web Role和Worker Role之间相互通信的消息;

(3)基于WPS接口规范的WebRole应用程序开发,WPS接口规范涉及三个操作:GetCapabilities,DescribeProcess和Execute;

(4)在Worker Role应用程序中运行用Java语言写的坡度计算程序。

在WPS中,客户端和服务器采用基于XML的通信方式,利用OGC WPS的标准接口规范,通过HTTP Get和Post执行标准操作。Web Role中HTTP请求的处理可以采用ASP.NET中的HTTP handler,通过调用ProcessRequest方法处理WPS的请求,并基于XML返回执行结果。图12.10在Web浏览器中显示了基于HTTP Get的WPS坡度计算功能调用,其中,输入和输出数据在Geomatica FreeView软件中打开后贴在浏览器拷屏的两侧。

2.基于Google App Engine平台的开发

Google的云计算基础设施是在最初为搜索应用提供服务基础上逐步扩展的。Google App Engine提供一整套开发组件来让用户轻松地在本地构建和调试网络应用,之后能让用户在Google强大的基础设施上部署和运行网络应用程序,并自动根据应用所承受的负载来对应用进行扩展,并免去用户对应用和服务器等的维护工作。同时提供大量的免费额度和灵活的资费标准。

Google App Engine主要由5个部分组成(图12.11),分别是应用服务器、Datastore、服务、管理界面和本地开发环境(吴朱华,2010)。应用服务器主要是用于接收来自于外部的Web请求。Datastore主要用于对信息进行持久化,它提供了一整套强大的分布式数据存储和查询服务,并能通过水平扩展来支撑海量的数据,主要以“Entity”的形式存储数据,Datastore是基于Google的大规模分布式数据库BigTable技术。服务:Google App Engine提供了一组应用程序接口(API),主要包括datastore API、images API、mail API、memcache API、URL letch API和user API。用户可以在应用程序中使用这些接口来访问Google提供的空间、数据库存储、E-mail和memcache等服务。管理界面主要用于管理应用并监控应用程序的运行状态,比如,消耗了多少资源,发送了多少邮件和应用运行的日志等。本地开发环境主要是帮助用户在本地开发和调试基于GAE的应用,包括用于安全调试的沙盒,SDK和IDE插件等工具。

图12.10 Windows Azure上部署的WPS服务执行结果图

图12.11 Google App Engine平台

在Google App Engine平台上进行空间信息服务开发,即是要在App Engine平台上部署空间数据处理功能。以坡度计算为例,实施过程分为如下几步:

(1)创建项目,即为所开发的项目创建目录结构,包括Java源文件以及编译类和其他应用程序文件、库、配置文件、静态文件及其他数据文件的war包;

(2)创建运行基于WPS接口规范的坡度计算的Serlvet应用程序;

(3)注册App Engine账号以及使用GAE自带上传工具将应用部署到平台上;

(4)在管理界面中启动这个应用,并利用管理界面来监控整个应用的运行状态和资费。

3.Windows Azure与Google App Engine的比较

虽然Windows Azure和Google App Engine都属于云计算平台,都有着动态的和可扩展的、按需收费、面向海量信息处理、形态灵活等特点,并且都有用于帮助用户在本地开发和调试应用程序的本地开发环境,但两者之间仍然有很多不同点。

两个平台的基础架构模式不同:Google将四大基础架构(GFS、MapReduce、分布式锁机制、BigTable)整合成为统一的计算平台,主要提供平台API服务以及一系列网络应用服务,Azure是由一个公共平台上的多种不同服务组成的,例如Windows Azure,AppFabric,SQL Azure(王佳隽等,2010)。

两个平台存储数据的方式不同:Windows Azure平台使用Blob、Table、Queue来存储数据,其中Queue用来存储Web Role与Worker Role之间通信的消息,而App Engine采用大规模分布式数据库(BigTable)来存储数据,并且鼓励数据持久化(Persistence),充分利用了Google独有的技术优势和强大的网络计算能力。

两个平台针对的用户不同:Google针对的是那些使用Python和JAVA并喜欢与网络协议打交道的人,而Microsoft的Azure产品则直接瞄准Microsoft开发人员。相比而言,微软对Java的支持还不是很好,所以一般的Java开发用Google App Engine。又因为App Engine提供Python,如果用户想要一个方便的Python解决方案,Google App Engine是首选。但如果是Microsoft的拥护者,那么选择Azure。

App Engine软件运行在沙盒中,可以提供有限的底层操作系统的访问。出于服务和安全原因,JVM在安全的“沙盒”环境中运行以隔离用户的应用程序(Google,2011)。沙盒确保了应用程序仅执行不影响其他应用程序的性能和可伸缩性的操作,但阻止了一些基本的操作,如写磁盘或打开网络socket。在Azure中,没有对操作系统的直接访问,也不能直接访问运行在OS之上的软件,Azure在NET的运行时环境下运行类似IIS的Web服务,所以没有Google环境下那么多限制,例如可以读写磁盘中的文件。

另外,与Azure相比较,Google App Engine还有如下优点:GAE提供了新的安全数据连接器(Secure Data Connector,SDC),为企业在GAE中使用自己的数据、网络服务和SOA提供了一个安全的通道,而不需要将数据移动到云中;因为GAE内置了Cron支持,所以可以同时支持请求/响应模型和后台处理,满足了强大的企业级应用需要,因为后台处理常用于完成比如备份、生成报告、异步处理等重要的任务。Google提供易用性和高度自动化的配置,如果使用App Engine,只需编写代码,上传应用程序,剩下的大部分事情可以让Google来完成。而Azure则以一种完全不同的方式实现云计算,Azure提供的是类似操作系统级别的服务,虽然可以使用其他的servlet容器,但要做一些配置。

总之,Google利用了其对于大型数据库的研究成果并借助其内部的开发方法创建了一个强大但略显局限的环境。而Microsoft凭借其在开发者方面的传统强势与其宽泛的工具集提供了庞大的一系列服务(Miller,2008)。

随着云计算等相关技术的不断壮大、发展,其前景值得乐观,但云计算遇到的挑战也日益显著,云计算领域尚存在大量的开放性问题有待进一步研究和探索。首先云计算目前还没有一个统一的标准,其次在用户数据安全方面也存在很多隐忧,因为用户数据存储在云端,如何保证用户的数据不被非法访问和泄露是系统必须要解决的重要问题,虽然数据编码是解决方式之一,但是大大增加了云计算的复杂性,增加了数据编码、解码、计算的时间和成本。这就需要云提供商对云计算平台进行控制和管理,对云用户进行认证,在一定程度上降低不法分子对敏感数据的传播。最后云计算系统之间的互操作也是一个必须要考虑的问题。例如一个云系统怎样可以使用另外一个云系统的计算资源,从而实现云系统之间自动交互性(张建勋等,2010)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈