走上微服务之路——第 3 部分

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

在本系列的 第一篇文章 中,我创建了一个基于 Spring Boot + Data JPA 堆栈的简单微服务,以 JSON 格式显示可用产品列表。在 第二部分 中,我演示了如何将此应用程序上传到 Pivotal Cloud Foundry。在本文中,我将演示在 Heroku 上部署所需的更改。

英雄库

至于 PCF,Heroku 需要一个本地专用应用程序。对于 Heroku,它称为 Toolbelt。安装后,需要通过工具带登录自己的帐户:


 heroku login

下一步是在 Heroku 上创建应用程序。 Cloud Foundry 和 Heroku 之间的主要区别在于,前者部署现成的二进制文件,而 Heroku 从源代码构建它们。创建 Heroku 应用程序还将创建一个要推送到的远程 Git 存储库,因为 Heroku 使用 Git 来管理代码。


 heroku login

 heroku login

heroku create 命令还通过添加新的 heroku remote 来更新 .git 配置。让我们推送到远程存储库:


 heroku login

此时,需要告诉 Heroku 如何启动新建的应用程序。这是通过位于项目根目录的 Procfile 完成的。它应该包含对 Heroku 的提示,表明我们正在使用 Web 应用程序——可通过 http(s) 和标准 Java 命令行访问。此外,Web 端口应绑定一个 Heroku 记录的环境变量:


 heroku login

该应用程序尚未运行,因为日志会告诉您。要显示远程日志,请键入:


 heroku login

应该有这样的东西:


 heroku login

这暗示需要一个 web 节点,或者用 Heroku 的说法,一个 dyno。让我们开始一个:


 heroku login

该应用程序现在应该可以在 https://salty-harbor-2168.herokuapp.com/products 上运行(您应该耐心等待,因为它是一个免费计划,该应用程序可能正在休眠)。然而,仍然缺少一些东西:它仍然在嵌入式 H2 数据库上运行。我们应该切换到更具弹性的数据库。默认情况下,Heroku 免费提供 PostgreSQL 开发数据库。可以通过用户界面或命令行创建这样的数据库。

Spring Boot 文档描述了 Spring Cloud 连接器 库。它能够自动检测应用程序是否在 Heroku 上运行,并创建绑定到 Heroku 提供的 Postgres 数据库的数据源。然而,尽管我尽了最大的努力,我还是没能完成这项工作,每次都会遇到以下问题:


 heroku login

是时候发挥一点创意了。让我们显式地配置它,而不是嗅探数据库及其配置。这需要为 Heroku 创建一个专用的配置文件配置属性文件 src/main/resources/application-heroku.yml


 heroku login

您可以在 Heroku 用户界面中找到确切的数据库连接设置。请注意方言似乎是必需的。此外,应该更新 POM 以将 Postgres 驱动程序添加到依赖项中。

最后,要激活 Heroku 上的配置文件,请将 Procfile 更改为:


 heroku login

再次提交并推送到 Heroku,应更新应用程序以使用提供的 Postgres。

下周,我将创建一个新的购物袋微服务,它依赖于这个微服务并针对失败进行设计。

相关文章