使用JHipster领域语言在30分钟内创建完整的微服务栈
JHipster是Java Web应用程序和微服务开发的开发平台。到目前为止我实现的最酷的功能肯定是使用JDL生成多个应用程序。
电子商务应用程序
那么让我们看看如何使用JHipster创建一个微服务堆栈。我们今天将建立一个电子商务商店。堆栈包括 -
1/ 使用JHipster Registry进行服务发现,这是一个包含Eureka服务器和Spring云配置服务器的Spring启动应用程序。
2. 使用Spring Boot,Netflix Zuul,ReactJS和Swagger的API管理和网关。
3. 使用Spring Boot的微服务。
4. 使用由弹性堆栈(ELK)和Zipkin组成的JHipster控制台进行监控。
网关将请求路由到两个微服务,Invoice应用程序和Notification应用程序。
要求
为了学习本教程,您需要在计算机上安装最新版本的Docker,Docker-compose,NodeJS和Java 8。以下是我安装的版本。
|
首先,安装最新版本的JHipster
$ npm install generator-jhipster -g
通过运行验证您是否具有5.3.4或更高版本
$ jhipster --version
创建JDL
现在让我们创建我们的JDL。转到JDL Studio(暂时使用旧版本,因为JDL 3更新尚未针对新的JDL工作室发布)或喜欢的IDE /编辑器(如果您愿意,可以使用JHipster IDE插件)。
首先,让我们定义我们的应用程序。我们将从Gateway开始:
|
大多数的选项是不言自明的,我们正在建立一个名为store类型应用,其网关带有JWT认证,以eureka为基础的服务发现。该应用程序使用MySQL数据库和Hazelcast作为缓存。它是使用Gradle构建的。对于客户端,它使用React和Sass。它还有用于端到端测试的Protractor。
在定义的最后你可以看到entities *,我们稍后会讨论。
现在让我们定义我们的Invoice微服务:
|
它遵循类似的选项,如我们的网关,因为它是微服务,它没有定义任何客户端选项,也跳过用户管理,因为它将由网关处理。此外,我们还提到了自定义端口8081,因为我们不希望此应用程序与网关使用的默认端口8080冲突。
现在让我们定义第二个微服务,Notification应用程序:
|
此应用程序遵循许多类似于Gateway和Invoice应用程序的选项,但它不使用MySQL,而是使用MongoDB作为其数据库并禁用缓存。
现在我们的应用程序定义已经完成,我们将继续定义我们的实体模型。
对于我们的网关商店应用程序,让我们定义以下实体和枚举:
|
JDL定义实体,枚举,实体和选项(如分页和服务层)之间的关系。
实体字段定义遵循语法:
|
关系定义遵循语法:
|
请参阅JDL文档以获取完整的DSL参考。
Invoice微服务应用程序具有以下实体:
|
注意这里声明的最后一行microservice选项,它指定这些实体属于名为invoice的微服务,以便我们的网关知道在哪里为这些实体路由请求。
现在让我们看一下Notification微服务应用程序的实体:
|
现在让我们在看看定义中使用的实体:
|
在这里,我们指示商店网关应用程序它应该包含JDL中定义的所有实体,并且网关将知道跳过属于被调用微服务的实体代码,因此只会为这些实体生成调用者客户端代码,这里是 Invoice, Shipment, 和 Notification。
我们还指示Invoice应用程序和Notification应用程序包含其实体。
生成应用程序
创建一个我们想要创建微服务堆栈的文件夹:
$ mkdir ecommerce && cd ecommerce
现在,让我们将所有内容放在一起成为JDL文件。让我们调用它app.jdl并将其保存到此文件夹中。
|
现在让我们调用JHipster CLI来导入这个文件:
$ jhipster import-jdl app.jdl
这将创建商店,发票和通知文件夹,并在每个文件夹中执行以下操作
生成适当的应用程序和实体配置。
根据配置生成应用程序和实体源代码。
为应用程序安装NPM依赖项。
完成该过程后,您应该在控制台上看到以下内容:
|
使用Docker运行应用程序
首先让我们使用JHipster生成一些docker compose配置。
在ecommerce文件夹中创建一个新文件夹,然后运行JHipster docker-compose命令
|
这将为堆栈生成所有必需的docker-compose配置,并且还将打印出构建docker镜像的更多指令。
|
按照说明构建docker镜像。构建完所有3个后,从docker-compose文件夹中运行以下命令以启动所有内容。
$ docker-compose up -d
容器启动后,可以使用以下命令流式传输日志
docker-compose logs -f
浏览 http://localhost:8080/ 看到你的电子商务网站上线了。