【发布时间】: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>
我的问题如下:
- 我们是否有工具链示例来处理这种不同的 JDK 编译问题,而且我们是否总是必须提供 JDK 本地安装路径?
- 如何在 Heroku 上部署它,它如何知道我的 jdk12 在哪里,或者只是在 pom 中定义源/目标版本就可以在云上解决问题,Heroku 也支持 jdk12 或谷歌云?
- 多仓库或单仓库部署是个好主意吗?我仍然可以更改,但我喜欢这种方式。
- 我知道我需要为我的每个微服务创建 docker 映像,但有人首先在本地提供了一个教程,或者一些 GitHub 存储库,以便我可以查看一些示例。
- 在每个微服务中添加所有这些文档后,这是否足以部署其生产级别?我阅读了很多关于 APIGateway、负载均衡器......它们适合我的架构的内容。
- 我还在任何地方都使用 localhost 作为 EurekaServer 和 Eureka/Feign 客户端属性,它在云上的工作方式是否也相同,并且 Eureka 服务器将能够像在本地一样找到我的所有服务,而无需在云上进行配置更改?
- 谷歌云和 Heroku 哪个更好,谷歌云现在似乎有点麻烦。
这是我的烦恼,请指教。
【问题讨论】:
-
你有很多不相关的问题。这里我的 cmets 在其中一些。2.在 heroke 中,你应该为 java 版本提供一个配置,但它不使用你的本地 jdk。 3. 如果你真的想拥有微服务,每个组件都应该有自己的构建、发布、扩展生命周期。这意味着它们应该尽可能地被隔离。这就是为什么我建议使用没有任何共享 pom 配置或任何东西的单独存储库。 4. 对于heroku,你不需要docker。
标签: maven heroku microservices toolchain