SpringCloud全家桶学习之路由网关----Zuul(六)
一、Zuul概述
(1)Zuul是什么?
Zuul包含了对请求的路由和过滤的两个最主要的功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础;而过滤功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础,Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过zuul跳转后获得。
注:
①Zuul服务最终还是会注册到Eureka
②提供代理、路由、过滤三大功能
本项目地址:https://github.com/Simple-Coder/microservice-demo-study
(2)官网介绍
源码参考地址:https://github.com/Netflix/zuul/wiki/Getting-Started-2.0

二、Zuul路由基本配置
(1)Maven模块结构图

(2)microservice-zuul-gateway9527模块添加pom依赖
<!--zuul相关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
<!--eureka相关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
pom
(3)microservice-zuul-gateway9527模块添加:application.yml
server:
port: 9527
spring:
application:
name: microservice-zuul-gateway
eureka:
client:
service-url:
defaultZone: http://eureka8001:8001/eureka,http://eureka8002:8002/eureka,http://eureka8003:8003/eureka
instance:
instance-id: gateway-9527
prefer-ip-address: true info:
app.name: microservice-zuul-gateway
company.name: www.microservice.com
build.artifactId: $project.artifactId$
build.version: $project.version$
application.yml
(4)本地hosts文件修改:C:\Windows\System32\drivers\etc

(5)依次启动3个eureka、1个provider、网关zuul-gateway,出现以下界面说明启动成功!

(6)测试(分为使用路由、不使用路由2个测试)
①不使用路由访问:http://localhost:9001/provider/get/1001

②使用路由访问:http://myzuul.com:9527/microservice-provider/provider/get/1001(http://本地网关hosts名:端口/服务提供者服务名称/具体地址映射)

至此,zuul的基本配置完成,接下来就是zuul路由访问映射规则
三、Zuul路由访问映射规则
我们上边的测试:http://myzuul.com:9527/microservice-provider/provider/get/1001,红色部分使用的是真实的微服务名称,在实际生产中肯定不会暴露出来的。所以需要对网关的配置文件进行修改完成以下功能:
(1)之前访问:http://myzuul.com:9527/microservice-provider/provider/get/1001

(2)application.yml添加如下配置:

(3)现在访问:http://myzuul.com:9527/myprovider/provider/get/1001

(4)此时问题
以上两个地址此时都可以访问成功!违反了单入口的原则,所以application.yml文件还需添加以下内容! 
(5测试
①访问:http://myzuul.com:9527/microservice-provider/provider/get/1001,界面如下测试成功!

②访问:http://myzuul.com:9527/myprovider/provider/get/1001,界面如下,说明忽略微服务真实名称成功!

此时,微服务名称对外不暴露,只提供对外访问的部分url,通过网关配置完成!
四、总结
zuul模块相对其他模块来说,helloworld入门比较简单,做了以下小总结:
①zuul主要提供路由转发和过滤功能
②zuul最终还是会注册到eureka,从eureka中获取其他微服务信息
参考地址:https://www.iteye.com/blog/huan1993-2424676
SpringCloud全家桶学习之路由网关----Zuul(六)的更多相关文章
- SpringCloud全家桶学习之Feign负载均衡----Feign(四)
一.Feign概述 (1)Feign是什么? 官网地址:https://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-f ...
- 白话SpringCloud | 第十一章:路由网关(Zuul):利用swagger2聚合API文档
前言 通过之前的两篇文章,可以简单的搭建一个路由网关了.而我们知道,现在都奉行前后端分离开发,前后端开发的沟通成本就增加了,所以一般上我们都是通过swagger进行api文档生成的.现在由于使用了统一 ...
- SpringCloud全家桶学习之服务注册与发现及Eureka高可用集群搭建(二)
一.Eureka服务注册与发现 (1)Eureka是什么? Eureka是NetFlix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故 ...
- SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...
- 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...
- 【SpringCloud】第五篇: 路由网关(zuul)
前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选. ...
- 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f5-zuul/ 本文出自方志朋的博客 在微服务架构中,需要几 ...
- SpringCloud全家桶学习之一阶段总结(一)
一.概述 前几篇小博客记录了我学习SpringCloud组件的过程,并与工作中所用的Dubbo框架做了一点比较,基本组件:Eureka.Ribbon.Hystrix.Feign.Zuul.Config ...
- SpringCloud全家桶学习之概览(一)
一.概览 根据百度百科的描述,微服务架构是一项在云中部署应用和服务的新技术.而SpringCloud是微服务架构思想的一个具体实现,它为开发人员提供了构建分布式系统中一些常见模式的工具(服务注册与发现 ...
随机推荐
- 搭建Hexo实现个人网站详细教程
全网最全小白搭建Hexo+Gitee/Coding/Github 全网最全小白搭建Hexo+Gitee/Coding/Github 本站内容已全部转移到https://www.myyuns.ltd,具 ...
- Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length()
今天遇到一个错误,没有定义一个openssl_cipher_iv_length()方法,可是我明明开启OpenSSL了啊 如果开启了还报错 只需要把php的目录加入环境变量 -重启电脑 就解决了 但 ...
- Pandas数据结构(一)——Pandas Series
Pandas 是 Python 中基于Numpy构建的数据操纵和分析软件包,包含使数据分析工作变得快速简洁的高级数据结构和操作工具.通过Pandas Series 和 Pandas DataFrame ...
- Nginx之server和location配置使用
配置server代码段: server { server_name www.meiduo.site; listen ; root /home/python/Desktop/meiduo_mall_ad ...
- Python代码混淆和加密技术
Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. http: ...
- 出现xxxtbox问题又有集群网络等问题时的解决
出现xxxtbox问题又有集群网络等问题时的解决 集群环境本身问题引发 重新rancher上删除集群,正常构建集群成功,环境就没问题,否则由于环境问题怎么找解决方案都有问题
- python eval() 进行条件匹配
最近开发一个功能,根据条件表达式过滤数据,其中用到了eval(条件字符串,字典) 发现一个现象: >>> print u"campGrade in [ '\u51cf\u8 ...
- mac登录窗口出现白框问题解决
昨天早上起床打开电脑,发现登录窗口的界面出现了大半边的白框,如下图,可是昨晚上关机前还是好好的,而且新电脑不至于啥也没干屏幕就出问题. 输入密码进入桌面,OK,不是屏幕的问题,那为什么会出现白框呢? ...
- Javascript模块化编程之CommonJS,AMD,CMD,UMD模块加载规范详解
JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问 题进行系 ...
- python面向对象封装案例2
封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类 ...