JHipster生成微服务架构的应用栈(二)- 认证微服务示例

时间:2023-12-22 21:05:14

本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。

环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里

应用栈名称:appstack

认证微服务: uaa

业务微服务:microservice1

网关微服务:gateway

实体名:role

主机IP:192.168.220.120

1 生成认证微服务的工程代码

因为业务微服务和网关微服务都会依赖uaa,所以首先生成uaa的工程代码。

进入appstack/uaa目录,输入命令后回车:

$ cd appstack/uaa/
$ jhipster

命令行输出JHipster启动信息

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

现在开始问答环节

1.1 Which type of application would you like to create?

选择生成的微服务类型

这是一个单选题,有4个选项,使用上下键切换选项。

这里选择JHipster UAA server,这是一种基于OAuth认证机制的微服务。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.2 What is the base name of your application?

输入微服务的名称

默认名称是当前目录名uaa,也可以自己输入名称。

注意:名称只能是大小写字母,数字和下划线的任意组合,不允许任何其它字符。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.3 As you are running in a microservice architecture, on which port would like your server to run? It should be unique to avoid port conflicts.

输入微服务的端口号

默认端口号是9999,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.4 What is your default Java package name?

输入微服务的java包名

根据整个应用栈的目录层级,这里输入包名com.mycompany.appstack

注意:包名要符合Java标准规范的要求。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.5 Which service discovery server do you want to use?

选择一个服务发现组件

这是一个单选题,有3个选项,使用上下键切换选项。

根据微服务体系规划,这里选择JHipster Registry

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.6 Which type of database would you like to use?

选择使用的数据库类型

这是一个单选题,有4个选项,使用上下键切换选项。

可以看到支持的数据库类型很多,这里选择默认选项SQL

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.7 Which production database would you like to use?

选择生产环境中使用的数据库

这是一个单选题,有5个选项,使用上下键切换选项。

可以看到目前支持5种SQL数据库,这里选择默认选项MySQL

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.8 Which development database would you like to use?

选择开发环境中使用的数据库

这是一个单选题,有3个选项,使用上下键切换选项。

H2调试起来简单,但为了和生产环境保持一致性,这里选择MySQL

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.9 Do you want to use the Spring cache abstraction?

是否需要使用Spring Cache?

这是一个单选题,有5个选项,使用上下键切换选项。

根据实际场景需要,可以选择不同缓存组件;这里简单起见,选择No - Warning, when using an SQL database, this will disable the Hibernate 2nd level cache!

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.10 Would you like to use Maven or Gradle for building the backend?

选择使用Maven还是Gradle来构建微服务

这是一个单选题,有2个选项,使用上下键切换选项。

根据自己的开发环境需要,选择相应的构建工具,这里选择默认选项Maven

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.11 Which other technologies would you like to use?

选择需要用到的技术组件

这是一个多选题,有4个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。

根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.12 Would you like to enable internationalization support?

是否需要国际化支持?

默认选择是Y,如果不需要,输入n;这里选择默认选项Y

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.13 Please choose the native language of the application

选择国际化支持中的母语

这是一个单选题,有37个选项,使用上下键切换选项。

注意:这个问题和上一个问题(1.12)的选择有关联性,上一个问题如果选择n,这个问题不会出现。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.14 Please choose additional languages to install

选择国际化支持中的其它语言

这是一个多选题,有37个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。

根据自己的业务规划,选择相应的语言,也可以都不选择。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.15 Besides JUnit and Jest, which testing frameworks would you like to use?

选择单元测试工具

这是一个多选题,有2个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。

根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

1.16 Would you like to install other generators from the JHipster Marketplace?

是否需要从JHipster市场中安装其它的开发工具?

默认选择是N,如果需要启用,输入y;这里选择默认选项N

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

单击回车继续。

问答结束,开始生成工程代码

这个过程,根据电脑性能和网速的不同,通常需要1-3分钟。

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

至此,生成认证微服务工程代码成功完成。可以在appstack/uaa目录下查看所有生成的文件。

2 认证微服务的数据库配置

2.1 启动一个数据库容器

在命令行,任意目录下,启动一个mysql容器;如果本地没有mysql:5的镜像,容器启动时会自动去docker store下载镜像。

$ docker container run --name uaa-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32900:3306 mysql:5

2.2 在数据库中创建schema

通过客户端连接上刚启动的数据库容器,添加一个名为uaa的schema。微服务启动时会自动在这个schema里面创建数据表。

2.3 修改微服务的数据库配置

spring.datasource.url中的端口号32900,与步骤2.1中-p参数指定的值保持一致。

spring.datasource.url中的schema名称uaa,与步骤2.2中添加的schema名称保持一致。

spring.datasource.password的值my-secret-pw,与步骤2.1中MYSQL_ROOT_PASSWORD参数指定的值保持一致。

$ cd uaa/
$ vi src/main/resources/config/application-dev.yml
# 修改数据库连接相关配置
spring:
datasource:
url: jdbc:mysql://localhost:32900/uaa?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: my-secret-pw

3 认证微服务的构建和启动

3.1 构建

进入uaa目录,输入命令后回车:

$ cd uaa/
$ mvn -Pdev package

如果一切正常,命令行会输出构建成功信息:

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

3.2 启动

进入uaa目录,输入命令后回车:

$ nohup ./target/uaa-0.0.1-SNAPSHOT.war &

通过tail命令,查看启动日志:

$ tail -f nohup.out

如果一切正常,日志会输出启动成功信息:

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

3.3 注册到JHipster Registry

启动完成后,可以通过浏览器访问http://192.168.220.120:8761,登录名和密码默认都是admin

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

可以看到在Instances Registered区域,uaa已经注册。

源码

jhi-example-appstack

系列文章

JHipster生成微服务架构的应用栈(一)- 准备工作

JHipster生成微服务架构的应用栈(二)- 认证微服务示例

JHipster生成微服务架构的应用栈(三)- 业务微服务示例

JHipster生成微服务架构的应用栈(四)- 网关微服务示例

JHipster生成微服务架构的应用栈(五)- 容器编排示例