本系列文章演示如何用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启动信息

现在开始问答环节

1.1 Which type of application would you like to create?

选择生成的微服务类型

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

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

单击回车继续。

1.2 What is the base name of your application?

输入微服务的名称

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

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

单击回车继续。

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,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。

单击回车继续。

1.4 What is your default Java package name?

输入微服务的java包名

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

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

单击回车继续。

1.5 Which service discovery server do you want to use?

选择一个服务发现组件

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

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

单击回车继续。

1.6 Which type of database would you like to use?

选择使用的数据库类型

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

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

单击回车继续。

1.7 Which production database would you like to use?

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

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

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

单击回车继续。

1.8 Which development database would you like to use?

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

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

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

单击回车继续。

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!

单击回车继续。

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

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

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

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

单击回车继续。

1.11 Which other technologies would you like to use?

选择需要用到的技术组件

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

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

单击回车继续。

1.12 Would you like to enable internationalization support?

是否需要国际化支持?

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

单击回车继续。

1.13 Please choose the native language of the application

选择国际化支持中的母语

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

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

单击回车继续。

1.14 Please choose additional languages to install

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

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

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

单击回车继续。

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

选择单元测试工具

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

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

单击回车继续。

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

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

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

单击回车继续。

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

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

至此,生成认证微服务工程代码成功完成。可以在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

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

3.2 启动

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

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

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

$ tail -f nohup.out

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

3.3 注册到JHipster Registry

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

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

源码

jhi-example-appstack

系列文章

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

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

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

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

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

JHipster生成微服务架构的应用栈(二)- 认证微服务示例的更多相关文章

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

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

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

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

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

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

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

    本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...

  5. 从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训

    [编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了 ...

  6. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  7. HTTP和RPC是现代微服务架构,HTTP和RPC是现代微服务架构

    .NET Core使用gRPC打造服务间通信基础设施   一.什么是RPC rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制 ...

  8. (微服务架构)Security + Oauth2 + Jwt + Zuul解决微服务系统的安全问题

    前言 之前零零散散的学习过一点鉴权这方面的玩意儿,但自我感觉净他妈整些没用的,看代码还是看不懂,这次我们再统一对其进行学习一下,希望自己掌握这个技能,也希望屏幕面前的你能有点收获 此次的学习周期可能有 ...

  9. .Net 微服务架构技术栈的那些事

    一.前言 大家一直都在谈论微服务架构,园子里面也有很多关于微服务的文章,前几天也有一些园子的朋友问我微服务架构的一些技术,我这里就整理了微服务架构的技术栈路线图,这里就分享出来和大家一起探讨学习,同时 ...

随机推荐

  1. springBoot(6)---过滤器,监听器,拦截器

    过滤器,监听器,拦截器 一.理解它们 看里十几篇博客,总算有点小明白,总的来讲,两张图可以让我看明白点. 通过两幅图我们可以理解拦截器和过滤器的特点 1.过滤器 过滤器是在请求进入tomcat容器后, ...

  2. java模式—装饰者模式

    装饰者模式 1.意图: 动态地给一个对象添加一些额外的职责.就增加功能来说, Decorator模式相比生成子类更为灵活.该模式以对客 户端透明的方式扩展对象的功能. 2.适用环境 (1)在不影响其他 ...

  3. IdentityServer Resource Owner Password

    Resource Owner Password 模式需要自己实现用户名密码的校验 新增ResourceOwnerPasswordValidator实现IResourceOwnerPasswordVal ...

  4. Apache XBean相关说明,待补充

    前言 最近在看ActiveMQ5.15.0源码,发现ActiveMQ实际上是基于spring实现的,其配置文件activemq.xml中有个broker元素节点,使用的就是Apache XBean的配 ...

  5. 《JavaScript总结》js的运行机制

    首先大家都知道javascript是单线程语言. 什么是单线程呢?比如我们去车站买票,只有一个售票窗口,大家排队买票,需要前面的人买完票,后面的人才能买票. 那为什么javascript不能是多线程呢 ...

  6. python3 对拉勾数据进行可视化分析

    上回说到我们如何如何把拉勾的数据抓取下来的,既然获取了数据,就别放着不动,把它拿出来分析一下,看看这些数据里面都包含了什么信息.(本次博客源码地址:https://github.com/MaxLyu/ ...

  7. CentOS7 Hadoop 3.1.0 编译安装

    1.配置环境变量 JAVA_HOME=/jdk1..0_131 ANT_HOME=/apache-ant- MAVEN_HOME=/apache-maven- FINDBUGS_HOME=/findb ...

  8. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  9. 同一个dll 不同路径下注册 一个失败 一个成功

    一个路径下用regsvr32注册成功,一个注册失败,提示平台不兼容. 最后用depends查看依赖的dll,发现依赖的dll有问题,从注册成功的路径下复制一个过来,重新注册就成功了

  10. Netty 系列四(ChannelHandler 和 ChannelPipeline).

    一.概念 先来整体的介绍一下这篇博文要介绍的几个概念(Channel.ChannelHandler.ChannelPipeline.ChannelHandlerContext.ChannelPromi ...