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

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本系列文章演示如何用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
目录
相关文章
|
12天前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
45 2
|
16天前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
48 2
|
2天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型加速的今天,云原生技术以其高效、灵活、可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生环境下微服务治理的策略与实践路径,旨在为读者提供一个系统性的微服务治理框架,涵盖从服务设计、部署、监控到运维的全生命周期管理,助力企业在云端构建更加稳定、高效的业务系统。 ####
|
3天前
|
运维 监控 Cloud Native
云原生架构下,微服务治理的艺术与实践####
【10月更文挑战第14天】 在数字化转型的大潮中,云原生技术以其高效、灵活与可扩展性成为企业IT架构的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务治理的策略与实践,揭示了如何通过精细化管理提升系统的响应速度、稳定性和可维护性。不同于传统的摘要概述,本文摘要旨在直接触及读者关注的核心——即如何在复杂多变的云环境中,实现微服务的高效协同与治理,为读者提供一个清晰的行动指南。 ####
11 1
|
5天前
|
测试技术 uml
#如何画好架构图:7种常用类型与示例
【10月更文挑战第12天】 架构图是展示系统结构和组件之间关系的图形表示,它对于理解系统的组织和设计至关重要。在不同的上下文中,架构图的类型和细节会有所不同。以下是7种常用的架构图类型及其示例:
16 2
|
13天前
|
Kubernetes 安全 微服务
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战
38 8
|
1月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
1月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1
|
2月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器到微服务的架构演变
【8月更文挑战第29天】在数字化时代的浪潮下,云原生技术以其灵活性、可扩展性和弹性管理成为企业数字化转型的关键。本文将通过浅显易懂的语言和生动的比喻,带领读者了解云原生的基本概念,探索容器化技术的奥秘,并深入微服务架构的世界。我们将一起见证代码如何转化为现实中的服务,实现快速迭代和高效部署。无论你是初学者还是有经验的开发者,这篇文章都会为你打开一扇通往云原生世界的大门。
|
17天前
|
消息中间件 负载均衡 Cloud Native
云原生之旅:从容器到微服务的架构演变
在数字化转型的风潮中,云原生技术以其灵活性、可扩展性和弹性而备受青睐。本文将通过一个虚拟的故事,讲述一个企业如何逐步拥抱云原生,实现从传统架构向容器化和微服务架构的转变,以及这一过程中遇到的挑战和解决方案。我们将以浅显易懂的方式,探讨云原生的核心概念,并通过实际代码示例,展示如何在云平台上部署和管理微服务。