什么是Jhipster?
JHipster is a development platform to generate, develop and deploy Spring Boot + Angular/React Web applications and Spring microservices.
Jhipster微服务架构图:
Jhipster通过使用NETFLX OSS(NETFLIX Open Source Software)+Spring boot Spring Cloud+Docker的技术实现微服务技术栈。
使用ELK(elastic search+ logstash + kibana)实现日志收集、处理、可视化。
微服务部分可拆件为以下部分:
-
注册中心
Jhipster可以使用 Jhipster Registry或者consul做为服务注册中心。
-
网关
当用户通过浏览器网站的时候首先经过网关,网关提供了用户访问的WEB APP,反向代理和权限管理功能,用户请求通过反向代理进入要具体的微服务中。
-
UAA
访问权限控制模块。
-
微服务
对外提供各种服务的微服务。
本文介绍mac下环境配置,当然也可选择在Linux操作系统或者Windows系统下进行。
安装nodejs
brew install node@8
安装yarn
brew install yarn
安装yeoman
npm install -g yo
安装jhipster
#安装的版本是v5.0.0-beta.1
npm install -g generator-jhipster@beta
创建微服务工程受我国特殊的网络环境的影响,一些WEB前端的安装包是不能直接下载的,需要对npm 和 yarn 设置淘宝镜像。
创建如下文件夹:
└── micro-services
├── gateway
├── registry
├── service1
├── service2
└── uaa
创建注册中心
Jhipster官方提供注册中心的源码代码,可以直接运行。
git clone https://github.com/jhipster/jhipster-registry.git ./registry # clone代码到本地文件夹
yarn install # 安装前端依赖
yarn start # 编译运行Angular项目
./mvnw # 运行后台
安装依赖的时候会出现node和yarn的版本不兼容,本环境的node版本号是v8.11.2,yarn的版本为1.7.0,所以需要修改package.json。同时需要将node-sass的版本号修改
"engines": {
"node": ">=8",
"yarn": ">1.3.2"
}
在实验到的时候将node升级为v10会出现编译错误,所以不建议升级到最新版本。
访问http://localhost:8761/ 即可看到运行情况,运行效果如下图所示:
创建uaa直接在./uaa目录下运行jhipster命令,应用类型选择JHipster UAA server,如下图所示:
创建完成后执行如下命令:
#安装依赖
yarn install
# 编译启动后端后端
./mvnw
运行后即可在注册中心(http://localhost:8761) 中的Instance Registed中看到.
创建网关直接在/gateway目录下运行jhipster命令,应用类型选择Microservice gateway
创建完成后执行如下命令:
#安装依赖
yarn install
# 编译启动前端工程
yarn start
# 编译启动后端工程
./mvnw
运行后即可访问http://localhost:8080 查看效果如下图:
直接在/service1和/service2目录下分别运行jhipster命令,应用类型选择Microservice application,注意各个服务的端口号不应该相同。项目生成好之后直接运行./mvnw
即可启动项目
最终运行了uaa、网关和两个微服务项目之后可在注册中心中四个注册到注册中心的四个实例:
可以在service1中创建实体book,在service2中创建实体author,查看在一个网关中是否能够调用两个服务。
可以通过http://localhost:8080/service1/api/books 调用service1中的 /api/books REST接口。
可以通过http://localhost:8080/service2/api/authors 调用service2中的 /api/authors REST接口。
可以在网关的API文档中查看到所有服务的文档REST API文档:
最后以后会写一系列关于使用Jhipster创建、开发和部署微服务的文章,有兴趣的朋友可以关注微信公众账号订阅。