点击上方蓝色“方志朋”,选择“设为星标”

回复“666”获取独家整理的学习资料!

作者:Anakki

blog.csdn.net/qq_29519041/article/details/103654564

一.Zuul网关

网关,是一种网络关口,既然是关口,就需要知道哪些东西能通过哪些东西不能通过。

在微服务中,Zuul是SpringCloud众多组件中的一个,用于微服务的网关。在微服务中,各自服务之间的调用不可能都在各自服务中来实现安全与认证功能,因此需要一个专门的微服务来提供这些功能。

当请求从客服端发到服务器,如果经过网关的一系列验证和过滤符合访问要求,那么在之后访问其他微服务或由网关路由转发之后的访问时,不需要再做同样的安全认证。这是网关的主要功能。

实际上,Zuul给我们提供的网关服务种类是很多的。后面会介绍他的一些功能。

二.Zuul服务的前期准备

2.1 注册中心EurekaServer的搭建

为了搭建好网关后,能通过网关来访问各模块微服务来证明网关的搭建成功,因此这里需要提前搭建一些可用的微服务。第一步我们先新建一个Project

选择Springboot作为启动器,微服务的标配。

当然你用Maven的骨架来搭建也完全可以,构建项目并没有非要用哪一种方式搭建。重要的是后面你知道pom里应该引入那些依赖,application.yml怎么配置。这些才是搭建微服务需要主要的地方。这里我使用Spring Initializr

idea给你默认的内容如下:

Group和Artifact我们已经见得太多了,当我们指定这两个参数时,项目名和包名应该与之适配。不过当然可以不一样。

比如默认值 Group为com.example,Artifact为demo,那么项目名应该为demo和Artifact一致,包名Package应该为com.example.demo,为Group和Artifact的合体 。

当然这里不强制,只是一种规范,比如别人看见你的包名为com.example.demo时,立马可以知道他属于com.example组下的demo项目。一些使用语言,Java版本,项目类型啥的。

在这里因为我是作为测试springcloud相关组件的目的,那么我这里设置如下:

细心的朋友会发现,当我们改完1和2,idea会自动给我们修改3和4选项,既然是规范idea当然希望大家准守。改完1和2,我们点击Next。这一步相当于选择这个项目需要的一些组件,比如这个项目你需要用到springmvc?Mybatis?MySQL?那么在这里选择后,idea会去加载这些相关的依赖并在pom里为大家自动引入这些依赖。

这里我们要搭建一些测试的微服务,首先搭建1个Eureka注册中心。所有的微服务都需要在这里注册。

如上图选择Eureka Server,点Next,如下图,项目为zuul,而模组这里我们先搭建微服务的注册中心Eureka Server,所以这里我把模组名命名为eurekaserver,继续点Next。改了模组名,idea会默认在项目目录下建立模组的文件夹,因此可以看见第二个红框自动变化。继续点下一步。

因为我之前有项目所以这里选择开启新的idea窗口。New Window

点击import change之后等待idea加载依赖

查看项目结构:

此时我习惯把application.properties后缀改为yml。这样配置书写的格式符合yml的风格,比较好看。

现在需要做下面几件事,由于我们开始构建项目时选择了Eureka Server,所以pom.xml中不需要手动添加依赖了。

首先在启动类SpringcloudApplication中添加EurekaServer的注解:@EnableEurekaServer

然后在application.yml中添加相关配置:

server:port: 9000  #eureka注册中心服务端口eureka:instance:hostname: localhostclient:register-with-eureka: false #不向eureka注册中心注册。也就是为了关闭自己向自己注册,eureka默认要向自己注册fetch-registry: falseservice-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

就可以启动服务了:

访问注册中心:按照配置的端口号访问。我这里配了9000,端口随意,如下图代表Eureka注册中心部署成功了。

显示没有实例在此中心注册。没事接下来我们开始配置zuul网关,它也是一个服务需要注册到此注册中心来。

2.2 EurekaService的搭建

有了注册中心,我们现在需要搭建服务的真正提供者,EurekaService,第四节我们建四个。

eurekaservice01,eurekaservice02,eurekaservice03,eurekaservice04,第一个如下,第二三四个按着第一个的建,修改一下名字,端口号还有方法返回值。

需要用到mvc

服务提供者同样需要注册到注册中心。

改名你懂得

完成:

接下来是同样的套路,改yml,启动类添加注解:@EnableEurekaClient

yml配置如下(因为是测试所有很简陋):

server:port: 8900 # 服务提供方# 指定当前eureka客户端的注册地址,
eureka:client:service-url:defaultZone: http://${eureka.instance.hostname}:9000/eureka/instance:hostname: localhost#当前服务名称
spring:application:name: eurekaservice1

注意当前服务名称。这里用于注册到注册中心的名字,还可以启动很多同样为eurekaservice1的名字的微服务到注册中心,zuul从注册中心Eureka Server获取所有服务名为eurekaservice01的服务列表后,会采用负载均衡策略访问其中一台服务提供者获取资源。

下图我们之前zuul中的配置serviceId就是指向这里的服务名称,这是微服务调用的精髓,通过服务名调用。

既然是服务提供者 ,这里要编写controller类了:新建controller包,新建Test01类,编写REST的方法。返回服务1

按照服务提供者1的搭建方式,现在搭建服务提供者2:

同样是新建模组,名字改为...02,yml配置文件中端口号与服务1要不同,服务名称相同,为了测试负载均衡,REST方法返回值设为服务2。

yml:

server:port: 8901 # 服务提供方# 指定当前eureka客户端的注册地址,
eureka:client:service-url:defaultZone: http://${eureka.instance.hostname}:9000/eureka/instance:hostname: localhost#当前服务名称
spring:application:name: eurekaservice1

同样的方法再建两个服务提供者3和4,服务名称都为eurekaservice2,端口号分别为8902,和8903。REST方法返回值分别为,服务3和服务4。

三.Zuul服务搭建

有了第二节的准备,搭建了注册中心,和服务的提供者,我们现在开始搭建Zuul网关服务,最后通过zuul访问注册中心获取服务列表,然后访问服务提供者。

新建模组:

这里模组名设为zuul。包名设置为zuul,等会生成的启动类就会是带有zuul了。EurekaServer也可以这样只是我开始搭的时候没有注意到。

需要Eureka的客户端组件,和zuul组件,点next

模组名设为zuul,不强制

项目结构:

在启动类配置注解 @EnableEurekaClient,@EnableZuulProxy,@EnableZuulProxy可以称为@EnableZuulServer的增强版,当Zuul与Eureka、Ribbon等组件配合使用时,我们使用@EnableZuulProxy。

配置pom文件:

server:port: 9100spring:application:name: zuuleureka:client:service-url:defaultZone: http://localhost:9000/eureka/ #当前zuul网关想要注册到哪个注册中心这里注册到之前搭的9000上。#路由规则定义。这里定义两种路由规则route1和route2#,代表访问网关/test01/**或/test02/**时。#路由到服务名为 eurekaservice1或 eureka#service2中的服务集群去。zuul:routes:route1:path: /test01/\*\*serviceId: eurekaservice1route2:path: /test02/\*\*serviceId: eurekaservice2

启动项目:

聪明的你再去注册中心看就能看见zuul服务已经被注册到注册中心了

有了网关,

五.Zuul的访问

我们有一个网关服务zuul,一个注册中心eurekaserver,4个服务提供者eurekaservice,4个服务提供者,其中两个提供

服务名为eurekaservice1的服务,另外两个提供eurekaservice2的服务,现在我们来启动4个服务提供者,在注册中心查看,并通过网关访问测试网关的服务是否正常。

总项目结构:

启动后注册中心查看:

如之前所想,两个服务名下各两台服务提供者。

现在回想之前zuul的路由配置:

那么我访问zuul网关的test01/**下的任何服务都会给我转发到服务名为eurekaservice1下的01和02服务下。我们来试试

第一次访问:test01

第二次访问:test01

可以看见zuul网关做了转发和负载均衡,使用的是ribbon轮询的方式负载均衡。

那么可以猜想到我们访问test02,zuul网关会在服务名为eurekaservice2的服务3和服务4之间去访问了。我们来看看:

至此我们已经实践完成zuul网关的基本功能转发和负载均衡。

热门内容:
  • 你还在用Swagger?试试这个神器!

  • 一个 SpringBoot 项目该包含哪些?

  • 卸载Notepad++!事实已证明,它更牛逼……

  • 聊聊订单系统的设计?

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡

SpringCloud 之 Zuul 网关搭建及配置相关推荐

  1. SpringCloud Zuul 网关搭建及配置

    目录 一.Zuul网关 二.Zuul服务的前期准备 2.1 注册中心EurekaServer的搭建 2.2 EurekaService的搭建 三.Zuul服务搭建 五.Zuul的访问 六.Zuul的更 ...

  2. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!...

    本文同步Java知音社区,专注于Java 作者:kosamino http://www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服 ...

  3. 非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了!

    作者:kosamino www.cnblogs.com/jing99/p/11696192.html Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首 ...

  4. properties 配置回车_非常全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了! - 风平浪静如码

    Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务.也是 ...

  5. 全面的讲解SpringCloud中Zuul网关原理及其配置,看它就够了

    Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务.也是 ...

  6. 网关的作用是什么_SpringCloud中Zuul网关原理及其配置,看它就够了

    正文 Zuul是spring cloud中的微服务网关.网关:是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务 ...

  7. SpringCloud之Zuul网关服务

    Zuul是spring cloud中的微服务网关.网关: 是一个网络整体系统中的前置门户入口.请求首先通过网关,进行路径的路由,定位到具体的服务节点上. Zuul是一个微服务网关,首先是一个微服务.也 ...

  8. 【SpringCloud】zuul:网关

    我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现:而服务间通过Ribbon或Feign实现服务的消费以及均衡负载.为了使得服务集群更为健壮,使用Hy ...

  9. Zuul网关拦截器配置

    Zuul可以再陆游的时候对拦截的请求参数进行处理,确定如何响应. application.yml server:port: 80 ###网关名称 spring:application:name: se ...

最新文章

  1. 机器人运动学_不同D-H矩阵的对比
  2. 成功解决AttributeError: 'GradientBoostingRegressor' object has no attribute 'staged_decision_function'
  3. iis无法启动计算机上的服务器,Win7系统iis无法启动怎么解决?
  4. Java是否为整数_Java问题 输入一个数判定其是否为整数
  5. caffe框架翻译-理解(转载)
  6. 停止抱怨英语_停止抱怨垂直视频
  7. style对象的cssText方法
  8. c语言结构体中整形数组初始化,c – 将{0,0}在结构体中初始化数组?
  9. C# 或Asp.Net 将excel表格导入数据库
  10. 使用 Pandas 的 to_excel() 方法来将多个 csv 文件合并到一个 xlsx 的不同 sheets 内
  11. Java学习笔记1.1.1 搭建Java开发环境 - Java概述
  12. ubuntu安装vasp_用强大的GROMACS分析工具分析VASP的动力学结果
  13. treewidget怎么设置某一个item拖动的_如何零基础撸一个专车小程序?看这一文就够了!...
  14. WEB前端常用JavaScript代码知识点
  15. 安装 EoLinker_4.0 开源版
  16. CR网络和主网络的认知无线电切换算法
  17. matlab绘制符号函数的ezplot函数
  18. 阿里云无影云桌面分配用户是什么?
  19. 全球Top50搜索引擎排名,搜索引擎是什么意思
  20. 2019.02 随笔(一)

热门文章

  1. 《数据科学家养成手册》--第四章---数据科学的使命
  2. ASP.NET Core 2 学习笔记(七)路由
  3. 基于Android平台扫码识别并链接服务器demo
  4. POJ-2955 Brackets
  5. 【html】【13】特效篇--下拉导航
  6. Enterprise Library系列文章回顾与总结
  7. 青少年编程竞赛交流群周报(第038周)
  8. 【青少年编程】【三级】 魔术表演“开花”
  9. 【ACM】杭电OJ 1862
  10. 中国安全态势越来越好,专访山石网科CSO蒋东毅 | 拟合