走微服务之路-第2部分

在我以前的文章中 ,我用几行代码开发了一个基于Spring Boot的简单微服务REST应用程序。 现在是时候将该应用程序放在云中了。 在本文的其余部分中,我想您已经为提供者配置了一个帐户。

关键云铸造厂

Pivotal Cloud Foundry是Pivotal的基于Cloud Foundry的云产品。 通过注册,您可以获得60天的免费试用期,我很乐意使用。

Pivotal CF需要本地可执行文件才能推送应用程序。 每个主要平台(Windows,Mac,Linux deb和Linux rpm)都有一个这样的可执行文件。 安装后,它需要使用与Pivotal CF帐户相同的凭据进行身份验证。

要进行推送,可以使用cf push命令。 该命令至少需要应用程序名称,可以在命令行cf push myapp或通过manifest.yml文件中提供。 如果没有提供清单,则每个文件(从命令启动位置)都将递归地推送到云中。 但是,在这种情况下,Pivotal CF将无法理解应用程序的格式。 让我们明确一点,在manifest.yml中提供名称和可执行JAR的路径:

---
applications:
-name:product
    path:target/microservice-sample.jar

注意,我没有将版本放在JAR名称中。 默认情况下,Maven将只通过应用程序资源并通过Spring Boot插件生成标准JAR,这是一个胖JAR,其中包含所有必要的库。 最后的JAR是要推到Pivotal CF的JAR。 这需要对POM进行调整,以删除其中的版本名称:

<plugin>
  <groupId> org.springframework.boot </groupId>
  <artifactId> spring-boot-maven-plugin </artifactId>
  <configuration>
    <finalName> ${project.artifactId} </finalName>
  </configuration>
</plugin>

此时调用cf push会将胖的JAR推送到PivotalCF。 输出应显示如下内容:

Using manifest file /Volumes/Data/IdeaProjects/microservice-sample/manifest.yml
Updating app product in org frankel / space development as [email protected]
OK
Uploading product...
Uploading app files from: /Volumes/Data/IdeaProjects/microservice-sample/target/microservice-sample.jar
Uploading 871.1K, 109 files
Done uploading
OK
Stopping app product in org frankel / space development as [email protected]
OK
Starting app product in org frankel / space development as [email protected]
-----> Downloaded app package (26M)
-----> Java Buildpack Version: v3.2 | https://github.com/cloudfoundry/java-buildpack.git=3b68024
-----> Downloading Open Jdk JRE 1.8.0_60 from
       https://download.run.pivotal.io/openjdk/trusty/x86_64/openjdk-1.8.0_60.tar.gz (0.9s)
       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.0s)
-----> Downloading Open JDK Like Memory Calculator 2.0.0_RELEASE from
       https://download.run.pivotal.io/memory-calculator/trusty/x86_64/memory-calculator-2.0.0_RELEASE.tar.gz (0.0s)
       Memory Settings: -XX:MetaspaceSize=104857K -Xmx768M -XX:MaxMetaspaceSize=104857K -Xss1M -Xms768M
-----> Downloading Spring Auto Reconfiguration 1.10.0_RELEASE from
       https://download.run.pivotal.io/auto-reconfiguration/auto-reconfiguration-1.10.0_RELEASE.jar (0.0s)
-----> Uploading droplet (71M)
0 of 1 instances running, 1 starting
1 of 1 instances running
App started
OK
App product was started using this command
 `CALCULATED_MEMORY=$($PWD/.java-buildpack/open_jdk_jre/bin/java-buildpack-memory-calculator-2.0.0_RELEASE
 -memorySizes=metaspace:64m.. -memoryWeights=heap:75,metaspace:10,native:10,stack:5
 -memoryInitials=heap:100%,metaspace:100%
 -totMemory=$MEMORY_LIMIT) && SERVER_PORT=$PORT $PWD/.java-buildpack/open_jdk_jre/bin/java
 -cp $PWD/.:$PWD/.java-buildpack/spring_auto_reconfiguration/spring_auto_reconfiguration-1.10.0_RELEASE.jar
 -Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh $CALCULATED_MEMORY
 org.springframework.boot.loader.JarLauncher`
Showing health and status for app product in org frankel / space development as [email protected]
OK
requested state: started
instances: 1/1
usage: 1G x 1 instances
urls: product.cfapps.io
last uploaded: Sun Sep 27 09:05:49 UTC 2015
stack: cflinuxfs2
buildpack: java-buildpack=v3.2-https://github.com/cloudfoundry/java-buildpack.git=3b68024 java-main
             open-jdk-like-jre=1.8.0_60 open-jdk-like-memory-calculator=2.0.0_RELEASE
             spring-auto-reconfiguration=1.10.0_RELEASE
     state     since                    cpu    memory         disk           details
=0   running   2015-09-27 11:06:35 AM   0.0%   635.5M of 1G   150.4M of 1G

通过修改后的配置,Pivotal CF能够检测到它是Java Spring Boot应用程序并进行部署。 现在可以通过https://product.cfapps.io/products进行访问!

但是,此应用程序并未反映实际情况,因为它仍使用h2嵌入式数据库。 让我们将数据库与应用程序解耦,但仅当在云中时才应如此,因为h2仍应在本地使用。

第一步是在Pivotal CF中创建一个新的数据库服务。 这里没有什么花哨的,因为使用了JPA,我们将使用标准的SQL数据库。 市场上提供了ClearDB MySQL服务,免费提供了SparkDB。 让我们为我们的应用程序创建一个新实例,并为其指定一个相关名称(本例中为mysql-service )。 可以在Pivotal CF GUI中或通过命令行完成。

第二步是将服务绑定到应用程序,也可以通过清单或在manifest.yml中声明它来实现。

第三步是实际使用它,并且借助Pivotal CF自动重新配置功能,此时无需执行任何操作 ! 在部署期间,平台将对应用程序进行内部检查,并用一个包装MySQL数据库的数据库替换现有的h2数据源。 可以通过检查执行器来断言(前提是已将其添加为依赖项)。

这是用于将Spring Boot应用程序推送到Pivotal CF的。 下周,让我们部署到Heroku来检查是否有任何差异。

这篇文章的完整源代码可以在Github上找到。

翻译自: https://blog.frankel.ch/going-the-microservices-way/2/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值