在Spring中调用CLOUD FOUNDRY:基础知识
2019-02-28 来源:多智时代
Cloud Foundry提供的服务使编写高效率的应用程序成为了可能。开发人员现在只需要选择所需要的服务,并不用关心服务的运营。例如应用中事务性访问起决定作用的部分可以使用Postgres,需要与文档集合数据进行交互的可以使用MongoDB,需要使用键-值抽象的可以使用Redis,需要使用消息创建有效架构的可以使用RabbitMQ。在该系列的四篇文章当中,我们将研究Spring应用如何调用Cloud Foundry服务。尽管我们只Spring,但是使用其他框架的开发者,尤其是使用基于JVM框架(Grails, Lift以及普通的Java Web框架)的开发者也能从该系列文章获益。
在本文中,我们将研究Cloud Foundry如何向应用程序公开服务信息。在下一篇文章当中,我们将描述一个典型的Spring应用如何使用自动重新配置机制,允许我们在不用做任何修改的情况下使用服务。在第三篇文章中,Thomas Risberg将继续讲解如何使用云命名空间对服务消费进行控制。在第四篇文章中,Scott Andrews将介绍在Spring 3.1中如何整合配置文件支持以及云命名空间,创建应用,对服务进行显示控制,与此同时应用可以不做任何改变,继续在本地或Cloud Foundry中运行。读完本系列的四篇文章之后,你应该能够获取和Spring应用高效调用Cloud Foundry服务相关的足够多的信息。
当在应用中绑定了Cloud Foundry服务比如Postgres或Mongo后,和绑定服务有关的信息比如主机,端口以及证书通过采用JSON进行编码的环境变量进行公开。为了说明这一点,我们将创建一个简单的Web应用,显示所有的环境变量信息。让我们从Spring MVC模板项目开始,然后在HomeController中添加下一个端点。
▲
接下来就是部署这个应用了。我将使用vmc工具,当然也可以使用带有Cloud Foundry插件的STS。需要注意的是我使用的应用程序名是hello-env,默认的URL也是基于该程序名的(hello-env.cloudfoundry.com)。如果按照上述步骤编写代码,你会想选择将默认的URL作为应用名,因为该URL并未被占用。当然,你也可以将应用部署到Micro Cloud Foundry上。
▲
创建应用: OK
上传应用:
检查可用的资源: OK
进行资源处理: OK
打包应用: OK
上传 (8K): OK
推送状态: OK
保存应用: OK
启动应用: OK
这时,如果你浏览http://hello-env.cloudfoundry.com/env页面,将会看到所有环境变量的信息。很多环境变量的名字以VCAP_开头,显示有关该应用各种各样的信息。我们感兴趣的是VCAP_SERVICES变量,其内容如下:VCAP_SERVICES: {}
该变量的映射为空,表明还没有绑定服务。让我们创建一个Postgres服务,命名为env-postgresql,并与应用进行绑定。请注意该命令的格式为:vmc create-service
$ vmc create-service postgresql env-postgresql hello-env
创建服务: OK
绑定服务: OK
停止应用: OK
保存应用: OK
启动应用: OK
现在,浏览http://hello-env.cloudfoundry.com/env页面,你将会看到VCAP_SERVICES环境变量的值如下所示(为了方便阅读,对格式进行了调整):
▲
上述信息包括了和应用绑定服务相关的所有信息:主机,端口,创建的JDBC URL的名字以及用户名和密码。
让我们继续绑定另一个服务MongoDB。
$ vmc create-service mongodb env-mongodb hello-env
现在环境变量的值如下所示:
▲
MongoDB部分再次包括了与绑定服务相关的所有信息。
Cloud Foundry向应用程序展示信息的机制就是这样,这样一来应用就能够调用与之绑定的服务了。进行服务绑定时需要访问环境变量,解析JSON,创建访问对象(比如针对关系型数据库的 DataSource)。尽管不是很困难,但是程序员并不想直接处理这些东西。因此,Cloud Foundry提供了一些简化服务连接的机制。在下一篇文章中我们会进行介绍。
在下一篇文章当中,将介绍自动重新配置机制,该机制不用对典型的Spring应用进行任何的修改就可以实现服务调用。
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。