JHipster生成微服务架构的应用栈(二)- 认证微服务示例

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里)应用栈名称:appstack认证微服务: uaa业务微服务:microservice1网关微服务:gateway实体名:role主机IP:192.168.220.1201 生成认证微服务的工程代码因为业务微服务和网关微服务都会依赖uaa,所以首先生成uaa的工程代码。

本系列文章演示如何用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启动信息

img_a46a013c853b0d609f38132f7653df7f.png

现在开始问答环节

1.1 Which type of application would you like to create?

选择生成的微服务类型
这是一个单选题,有4个选项,使用上下键切换选项。
这里选择JHipster UAA server,这是一种基于OAuth认证机制的微服务。

img_aaef4ebf234bdfccdff43ee09fc49258.png

单击回车继续。

1.2 What is the base name of your application?

输入微服务的名称
默认名称是当前目录名uaa,也可以自己输入名称。
注意:名称只能是大小写字母,数字和下划线的任意组合,不允许任何其它字符。

img_219bea5bffab6cb2e4047a00da4eedcd.png

单击回车继续。

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,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。

img_787da429e08f482910cd0e00a9f00e01.png

单击回车继续。

1.4 What is your default Java package name?

输入微服务的java包名
根据整个应用栈的目录层级,这里输入包名com.mycompany.appstack
注意:包名要符合Java标准规范的要求。

img_e9a1c51c66763619ec7c1ab84518b1ff.png

单击回车继续。

1.5 Which service discovery server do you want to use?

选择一个服务发现组件
这是一个单选题,有3个选项,使用上下键切换选项。
根据微服务体系规划,这里选择JHipster Registry

img_3a405ee5b9070b47cd24002a412f85e6.png

单击回车继续。

1.6 Which type of database would you like to use?

选择使用的数据库类型
这是一个单选题,有4个选项,使用上下键切换选项。
可以看到支持的数据库类型很多,这里选择默认选项SQL

img_3157d02fe19e3131e147f68358e9dd86.png

单击回车继续。

1.7 Which production database would you like to use?

选择生产环境中使用的数据库
这是一个单选题,有5个选项,使用上下键切换选项。
可以看到目前支持5种SQL数据库,这里选择默认选项MySQL

img_1cc471e15c8a1c2e8be9ca5cd6525d63.png

单击回车继续。

1.8 Which development database would you like to use?

选择开发环境中使用的数据库
这是一个单选题,有3个选项,使用上下键切换选项。
H2调试起来简单,但为了和生产环境保持一致性,这里选择MySQL

img_b570675e6c037102c165aabf7e29b5b2.png

单击回车继续。

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!

img_98ce1e4efe865f362f81cf42b2af91ab.png

单击回车继续。

1.10 Would you like to use Maven or Gradle for building the backend?

选择使用Maven还是Gradle来构建微服务
这是一个单选题,有2个选项,使用上下键切换选项。
根据自己的开发环境需要,选择相应的构建工具,这里选择默认选项Maven

img_170e68df7725f705d3b6e1debc3078b2.png

单击回车继续。

1.11 Which other technologies would you like to use?

选择需要用到的技术组件
这是一个多选题,有4个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。

img_0e9085a81da61fecfe0b62dc38241093.png

单击回车继续。

1.12 Would you like to enable internationalization support?

是否需要国际化支持?
默认选择是Y,如果不需要,输入n;这里选择默认选项Y

img_3062e9c99754b6cfd0e9fad296abaa25.png

单击回车继续。

1.13 Please choose the native language of the application

选择国际化支持中的母语
这是一个单选题,有37个选项,使用上下键切换选项。
注意:这个问题和上一个问题(1.12)的选择有关联性,上一个问题如果选择n,这个问题不会出现。

img_64ad3ebf2614d57efb8d8b075fed0cb9.png

单击回车继续。

1.14 Please choose additional languages to install

选择国际化支持中的其它语言
这是一个多选题,有37个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的业务规划,选择相应的语言,也可以都不选择。

img_1b94e23371aedbb131173d7416ac769c.png

单击回车继续。

1.15 Besides JUnit and Jest, which testing frameworks would you like to use?

选择单元测试工具
这是一个多选题,有2个选项,使用上下键切换选项,使用空格键选中选项,使用a键全选,使用i键取消全选。
根据自己的技术架构规划,选择相应的技术组件,也可以都不选择。

img_c6169b7ece202303741405b43f7cb0ae.png

单击回车继续。

1.16 Would you like to install other generators from the JHipster Marketplace?

是否需要从JHipster市场中安装其它的开发工具?
默认选择是N,如果需要启用,输入y;这里选择默认选项N

img_ec32d7b10d8775101f68dd9fe2963c42.png

单击回车继续。

问答结束,开始生成工程代码

这个过程,根据电脑性能和网速的不同,通常需要1-3分钟。

img_15a07fd2556404723105ea9a21480e31.png

至此,生成认证微服务工程代码成功完成。可以在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

如果一切正常,命令行会输出构建成功信息:

img_4b7749f242553299b5a93583f0a8462d.png

3.2 启动

进入uaa目录,输入命令后回车:

$ nohup ./target/uaa-0.0.1-SNAPSHOT.war &

通过tail命令,查看启动日志:

$ tail -f nohup.out

如果一切正常,日志会输出启动成功信息:

img_6657d75e595afd60cbff59c7aac3f278.png

3.3 注册到JHipster Registry

启动完成后,可以通过浏览器访问http://192.168.220.120:8761,登录名和密码默认都是admin

img_9f7120fb624fda7478a85651a8d03e33.png

可以看到在Instances Registered区域,uaa已经注册。

系列文章

JHipster生成微服务架构的应用栈(一)- 准备工作
JHipster生成微服务架构的应用栈(二)- 认证微服务示例
JHipster生成微服务架构的应用栈(三)- 业务微服务示例
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
JHipster生成微服务架构的应用栈(五)- 容器编排示例




你现在的气质里,藏着你走过的路,读过的书,爱过的人。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
9天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
36 5
|
7天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
7天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
7天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
6天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
17天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
6天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
17 1
服务架构的演进:从单体到微服务的探索之旅
|
5天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
25 5
|
8天前
|
监控 API 微服务
后端技术演进:从单体架构到微服务的转变
随着互联网应用的快速增长和用户需求的不断演化,传统单体架构已难以满足现代软件开发的需求。本文深入探讨了后端技术在面对复杂系统挑战时的演进路径,重点分析了从单体架构向微服务架构转变的过程、原因及优势。通过对比分析,揭示了微服务架构如何提高系统的可扩展性、灵活性和维护效率,同时指出了实施微服务时面临的挑战和最佳实践。
26 7