本系列文章演示如何用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. Ocelot简易教程(二)之快速开始1

    Ocelot简易教程目录 Ocelot简易教程(一)之Ocelot是什么 Ocelot简易教程(二)之快速开始1 Ocelot简易教程(二)之快速开始2 Ocelot简易教程(三)之主要特性及路由详解 ...

  2. ASP.NET Core 2.1 使用Docker运行

    重要提示,本文为 ASP.NET Core 2.1 如果你是 2.2 那么请将文中的镜像换为 microsoft/dotnet:2.2.0-aspnetcore-runtime 即可,其他操作一样 1 ...

  3. Java集合及concurrent并发包总结(转)

    Java集合及concurrent并发包总结(转)   1.集合包 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Valu ...

  4. Unity3D热更新之LuaFramework篇[01]--从零开始

    前言 因工作关系,需要对手头的项目进行热更新支持.了解后发现,Lua的几个变种:XLua.ToLua(原uLua)和Slua都可以做Unity热更,而ToLua更是提供了一个简易的热更框架--LuaF ...

  5. 想入职阿里的Java开发者必看,阿里巴巴面试官实战经验分享!

    最近社区Java技术进阶群的小伙伴总是会问,如何面试阿里Java技术岗,需要什么条件,做哪些准备:小编就这些问题找到了阿里技术团队中在一线真正带Java开发团队并直接参与技术面试的专家,分享了自身在筛 ...

  6. npm设置和查看仓库源

    转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10078460.html 在使用npm命令时,如果直接从国外的仓库下载依赖,下载速度很慢,甚至会下载不下来,我 ...

  7. IFS简单说明

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html bash下的很多命令都会分割单词,绝大多数时候默认是采用空格作 ...

  8. 3. mysql性能分析

    一.mysql query optimizer 1. mysql 中有专门负责优化 select 语句的优化器模块,主要功能:通过计算分析系统中收集的统计信息,为客户端的 Query 提供他认为最优的 ...

  9. Java学习笔记之——封装

    1. 属性和方法放到类中 2. 信息的隐藏 (1) 属性的隐藏 (2) 方法实现的细节隐藏 3. 权限修饰符: 从小到大的顺序:private->默认的(什么都不写)->protected ...

  10. 协程与Epoll的配合

    想快速了解协程与网络调用的原来么,那么请赶紧关闭本页,因为下面都是在扯淡. 这几天是端午假期,第一天大算照着网上一大堆基于ucontext来写协程的文章自己也写一个简单的协程实现.于是第一天我就开始动 ...