Welcome 微信登录

首页 / 软件开发 / JAVA / 使用Spring Boot构建RESTful Web服务以访问存储于Aerospike集群

使用Spring Boot构建RESTful Web服务以访问存储于Aerospike集群2014-05-29 infoq/Peter Milne 译:张卫滨Spring Boot是对Spring快速入门的强大工具。Spring Boot能够帮助你很容易地构建基于Spring的应 用。 Aerospike是分布式和可复制的内存数据库,不管使用DRAM还是原生的flash/SSD,Aerospike都进行 了优化。 Aerospike具有高可靠性并且遵循ACID。开发人员能够在不停止数据库服务的情况下,很快地将 数据库集群从两个节点扩展到二十个节点。

你所要构建的是什么

本文将会引领你使用Spring Boot创建一个简单的RESTful Web服务。 要构建的服务接受一个HTTP GET 请求。它的响应是如下的JSON:

{"expiration":121023390,"bins":{"DISTANCE":2446,"DEST_CITY_NAME":"New York","DEST":"JFK","YEAR":2012,"ORI_AIRPORT_ID":"14679","DEP_TIME":"802","DAY_OF_MONTH":12,"DEST_STATE_ABR":"NY","ORIGIN":"SAN","FL_NUM":160,"CARRIER":"AA","ORI_STATE_ABR":"CA","FL_DATE":"2012/01/12","AIR_TIME":291,"ORI_CITY_NAME":"San Diego","ELAPSED_TIME":321,"ARR_TIME":"1623","AIRLINE_ID":19805},"generation":1}
这里所使用的数据是商业上的飞行航班详情(包含在样例代码中,这是一个名为flights_from.csv的 数据文件,它包含了大约一百万条航班信息)。

在产品化(或其他)环境中,还会有很多内置的特性添加到应用中以管理服务。这个功能来源于 Spring,参见Spring指导:Building a RESTful web service。

你所需要的是什么

喜欢的文本编辑器或IDE

JDK 7或更高版本

Maven 3.0+

Aerospike Java SDK 3.0+

搭建工程

在构建应用的时候,你可以使用任何喜欢的构建系统,不过在这里提供了Maven的代码。如果你不熟悉 Maven的话,请参考Spring指导:Building Java Projects with Maven。

你还需要构建并安装Aerospike的Java客户端到本地Maven仓库之中。下载源码发布版本,将其进行进 行unzip/untar并运行如下的Maven命令:

mvn install:install-file -Dfile=client/depends/gnu-crypto.jar -DgroupId=org.gnu - DartifactId=gnu-crypto -Dversion=2.0.1 -Dpackaging=jar

mvn clean

mvn package

创建目录结构

在你选择的工程之中,创建如下所示的子目录结构:

->src ->main ->java ->com ->aerospike ->client ->rest

创建Maven的pom文件

在工程的根目录下创建一个maven的pom.xml,其代码如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.aerospike</groupId><artifactId>aerospike-restful-example</artifactId><version>1.0.0</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>0.5.0.M4</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Aerospike client. --><dependency><groupId>com.aerospike</groupId><artifactId>aerospike-client</artifactId><version>3.0.9</version></dependency><!-- Apache command line parser. --><dependency><groupId>commons-cli</groupId><artifactId>commons-cli</artifactId><version>1.2</version></dependency></dependencies><properties><start-class>com.aerospike.client.rest.AerospikeRESTfulService</start-class></properties><build><plugins><plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> </plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>http://repo.spring.io/libs-snapshot</url><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories> <pluginRepository><id>spring-snapshots</id><name>Spring Snapshots</name><url>http://repo.spring.io/libs-snapshot</url><snapshots><enabled>true</enabled></snapshots> </pluginRepository></pluginRepositories></project>