Jhipster微服务项目示例程序
本微服务使用JHipster 4.14.0版本生成,并根据项目需要做了一些本地化修改。整理这个程序的目的,是为了更方面的快速生成微服务。
开发环境要求
鉴于公司电脑默认要求使用Windows系统。因此要求开发电脑使用的操作系统为Windows10。如下是在Windows10下开发环境的要求。请认真阅读,确保环境具备。
安装JDK
本机需要安装JDK8环境,具体的版本号为:JDK-For-Windows-1.8.0_111 64Bit。安装介质已经上传至百度网盘,网盘地址:链接:https://pan.baidu.com/s/1jKckp6I 密码:8lnj。JDK的设置方法不再赘述。验证方法:打开cmd或powershell,输入java -version。系统显示如下代表安装成功:
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
安装Maven
本机需要安装Maven环境,具体版本号为:Apache Maven 3.3.9。安装介质已经上传至百度网盘,网盘地址:链接:https://pan.baidu.com/s/1dWuUfk 密码:6n53j。建议解压到D盘根目录,然后创建在D盘根目录创建文件夹localRepository。这样解压后不用修改配置。Maven环境的安装方法不再赘述。验证方法:打开cmd或powershell,输入mvn -version。系统显示如下代表安装成功:
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\apache-maven-3.3.9\bin\..
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_111\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
安装Docker
第一步:开启HyperV
开启HyperV之前,如果本机已经安装了第三方虚拟机软件,需要首先卸载第三方虚拟机(如:Vmware、Virsualbox),否则会引起冲突导致安装失败。卸载完成后,开启HyperV步骤请参见:https://jingyan.baidu.com/article/86fae346c9311e3c49121aa9.html
第二步:安装Docker for Windows
由于各项目地安装的容器运行版本是17.12.CE。因此,安装之前请确认版本号。确认在版本号在”17.12.0-ce-win46”以上。可以从官方网站下载最新Docker版本。官网下载地址:https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows
第三步:验证安装。
打开cmd或powershell,输入:docker –version。系统显示如下代表安装成功:
Docker version 17.12.0-ce, build c97c6d6
安装Kitematic(可选)
Kitematic是一款优秀的Docker容器图形化管理工具,这款软件已经被Docker官方收购了,可以免费试用。如果你就是不喜欢DOCKER-CLI命令行的操作方式,这款工具也许是你的菜。可以去官网下载:https://download.docker.com/kitematic/Kitematic-Windows.zip
安装IDE
需要本机安装Java开发IDE:STS-64Bit(Spring Tool Suite)。可在官网下载:https://spring.io/tools/sts/all
请注意下载Windows64位版本,与JDK位数需要一致
程序使用方法
从压缩包中解压项目后,替换项目目录下所有文件,将microexample关键字(严格区分大小写)替换为自己想要命名的微服务名称,如:microconfig。正常情况下,需要替换21个文件,共66处。
注意:我们要求微服务名称全部使用英文小写,字符串必须是纯英文。不可以带有特殊字符(空格、下划线、横线、数字都不允许)
开始开发
STS基本设置
1、修改默认Mavens设置。windows-preferences-Maven,修改为本机的Maven工具。
2、更改默认JDK。windows-preferences-installed JRE,修改为本机的JDK8。一定注意,项目构建使用JDK而非JRE,否则在编译执行过程中会出错。
3、(可选)如果你是熟练手,建议关掉验证功能:windows-preferences-Validation,选择Suspend All Validators。
Docker基本设置
1、修改为国内镜像服务器
我天朝的网络,连接官方的Docker Store堪称龟速。因此,建议大家首先修改镜像服务器的地址。在Windows右下角状态栏,右键Docker图标,点击Setting-Deamon。在Registry mirros中输入
https://registry.docker-cn.com
点击Apply生效。
2、暴露2375端口
2375端口是远程连接docker守护进程的端口。Docker for Windows安装后默认并不会暴露2375端口,需要手工开启(注意Windows防火墙)。开启方法:
系统右下角图标右键,Setting-General-勾选Expose deamon on tcp://localhost:2375 without TLS
3、更改Docker的虚拟机镜像位置
Docker for Windows基于HyperV中,一个名为:MobyLinuxVM的虚拟机引擎,安装后默认在C盘。可以在HyperV设置中修改镜像文件的目录。
启动Jhipster Registry
服务注册中心是微服务开发必须要启动的工程。启动方法:在项目根目录执行命令:
docker-compose -f src/main/docker/jhipster-registry.yml up
验证方法:访问
http://localhost:8761/
登录用户名密码默认为admin/admin
启动Oracle
使用Docker启动一个Oracle实例非常简单。为了测试和还原,我们不建议给Oracle镜像挂载任何的卷信息,以保证数据库在每次启动时回到初始状态。启动方法:在项目根目录执行命令:
docker-compose -f src/main/docker/oracle.yml up
没错,就这么简单。数据库登录方法:
hostname: localhost
port: 1521
sid: xe
username: system
password: oracle
你也可以登录OracleXE的管理员界面。登录方法:
http://localhost:1580/apex
workspace: INTERNAL
user: ADMIN
password: oracle
启动Kafka
Kafka是一个分布式的消息队列中间件,在微服务组件异步交互中经常使用。启动方法:在项目根目录执行命令:
docker-compose -f src/main/docker/kafka.yml up
执行命令后系统会自动启动一个Kafka实例和Zookeeper实例,并默认生成一个名为topic-jhipster的TOPIC
hostname:localhost
kafka-port:9092
zookeeper-port:2181
topics:topic-jhipster
禁用Kafka
很多情况下,我们的微服务并不需要消息服务。此时,可以使用如下设置禁用Kafka:
1、修改com.inspur.micro.config.MessagingConfiguration类,注释掉消息服务相关设置
1 | package com.inspur.micro.config; |
2、修改pom.xml,注释掉消息服务依赖
1 | <!-- Kafka support --> |
启用Hazelcast监控工具
Hazelcast是微服务默认使用了分布式缓存框架。可以启动Hazelcast监控工具,来查看Hazelcast节点的运行状态信息和缓存信息。如下是开启的方法:
1、运行Hazelcast管理中心
执行命令:
docker-compose -f src/main/docker/hazelcast-management-center.yml up
2、在配置文件中开启对Hazelcast管理中心的注册。微服务默认是关闭状态
1 | cache: # Cache configuration |
3、可以登录:http://localhost:8180/mancenter 查看。首次登录可能给需要注册用户名和密码。
备注:社区版Hazelcast管理中心最多监控两个节点,商业版(付费)是无限制的。对于调试来说社区版已经足够了。
启动开发模式
启动开发模式,只需要执行Maven命令:
mvn
生产环境
打包为war
生产环境务必要使用优化后的生产版程序,生产版的profile在配置方面做了很多优化, 执行如下Maven命令生成war包:
./mvn -Pprod clean package
验证打包效果, 执行:
java -jar target/*.war
生产打包为Docker镜像
生产环境我们需要使用Docker镜像交付。打包方法:
mvn package -Pprod dockerfile:build
验证打包效果,执行:
docker images
microconfig latest 597ad14119af 22 seconds ago 158MB
更多设置可以查看Jhipster文档: Using JHipster in production.
测试方法
执行最基本的代码测试,可以运行命令:
./mvn clean test
这是最基本编译测试。如果改命令无法正常执行成功,则打包的时候会打包失败。(如果你使用参数自然可以跳过测试阶段,但是不要这么做)
除了最基本的测试,我们需要使用sonar作为静态代码检查
首先启动sonar:
docker-compose -f src/main/docker/sonar.yml up -d
然后执行测试命令:
mvn clean test sonar:sonar
执行完成后,可以在http://127.0.0.1:9000/ 查看执行结果。关闭sonar的方法是执行:
docker-compose -f src/main/docker/sonar.yml down
sonar的使用我们在另外一篇教程中单独介绍
更多设置可以查看Jhipster文档: Running tests page.