Jhipster微服务项目示例程序

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.inspur.micro.config;

// import org.springframework.cloud.stream.annotation.EnableBinding;
// import org.springframework.cloud.stream.messaging.Source;

/**
* Configures Spring Cloud Stream support.
*
* See http://docs.spring.io/spring-cloud-stream/docs/current/reference/htmlsingle/
* for more information.
*/
// @EnableBinding(value = {Source.class})
public class MessagingConfiguration {

}

2、修改pom.xml,注释掉消息服务依赖

1
2
3
4
5
6
7
8
9
<!-- Kafka support -->
<!-- <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency> -->

启用Hazelcast监控工具

Hazelcast是微服务默认使用了分布式缓存框架。可以启动Hazelcast监控工具,来查看Hazelcast节点的运行状态信息和缓存信息。如下是开启的方法:

1、运行Hazelcast管理中心

执行命令:

docker-compose -f src/main/docker/hazelcast-management-center.yml up

2、在配置文件中开启对Hazelcast管理中心的注册。微服务默认是关闭状态

1
2
3
4
5
6
7
8
cache: # Cache configuration
hazelcast: # Hazelcast distributed cache
time-to-live-seconds: 3600
backup-count: 1
management-center: # Full reference is available at: http://docs.hazelcast.org/docs/management-center/3.9/manual/html/Deploying_and_Starting.html
enabled: true
update-interval: 3
url: http://localhost:8180/mancenter

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.