Spring Cloud实战案例 │ Apollo和Zuul的整合开发

这篇具有很好参考价值的文章主要介绍了Spring Cloud实战案例 │ Apollo和Zuul的整合开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

Apollo是携程研发的开源配置管理中心,能够集中管理应用于不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

本案例结合一个案例介绍Apollo和Zuul的整合开发。整个应用分为4个微服务项目,分别是Eureka服务器项目mweathereurekaserver、服务提供者项目apolloconfig、服务提供者项目apollouser、服务消费者(即zuul路由服务)项目zuulapollo。

1、Apollo配置中心的准备和启动

1●Apollo配置中心的准备

为了让大家更快地了解Apollo配置中心(或称为服务器),Apollo研发者准备了一个Quick Start项目,通过该项目能够在几分钟内部署和启动Apollo配置中心。先从Quick Start的代码库(https://github.com/nobodyiam/apollo-build-scripts)中下载该项目的代码压缩包并进行解压缩。解压缩后的目录和文件如图1所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图1 解压缩后apollo-builds-scripts-master文件夹内的文件和目录

使用Apollo时先要确保安装的Java版本在1.8以上,安装的MySQL版本在5.6.5以上。由于Quick Start需要用到Git Bash环境,需要安装Git Bash(或者直接使用IDE的Git Bash环境)。

Apollo服务端需要两个数据库:ApolloPortalDB和ApolloConfigDB。通过Navicat for MySQL或MySQL原生客户端,导入解压缩包里sql目录下的文件apolloportaldb.sql和文件apolloconfigdb.sql。

Apollo服务端需要知道如何连接到前面创建的两个数据库,所以需要修改文件demo.sh中数据库连接信息。将root的用户名和密码改为您自己的MySQL的root用户名和密码。

2●Apollo配置中心的启动

在目录apollo-builds-scripts-master下启动Git Bash,执行如例E-1所示的命令启动Apollo配置中心。

【例1】启动Apollo配置中心的命令示例。

./demo.sh start

启动Apollo配置中心的命令、过程和结果如图2所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图2 Apollo配置中心的启动命令、过程和结果

在浏览器中输入localhost:8070,结果如图3所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图3 在浏览器中输入localhost:8070的结果

在图3中输入正确的Username(初始值为apollo)和Password(初始值为admin)后,结果如图4所示,显示已有一个项目默认SampleApp。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图4在图3中输入正确Username和Password后的结果

SampleApp项目的基本信息如图5所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图5 默认项目SampleApp的基本信息

2、本案例的结构说明和Apollo配置中心的内容设置

1●本案例的结构说明

        本案例的微服务之间的关系,如图6所示。zuul项目(zuulapollo)、Apollo配置中心(或称为配置中心)以及服务提供者项目apolloconfig和apollouser都要用到Eureka服务器。服务提供者项目apolloconfig、apollouser和zuul项目都要用到Apollo配置中心上的配置信息。用户访问微服务时,根据用户的不同由zuul项目将微服务apolloconfig或微服务apollouser分配给用户。本案例中用户除了可以访问zuul项目之外还可以直接访问项目apolloconfig或apollouser(正式情况下一般不能直接访问微服务)。为了对比,项目apolloconfig或apollouser均提供了返回文本内容和返回视图两类接口。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图6 本案例的微服务之间的关系

2●Apollo配置中心的内容设置

在 Apollo配置中心默认项目SampleApp中,增加如表1所示的配置内容。增加1条配置信息(以admin为例)的方法是单击项目SampleApp后,再单击“新增配置”按钮,弹出“添加配置项”对话框,如图7所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图7 “添加配置项”对话框

依次在Key文本框和Value文本框填写admin、admin,单击“提交”按钮。

表1要在 Apollo配置中心的默认项目SampleApp中增加的配置内容

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

按照同样方法设置表1中其他配置信息,单击“发布”按钮,结果如图8所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图8 向项目SampleApp增加配置内容并进行发布之后的结果

3、实现服务提供者项目apolloconfig

1●新建项目并添加依赖

新建项目apolloconfig,确保在文件pom.xml的<dependencies>和</dependencies>之间添加了Eureka Client、Web、Thymeleaf、Apollo Client依赖。

2●创建类、文件和修改配置文件

创建类AppConfig、ACController,并修改这些类的代码。

在目录src/main/resources/templates下创建文件admin.html,并修改其代码。

修改在目录src/main/resources下的配置文件application.properties。

4、实现服务提供者项目apollouser

1●新建项目并添加依赖

新建项目apollouser,确保在文件pom.xml的<dependencies>和</dependencies>之间添加了Eureka Client、Web、Thymeleaf、Apollo Client依赖。

2●创建类、文件和修改配置文件

创建类AppConfig、ACController,并修改这些类的代码。

在目录src/main/resources/templates下创建文件guest.html,并修改其代码。

修改在目录src/main/resources下的配置文件application.properties。

5、实现zuul项目zuulapollo

1●新建项目并添加依赖

新建项目zuulapollo,确保在文件pom.xml的<dependencies>和</dependencies>之间添加了Eureka Client、Web、Zuul、Apollo Client依赖。

2●创建类、修改入口类和配置文件

在包com.bookcode中创建类ZuulPropertiesRefresher,并修改其代码。

修改入口类,增加注解@EnableApolloConfig和注解@EnableZuulProxy。

修改在目录src/main/resources下的配置文件application.properties。

6、程序运行结果

依次运行项目mweathereurekaserver(端口为8761)、apolloconfig(服务名称为apolloconfig,端口为8765)、apollouser(服务名称为apollouser,端口为8760)、zuulapollo(服务名称为zuulapollo,端口为8665)。

1●apolloconfig服务运行结果

在浏览器中输入localhost:8765/userinfo,结果如图9所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图9 在浏览器中输入localhost:8765/userinfo的结果

在浏览器中输入localhost:8765/admin/userinfo,结果如图10所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图10 在浏览器中输入localhost:8765/admin/userinfo的结果

2●apollouser服务运行结果

在浏览器中输入localhost:8760/userinfo,结果如图11所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图11 在浏览器中输入localhost:8760/userinfo的结果

在浏览器中输入localhost:8760/guest/userinfo,结果如图12所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图12 在浏览器中输入localhost:8760/guest/userinfo的结果

3●zuulapollo服务运行结果

在浏览器中输入localhost:8665/admin/userinfo,结果如图13所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图13 在浏览器中输入localhost:8665/admin/userinfo的结果

在浏览器中输入localhost:8665/admin/admin/userinfo,结果如图14所示。对比图9和图13(或图10和图14),可以发现它们结果相同,即zuul路由项目zuulapollo对URL进行了转换处理。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图14 在浏览器中输入localhost:8665/admin/admin/userinfo的结果

在浏览器中输入localhost:8665/guest/userinfo,结果如图15所示。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图15 在浏览器中输入localhost:8665/guest/userinfo的结果

在浏览器中输入localhost:8665/guest/guest/userinfo,结果如图16所示。对比图11和图15(或图12和图16),可以发现它们结果相同,即项目zuulapollo对URL进行了转换处理。

Spring Cloud实战案例 │ Apollo和Zuul的整合开发,Python,Java,spring cloud,spring,后端,原力计划

■ 图16 在浏览器中输入localhost:8665/guest/guest/userinfo的结果

对比图13和图15(或图14和图16),可以发现项目zuulapollo对URL进行了解析并调用不同的服务(apolloconfig或者apollouser)为用户提供服务。

     文章来源地址https://www.toymoban.com/news/detail-628642.html

     

到了这里,关于Spring Cloud实战案例 │ Apollo和Zuul的整合开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud Zuul 基本原理

    Spring Cloud Zuul 底层是基于Servlet实现的,核心是通过一系列的ZuulFilter来完成请求的转发。 启用Zuul作为微服务网关,需要在Application应用类加上@EnableZuulProxy注解,而该注解核心是利用@Import注解往Spring容器导入了ZuulProxyConfiguration配置类 ZuulProxyConfiguration继承了ZuulConfiguration。 1

    2024年02月07日
    浏览(37)
  • 微服务网关:Spring Cloud Zuul 升级 Spring Cloud Gateway 的核心要点

    在routes路由规则中,根据path去匹配,如果匹配中,就使用对应的路由规则进行请求转发 如果无法从routes中匹配,则根据path用“/”去截取第一段作为服务名进行请求转发,转发时,默认将第一段截取调 如果截取的服务名不在注册中心中存在服务,则报错404 在routes路由规则中

    2024年02月07日
    浏览(64)
  • 实战:Spring Cloud Stream消息驱动框架整合rabbitMq

    相信很多同学都开发过WEB服务,在WEB服务的开发中一般是通过缓存、队列、读写分离、削峰填谷、限流降级等手段来提高服务性能和保证服务的正常投用。对于削峰填谷就不得不用到我们的MQ消息中间件,比如适用于大数据的kafka,性能较高支持事务活跃度高的rabbitmq等等,MQ的

    2024年02月08日
    浏览(45)
  • 在Spring Cloud中使用组件Zuul网关,并注册到Eureka中去

    在上一篇中,我们搭建了Spring Cloud的父子模块,并实现了一个Eureka子模块的启动,可以通过浏览器地址去访问Eureka主页了,相信了解过的童鞋应该看到,主页上并未有任何服务去注册,那么我们就在这篇,使用zuul网关作为第一个注册到Eureka注册中心的服务吧。 上一篇博文地

    2024年02月05日
    浏览(56)
  • 解密Spring Cloud Alibaba核心技术,实战案例书现世

    ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆 ❤️技术活,该赏 ❤️点赞 👍 收藏 ⭐再看,养成习惯 PC端左侧加我微信,进社群,有送书

    2024年02月12日
    浏览(42)
  • Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战

    项目源码 :youlai-mall 通过 Spring Cloud Gateway 访问认证中心进行认证并获取得到访问令牌。 再根据访问令牌 access_token 获取当前登录的用户信息。 Spring Security OAuth2 的最终版本是2.5.2,并于2022年6月5日正式宣布停止维护。Spring 官方为此推出了新的替代产品,即 Spring Authorization

    2024年02月04日
    浏览(42)
  • 云原生微服务治理经典套件之Spring Cloud Alibaba核心技术与实战案例

    送书第一期 《用户画像:平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 文章末尾有送书须知 ^ o ^,欢迎各位老板们! 云原生的微服务治理可以从以下几个方面进行: 服务注册与

    2024年02月08日
    浏览(118)
  • 【项目实战】一、Spring boot整合JWT、Vue案例展示用户鉴权

    【项目实战】Spring boot整合JWT、Vue案例展示用户鉴权 【微服务实战】JWT

    2024年02月09日
    浏览(50)
  • Spring Cloud Config、Apollo、Nacos和Archaius对比

    一、适应场景 Spring Cloud Config、Apollo、Nacos、Archaius这四个配置中心在功能和使用场景上有所差异。 1、Spring Cloud Config Spring Cloud Config是Spring Cloud官方提供的分布式系统的外部配置中心。它提供了服务器和客户端支持,可以集中管理不同环境、不同集群的配置,并且支持动态刷

    2024年02月09日
    浏览(30)
  • SSMP整合案例(2) Spring Boot整合Lombok简化实体类开发

    好啊 接着我们上文SSMP整合案例(1) 构建 Spring Boot Vue MySql项目环境 我们继续 接下来 我们要在java项目中 建立出数据库表对应的实体类 我们还是先看看自己上文中 创建的这个 book表 其中四个字段 主键id 数字枚举类型的type 字符串类型name 字符串类型 description 我们打开idea 找到上

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包