春天的靴子和Jhipster具有反应性微服务?

1+

了解如何创建带有春靴,春天云网关,春云Config,Spring WebFlux,Java和Jhipster的反应性微源架构。

春天的靴子和Jhipster具有反应性微服务?
春天云网关,春天云配置,春天webflux,java和jhouchster

即使只有几年前突出,Java也一直处于MicroService架构的最前沿。春云,春天数据和春季安全,Java是知名的高质量框架。

春天webflux 是Spring Boot 2.0引入的新Web框架。虽然以前版本的Spring Boot仅用Spring MVC作为一个选项运送,但WebFlux为开发人员提供了做反应编程的机会,这意味着您可以使用熟悉的语法编写代码。因此,您的应用程序将更好地扩展并使用更少的资源。

春天webflux vs Spring MVC
春天webflux vs Spring MVC

为什么反应性微服务?

反应编程ISN’每个应用程序。拇指的一般规则是赢了’如果你有的话,帮助你<500要求/秒。机会是Spring MVC将执行以及Spring WebFlux到那个点。当您的流量起飞时,或者如果您需要在500个请求/秒更快地处理内容时,您应该看看Spring WebFlux。

春天webflux’S API对Spring MVC具有类似的语法。例如,这里’S Spring MVC代码,用于创建新的  entity.


使用Spring WebFlux实现时相同的功能返回a 单核细胞增多症 并使用更功能,流式的流式风格来避免阻止。


在本指南中,我’LL向您展示如何创建带有春靴,春天云网关,春天云配置,Spring WebFlux,Java和Jhipster的反应性微服务架构。

反应性Java MicroServices.
反应性Java MicroServices.

先决条件

您可以在Github上找到此示例的已完成的源代码,在 Oktadeveloper / java-microServices - 示例存储库.

建立反应性微源架构

Jhipster. 是一个以应用程序发生器为基础的开源项目,基于  耶曼。它’s also the 最受欢迎的Yeoman Generator。 Jhipster最初允许您生成AngularJS和Spring Apps。在过去的五年里,它’S成为一个具有可扩展性的平台,增长了一个繁荣的社区,并节省了开发人员的痛苦和挫折。

你看,Jhipster为你整合了一切。你想用春天启动使用角吗?它’得到了。反应?是的。春天云的微服务?查看!

在本教程中,我’LL向您展示如何生成使用OAuth 2.0,API网关和两个微服务(博客和商店)的微服务体系结构。网关将使用PostgreSQL与R2DBC,博客将使用Neo4j,商店将使用MongoDB。所有持久性选项都由Spring数据提供支持。

首先使用NPM安装Jhihster:


安装Jhipster后,您可以运行以下命令以回答整个问题并创建应用程序。


Jhipster. code
Jhipster. code

但是,那里有’更容易的方式。 Jhipster有自己的域名语言!

使用JDL定义您的反应性Java架构

Jhipster. Domain Language (JDL.)提供一种定义应用程序的方法,所以你不’不得不担心胖胖的答案你的答案 Jhipster. command’s questions.反应性微服务,弹簧靴和Jhipster具有反应性微服务?

在计算机上创建一个新目录并在终端中导航到其中。


复制下面的JDL并将其放入其中 反应-ms.jdl file.

  1. 第一个应用程序是API网关。
  2. 因为网关是反应性的’LL使用春天云网关。
  3. Gateway和MicroService应用程序必须使用相同的身份验证类型。
  4. 使用gradle,因为很多y’all love it.
  5. Vue支持是Jhipster 7的新功能,让’s use it!
  6. 确保并指定 microService. 作为博客和商店应用程序的应用程序类型。
  7. JDL.允许您创建Docker Compose和Kubernetes部署!

看 应用程序配置选项 要查看上述配置选项的可能值。

导入此体系结构定义并生成 门户网关博客, 和 店铺 apps.


作为此过程的一部分,为您生成了多个Docker组成文件。这些允许您运行数据库 Jhipster. Registry (用于服务发现), Keycloak. (适用于身份),所有与Docker。

运行您的反应性Java MicroServices

Jhipster完成生成您的应用后,您可以使用Gradle运行它们。假设你’在你跑的同一个顶级目录中 Jhipster. jdl 从,您可以运行以下命令以启动每个微服务的所有后端服务。

Jhipster. has a 哦,我的zsh!插入 我强烈推荐。它为启动Docker容器提供别名,并且是一个实时节省的。一世’VE包括以下命令作为下面的评论。


反应性微服务,弹簧靴和Jhipster具有反应性微服务?

这 Jhipster. Registry 是一个处理服务发现的netflix eureka服务器。当网关和微服务启动时,它们会注册eureka。这允许使用逻辑名称,而不是IP地址或主机名之间的服务之间的通信。 Jhihster Registry还包含一个Spring Cloud Config Server,可以在应用程序之间分发配置。您可以了解有关Spring Cloud Config的更多信息 Spring Cloud Confif for Shared MicroService配置.

打开一个新的终端窗口,启动博客应用程序’s neo4j数据库,然后是应用程序本身。


然后,打开另一个终端窗口,启动商店应用程序’S MongoDB数据库和微服务。


要使keycloak工作,您需要将以下行添加到主机文件(/etc/hosts on Mac/Linux, c:\Windows\System32\Drivers\etc\hosts on Windows).


这是因为您将使用计算机上的浏览器访问您的应用程序(其名为localhost,或 127.0.0.1)但是在Docker中,它将在自己的容器中运行,该容器被命名 Keycloak..

测试您的反应性Java MicroService

测试您的反应性Java MicroService
测试您的反应性Java MicroService
java..时髦
java..时髦

打开 http://localhost:8080 在你最喜欢的浏览器中。你应该能够登录 admin/admin as credentials.

确保您可以添加新博客,编辑现有帖子,并添加新产品。

反应堆网关
反应堆网关

为了证明一切以自动的方式工作,可以运行 NPM运行E2E. 在网关项目中’S目录。这将运行多个端到端测试 Protractor..jhipster有支持 , 但它 没有’t work with Okta yet.

准备您的反应Java堆栈以进行生产

KeyCloak是一个卓越的开源标识提供商。它对OAuth 2.0和OpenID Connect(OIDC)提供了良好的支持,并轻松在Docker容器中运行。我非常欣赏keycloak’易用性。我也很欣赏春天的安全’S OAuth和OIDC支持。

Spring Security使您只需要覆盖三个属性以从keycloak切换到OKTA!

在生产中,您可能不希望管理自己的身份提供程序实例。那’okta进来的地方。我们’重新开发商友好的SAAS公司,提供OAUTH和OIDC支持作为服务。您可以创建开发人员帐户并免费使用它。我们的 okta. cli. makes it super easy.

使用上述网站安装OKTA CLI并在此处回来’re done. If you don’T有一个OKTA开发人员帐户,运行 okta. register.

您还可以使用您的浏览器和OKTA’S开发人员控制台注册应用程序。看 Jhipster.’S安全文件 对于那些指示。

然后,来自网关项目’s directory, run okta. apps create jhipster。接受默认重定向URI。

okta.应用程序创建Jhipster
okta.应用程序创建Jhipster

这个过程做了几件事:

  1. 使用Jhipster注册OKTA的OIDC应用程序’s配置的重定向URI。
  2. 创造 ROLE_ADMIN and ROLE_USER 组并将您的用户添加到两者。
  3. 创造一个 groups 声明并将其添加到ID令牌中。
  4. 创造一个 .okta.env 文件带有值的文件’LL需要与OKTA交谈。

更新 the JHipster Registry to Distribute OIDC Configuration

我之前提到的Spring Cloud Config允许您分发Spring’S应用程序之间的配置。在本节中,您’ll配置Jhipster.’S Spring Security Settings在所有服务中使用OKTA。

添加以下yaml到 门户网关/src/main/docker/central-server-config/localhost-config/application.yml。您可以找到每个属性的值 .okta.env file.


保存更改。这些值将分发给Jhipster注册表,网关,博客和存储应用程序。通过运行以下命令重新启动Jhipster注册表:


使用 Ctrl.+C to kill all your 。/Gradlew. 进程再次启动。

现在,打开一个新的隐姓埋名浏览器窗口,转到 http://localhost:8080,并登录。高兴地使用OKTA进行身份验证工作!反应性微服务,弹簧靴和Jhipster具有反应性微服务?反应性微服务,弹簧靴和Jhipster具有反应性微服务?

如果你’感觉幸运,您可以将OKTA凭据设置为环境变量并运行端到端测试(来自 门户网关 directory).


您的Jhipster注册表现在配置为使用OKTA进行身份验证。你’LL需要在OKTA应用程序中添加重定向URI http://localhost:8761。进行以下变化后,您应该能够登录它。

为MicroService应用程序创建Docker图像

您用于创建此反应堆栈的JDL包含Docker配置,因此您可以使用Docker编写运行所有内容。

停止所有应用程序 Ctrl.+C。停止所有码头实例。


反应性微服务,弹簧靴和Jhipster具有反应性微服务?

要使用Docker编写运行Vactive堆栈,您需要为每个应用程序创建Docker映像。在三个不同的应用程序目录中,运行以下Gradle命令:

使用Docker Compose运行MicroServices堆栈

一旦您的码头容器完成建筑,您’LL希望将OKTA设置添加到Jhipster注册表中的Spring Cloud Config。

带春天云配置的交换机身份提供商

打开 Docker.-compose/docker-compose.yml 在你最喜欢的IDE中(我喜欢 intellij想法)然后删除底部的键锁图像。如果你愿意,你可以留下它,但它赢了’在这个例子中使用。

更新 Docker.-compose/central-server-config/application.yml 包含要与所有微操作系统共享的OIDC设置。

证明您的反应Java堆栈工作

在里面 Docker.-compose 目录,运行以下命令以启动所有容器。


反应性微服务,弹簧靴和Jhipster具有反应性微服务?

反应性微服务,弹簧靴和Jhipster具有反应性微服务?

你应该能够打开 http://localhost:8080,登录,访问所有微服务。漂亮的光滑,呃?!

Kotlin MicroServices怎么样?

jhihster支持基于Kotlin的微服务,得益于它 kotlin.蓝图.

您可以使用NPM安装它:


然后,使用 khipster jdl reactive-ms 创建与kotlin以上所做的相同堆栈。

反应性微服务,弹簧靴和Jhipster具有反应性微服务?

如何部署到云端?

Jhihster创建了一个可以部署到许多云提供商的云本机微服务架构。那里’对AWS,Microsoft Azure,Heroku和Google云平台的特定支持。

但是,如果你’重新做微源,你’如果您在本教程中,我可能想要利用Docker。当您的应用程序被集装箱时,可以使用Kubernetes进行策划。

Jhipster. has a Kubernetes. 您可以使用的子生成器将其部署到云端。

1+