【问题标题】:Maven toolchain and heroku/cloud deploymentMaven 工具链和 Heroku/云部署
【发布时间】:2021-01-09 16:15:21
【问题描述】:

这将是一个广泛的话题,所以请多多包涵。所以我开始构建一个微服务应用程序作为一种爱好,现在在我投入其中的几个月里,我做了一些有用的东西。所以,到目前为止,我在 Maven 和 Eureka 客户端中使用了 STS(spring 工具)。 我有一个相互通信的独立微服务和一个向您展示结果的 UI 微服务。这是一个单页应用程序,我将制定结构(GitHub repo 也一样):

--my-app
  --my-microservice-discovery
  --my-microservice-domain (jdk12)
  --my-microservice-searcher
  --my-microservice-orchestrator
  --my-microservice-ui
  --my-transferobjects (common jar not microservice)
  --pom.xml (my main module pom)

所以,这就是我在 GitHub 中处理的内容,我创建了一个包含所有这些 Spring Boot 项目的 my-app 存储库,在 IDE 中一切正常,现在是一些云提供商的部署部分。我选择 Heroku 是因为我过去有一些经验,但也因为我无法与 Google 合作(尽管他们现在有一个有吸引力的入门计划)。从 Google Cloud 构建连接到私有 GitHub 存储库很痛苦,但 Heroku 这样做很有风格。

我决定使用命令行,因为这就是我必须在云上处理的方式,这就是一切都崩溃的地方,我在 IDE 管理良好但尚未为 maven 正确定义的 JDK 版本之间遇到了很多依赖关系问题。

我仍然设法使我的本地构建成功(命令行),但我必须做一些硬代码配置来修复 jdk12 为 my-microservice-domain pom 如下所示和类似修复 my-transfer 对象,但因为龙目岛问题不知道为什么我必须专门为这个项目提供 jdk8。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>12</source>
                <target>12</target>
                <executable>/home/Downloads/jdk-12</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

我的问题如下:

  1. 我们是否有工具链示例来处理这种不同的 JDK 编译问题,而且我们是否总是必须提供 JDK 本地安装路径?
  2. 如何在 Heroku 上部署它,它如何知道我的 jdk12 在哪里,或者只是在 pom 中定义源/目标版本就可以在云上解决问题,Heroku 也支持 jdk12 或谷歌云?
  3. 多仓库或单仓库部署是个好主意吗?我仍然可以更改,但我喜欢这种方式。
  4. 我知道我需要为我的每个微服务创建 docker 映像,但有人首先在本地提供了一个教程,或者一些 GitHub 存储库,以便我可以查看一些示例。
  5. 在每个微服务中添加所有这些文档后,这是否足以部署其生产级别?我阅读了很多关于 APIGateway、负载均衡器......它们适合我的架构的内容。
  6. 我还在任何地方都使用 localhost 作为 EurekaServer 和 Eureka/Feign 客户端属性,它在云上的工作方式是否也相同,并且 Eureka 服务器将能够像在本地一样找到我的所有服务,而无需在云上进行配置更改?
  7. 谷歌云和 Heroku 哪个更好,谷歌云现在似乎有点麻烦。

这是我的烦恼,请指教。

【问题讨论】:

  • 你有很多不相关的问题。这里我的 cmets 在其中一些。2.在 heroke 中,你应该为 java 版本提供一个配置,但它不使用你的本地 jdk。 3. 如果你真的想拥有微服务,每个组件都应该有自己的构建、发布、扩展生命周期。这意味着它们应该尽可能地被隔离。这就是为什么我建议使用没有任何共享 pom 配置或任何东西的单独存储库。 4. 对于heroku,你不需要docker。

标签: maven heroku microservices toolchain


【解决方案1】:

好的,我将回答我自己的问题,我做了一些阅读以及上面@cool 建议的内容,最终我采用了多个存储库的方式,并实现了所需的内容。 我也选择 Heroku 只是因为那里的事情感觉就像我的本地环境一样简单,而且像我这样的简单应用程序在最新的二进制文件上没有任何问题。 我点击了几个链接来设置我的 Eureka serverclientProcfile 以及来自仪表板的应用程序设置页面的一些环境变量 direcrlt。 不用说,我还维护了多个配置文件(dev、prod、test),对于 ui,我使用 vaadin,因此在你的 UI 应用程序 pom.xml 中需要一些额外的步骤来进行生产。

我有点担心我的服务被终止的方式,因为 heroku 上没有任何活动,而且现在还有服务发现问题。所以我的尤里卡服务器报告>所有实例,但它们无法相互联系。

现在我正忙于其他事情[即。修复错误],因为发布是一个月后。我很快就会发布一个关于这个的问题;)。

【讨论】:

    猜你喜欢
    • 2012-12-09
    • 2013-08-13
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2011-12-26
    • 2021-01-18
    • 2012-09-28
    • 1970-01-01
    相关资源
    最近更新 更多