JHipster生成微服务架构的应用栈(四)- 网关微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。
环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里)
应用栈名称:appstack
认证微服务: uaa
业务微服务:microservice1
网关微服务:gateway
实体名:role
主机IP:192.168.220.120
1 生成网关微服务的工程代码
进入appstack/gateway目录,输入命令后回车:
$ cd gateway/
$ jhipster
命令行输出JHipster启动信息
现在开始问答环节
1.1 Which type of application would you like to create?
选择生成的应用类型
这是一个单选题,有4个选项,使用上下键切换选项。
这里选择Microservice gateway
,也就是网关微服务。
单击回车继续。
1.2 What is the base name of your application?
输入应用的名称
默认名称是当前目录名gateway
,也可以自己输入名称;这里使用默认名称。
注意:名称只能是大小写字母,数字和下划线的任意组合,不允许任何其它字符。
单击回车继续。
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.
输入微服务的端口号
默认端口号是8080
,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。
单击回车继续。
1.4 What is your default Java package name?
输入应用的java包名
默认java包名是com.mycompany.myapp
,也可以自己输入包名;这里使用默认包名。
注意:包名要符合Java标准规范的要求。
单击回车继续。
1.5 Which service discovery server do you want to use?
选择一个服务发现组件
这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择JHipster Registry
。
单击回车继续。
1.6 Which type of authentication would you like to use?
选择使用的认证类型
这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择Authentication with JHipster UAA server (the server must be generated separately)
。
单击回车继续。
1.7 What is the folder path of your UAA application?
输入uaa微服务所在的目录
这是一个相对于gateway的相对路径,默认路径是../uaa
,这就是我们之前生成uaa工程的目录所在;如果之前生成的uaa目录名是myuaa,那么这里要输入../myuaa
。
注意:这个问题和上一个问题(1.6)的选择有关联性,上一个问题的不同选择,会导致后续不同问题的出现。
单击回车继续。
1.8 Which type of database would you like to use?
选择使用的数据库类型
这是一个单选题,有4个选项,使用上下键切换选项。
可以看到支持的数据库类型很多,这里选择默认选项SQL
。
单击回车继续。
1.9 Which production database would you like to use?
选择生产环境中使用的数据库
这是一个单选题,有5个选项,使用上下键切换选项。
可以看到目前支持5种SQL数据库,这里选择默认选项MySQL
。
单击回车继续。
1.10 Which development database would you like to use?
选择开发环境中使用的数据库
这是一个单选题,有3个选项,使用上下键切换选项。
H2调试起来简单,但为了和生产环境保持一致性,这里选择MySQL
。
单击回车继续。
1.11 Do you want to use Hibernate 2nd level cache?
是否需要使用Hibernate 2级缓存?
默认选择是Y
,如果不需要,输入n
;这里选择默认选项Y
。
单击回车继续。
1.12 Would you like to use Maven or Gradle for building the backend?
选择使用Maven还是Gradle来构建微服务
这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的开发环境需要,选择相应的构建工具,这里选择默认选项Maven
。
单击回车继续。
1.13 Which other technologies would you like to use?
选择需要用到的技术组件
这是一个多选题,有4个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。
单击回车继续。
1.14 Which Framework would you like to use for the client?
选择前端框架
这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的技术架构规划,选择相应的前端框架,这里选择默认选项Angular 6
。
单击回车继续。
1.15 Would you like to enable SASS support using the LibSass stylesheet preprocessor?
是否需要启用样式表预处理来支持SASS?
默认选择是N
,如果需要启用,输入y
;这里选择默认选项N
。
单击回车继续。
1.16 Would you like to enable internationalization support?
是否需要国际化支持?
默认选择是Y
,如果不需要,输入n
;这里选择默认选项Y
。
单击回车继续。
1.17 Please choose the native language of the application
选择国际化支持中的母语
这是一个单选题,有37个选项,使用上下键切换选项。
注意:这个问题和上一个问题(1.16)的选择有关联性,上一个问题如果选择n
,这个问题不会出现。
单击回车继续。
1.18 Please choose additional languages to install
选择国际化支持中的其它语言
这是一个多选题,有37个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的业务规划,选择相应的语言,也可以都不选择。
单击回车继续。
1.19 Besides JUnit and Jest, which testing frameworks would you like to use?
选择单元测试工具
这是一个多选题,有2个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。
单击回车继续。
1.20 Would you like to install other generators from the JHipster Marketplace?
是否需要从JHipster市场中安装其它的开发工具?
默认选择是N
,如果需要启用,输入y
;这里选择默认选项N
。
单击回车继续。
问答结束,开始生成工程代码
这个过程可能会有点长,根据电脑性能和网速的不同,通常需要3-5分钟。
至此,生成工程代码成功完成。可以在appstack/gateway目录下查看所有生成的文件。
2 生成实体代码
接下来,是为microservice1中的实体表role生成前端资源。
在开始之前,确保microservice1已经为实体role生成过后端代码。
进入appstack/gateway目录,输入命令后回车:
$ cd gateway/
$ jhipster entity role
命令行输出实体已创建
现在开始问答环节
2.1 Do you want to generate this entity from an existing microservice?
是否为一个现有的业务微服务的实体生成前端资源?
默认选择是Y
,如果不需要添加,输入n
;这里选择默认选项Y
。
单击回车继续。
2.2 Enter the path to the microservice root directory:
输入这个现有的业务微服务的路径
这是一个相对于gateway的相对路径,对于microservice1工程来说,这里要输入../microservice1
。
单击回车继续。
2.3 Do you want to update the entity? This will replace the existing files for this entity, all your custom code will be overwritten
是否要更新这个实体
这是一个单选题,有4个选项,使用上下键切换选项。
4个选项的意思分别是是的,重新生成这个实体;是的,增加字段和关系;是的,删除字段和关系;不,退出。这里选择Yes, re generate the entity
。
单击回车继续。
问答结束,开始生成实体代码
这个过程中会提示与已有文件有冲突,需要选择处理方式,提示的输入选项是Ynaxdh
,说明如下:
Y: yes (Default)
n: no
a: yes to this question and all others (or always yes).
x: abort (exit)
d: show the differences between the old and the new file
h: help, list all options
这里选择a
;
单击回车。这里主要是生成实体对应的前端资源,根据实体的复杂程度不同,耗时也不尽相同,我们这个示例只有1个字段,生成很快,通常1-2分钟就能完成。
至此,生成实体代码成功完成。可以执行maven测试命令来验证整个工程代码(如果生成工程代码时选择的构建工具是Maven)
$ mvn test
如果一切正常,命令行会输出成功信息:
3 生成前端资源
之前在生成工程代码时选择的前端组件是Angular,所以前端资源会按如下流程生成:
a, 生成工程代码或者实体代码的任务完成后,会自动触发执行yarn install
;
b, yarn install
执行完成后,会自动触发执行webpack:build
;
c, webpack:build
执行完成后,所有前端资源就已经生成了,默认是在gateway/target/www目录下。
调试前端页面
进入gateway目录,输入命令后回车:
$ cd gateway/
$ yarn start
如果一切正常,会启动Webpack dev-server;
可通过浏览器访问http://192.168.220.120:9000
查看前端调试页面。此时所有前端资源的修改,都会同步更新到浏览器上。
4 数据库配置
4.1 启动一个数据库容器
在命令行,任意目录下,启动一个mysql容器;如果本地没有mysql:5的镜像,容器启动时会自动去docker store下载镜像。
$ docker container run --name gateway-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d -p 32800:3306 mysql:5
4.2 在数据库中创建schema
通过客户端连接上刚启动的数据库容器,添加一个名为gateway
的schema。应用启动时会自动在这个schema里面创建数据表。
4.3 修改应用的数据库配置
spring.datasource.url中的端口号32800
,与步骤4.1中-p参数指定的值保持一致。
spring.datasource.url中的schema名称gateway
,与步骤4.2中添加的schema名称保持一致。
spring.datasource.password的值my-secret-pw
,与步骤4.1中MYSQL_ROOT_PASSWORD
参数指定的值保持一致。
$ cd gateway/
$ vi src/main/resources/config/application-dev.yml
# 修改数据库连接相关配置
spring:
datasource:
url: jdbc:mysql://localhost:32800/gateway?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: my-secret-pw
5 构建和启动
5.1 构建
进入gateway目录,输入命令后回车:
$ cd gateway/
$ mvn -Pdev package
如果一切正常,命令行会输出构建成功信息:
5.2 启动
进入gateway目录,输入命令后回车:
$ nohup ./target/gateway-0.0.1-SNAPSHOT.war &
通过tail命令,查看启动日志:
$ tail -f nohup.out
如果一切正常,日志会输出启动成功信息:
5.3 注册到JHipster Registry
启动完成后,可以通过浏览器访问http://192.168.220.120:8761
,登录名和密码默认都是admin
:
可以看到在Instances Registered区域,gateway已经注册。
6 访问网关微服务UI
6.1 访问首页
通过浏览器访问http://192.168.220.120:8080
,进入网关微服务的首页:
点击右上角账号 - 登录, 默认用户名和密码都是admin
。
6.2 实体页面
登录之后可以看到页头上的菜单,数据菜单下就是所有实体的操作页面,这里能看到生成的实体role的子菜单:
点击role子菜单,进入role实体的操作页面,这里已经生成了基本的增删改查功能,如果需要更多功能,就要定制开发了:
6.3 管理页面
这里包括了如下功能页面:
- 网关
- 用户管理
- 资源监控
- 服务状态
- 配置
- 审核
- 日志
- API
页面功能都很直观,点进去看一看就知道了。
6.4 语言页面
这里就是国际化支持的页面,生成工程代码时选择了哪些语言,这里就会提供哪些语言的子菜单:
源码
系列文章
JHipster生成微服务架构的应用栈(一)- 准备工作
JHipster生成微服务架构的应用栈(二)- 认证微服务示例
JHipster生成微服务架构的应用栈(三)- 业务微服务示例
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
JHipster生成微服务架构的应用栈(五)- 容器编排示例
JHipster生成微服务架构的应用栈(四)- 网关微服务示例的更多相关文章
- JHipster生成微服务架构的应用栈(一)- 准备工作
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- JHipster生成微服务架构的应用栈(二)- 认证微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- JHipster生成微服务架构的应用栈(三)- 业务微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- JHipster生成微服务架构的应用栈(五)- 容器编排示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- 从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训
[编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了 ...
- 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍
微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...
- HTTP和RPC是现代微服务架构,HTTP和RPC是现代微服务架构
.NET Core使用gRPC打造服务间通信基础设施 一.什么是RPC rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制 ...
- .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)
本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...
- (微服务架构)Security + Oauth2 + Jwt + Zuul解决微服务系统的安全问题
前言 之前零零散散的学习过一点鉴权这方面的玩意儿,但自我感觉净他妈整些没用的,看代码还是看不懂,这次我们再统一对其进行学习一下,希望自己掌握这个技能,也希望屏幕面前的你能有点收获 此次的学习周期可能有 ...
随机推荐
- Vagrant挂载目录失败mount: unknown filesystem type ‘vboxsf’
一.背景 最近在玩Mac OS下的虚拟机,然后有朋友推荐了我Vagrant,但是在设置完跟宿主机共享目录然后启动虚拟机的时候,出现了vagrant mount: unknown filesyste ...
- 知其然而所以然:Operating System 概述和学习图
大神绕道,鄙人初入 OS . 一.想知OS,先知计算机系统概述 #图解 #基本指令和中断周期 #直接内存存取(Direct Memory Access,DMA) I/O模块对存储器发出读命令或者写命令 ...
- ADO.NET的整理
ADO.NET的几个对象 Connection:管理数据库的连接 Command:对数据库执行命令 DataReader:数据流读取器,返回的数据都是快速的且只是“向前”的数据流.无法实例化,只能通过 ...
- PYTHON 格式字符串中的填充符
使用 %类型 来填充 常用的有:%s 填充字符串类型:%d 填充 int 类型:这里是沿用了 C语言中 printf() 函数中的格式,更多的信息请查看:完整列表 name = 'tommy' mes ...
- Docker的基本操作与示例
一.RunC RunC是一个由OCI(Open Container Initiative)制定的标准化轻量容器运行工具.OCI是专门致力于制定容器格式和运行时开放的工业化标准的组织.那容器标准化后Do ...
- spark之JDBC开发(实战)
一.概述 Spark Core.Spark-SQL与Spark-Streaming都是相同的,编写好之后打成jar包使用spark-submit命令提交到集群运行应用$SPARK_HOME/bin#. ...
- [转]bitcoin API reference (JSON-RPC)
本文转自:https://en.bitcoin.it/wiki/API_reference_%28JSON-RPC%29#Node.js API reference (JSON-RPC) Co ...
- 使用Topshelf开发Windows服务、log4net记录日志
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...
- c#基础学习(0625)之vs常用快捷键、基础数据类型、命名规范
vs常用快捷键 Ctrl+K+D:快速对齐代码 Ctrl+z:撤销 Ctrl+S:保存 Ctrl+J:快速弹出只能提示 Shift+End:从行首快速选中整行 Shift+Home:从行未快速选中整行 ...
- WPF window 子窗口反馈效果(抖动/阴影渐变)
当设置了owner的子窗口显示后,点击子窗口外部,需要一种反馈机制(反馈动画). 实现: 1.触发源 每次点击子窗口外部,即母窗口时,事件捕捉如下 HwndSource hwndSource = Pr ...