springcloud13---zuul
Zuul:API GATEWAY (服务网关):
http://blog.daocloud.io/microservices-2/
一个客户端不同的功能请求不同的微服务,那么客户端要知道所有微服务的ip和端口,如果有的微服务不是rest协议是用的别的协议,有时候有可能几个微服务要合并,上面都是问题。
所以前面要加一个服务网关,客户端只需要知道网关的ip和端口就可以了,网关知道后面微服务的ip和端口,缺点是要考虑网关的高可用。
Ribbon是客户端的负载均衡器,Zuul是服务端的负载均衡器。
使用http://192.168.88.1:7901/simple/1直接访问user微服务(7901是user的微服务地址),
http://192.168.88.1:8040/microservice-provider-user/simple/1(8040是zuul的端口,microservice-provider-user是user微服务的application:name)。通过zuul就可以访问user服务了。
给user微服务指定别名。默认代理所有注册到eureka上的微服务。
一个工程只有src和pom文件,加入.project文件然后更新工程就会出现.classpath文件和其他的文件就可以跑起来了。
经过zuul的请求都会通过hysitrcs包裹,所以zuul会有断路器功能。zuul还使用了ribbon做负载均衡。
Zuul过滤器:
Zuul有4中过滤器,PRE,ROUTING,POST,ERROR。Pre先执行然后routing,然后post然后error.
pre是zuul请求别的微服务之前,routing是请求过程中的,post是请求到微服务之后可以添加一些header,error是抛异常了。
也可以自定义过滤器。
周立springclud : http://www.itmuch.com/advertisment/my-spring-book/
package com.itmuch.cloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.zuul.EnableZuulProxy;@SpringBootApplication @EnableZuulProxy //使用这一个注解就可以注册到eureka, public class ZuulApplication {public static void main(String[] args) {SpringApplication.run(ZuulApplication.class, args);} }
spring:application:name: microservice-gateway-zuul server:port: 8040 eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka instance:prefer-ip-address: true zuul:routes:abc: # abc随意,只要唯一就可以path: /user-path/** # 使用user-path访问user微服务serviceId: microservice-provider-user # 注册到eureka的服务的application名字# http://localhost:8040/routes : 查看zuul代理的微服务 # {"/user-path/**":"microservice-provider-user","/microservice-provider-user/**":"microservice-provider-user"} # 就可以使用zuul来代理user微服务:http://localhost:8040/microservice-provider-user/simple/1 # zuul的请求都用hystrix包裹:http://localhost:8040/hystrix.stream
spring:application:name: microservice-gateway-zuul server:port: 8040 eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka instance:prefer-ip-address: true zuul:prefix: /simplestrip-prefix: false logging:level:com.netflix: debug
spring:application:name: microservice-gateway-zuul server:port: 8040 eureka: #注册到eureka server上面去client:service-url:defaultZone: http://user:password123@localhost:8761/eureka instance:prefer-ip-address: true#prefer-ip-address: false # localhost:microservice-gateway-zuul:8040#经过zuul的请求都会通过hysitrcs包裹,配置hysitrcs的超时时间 hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000#zuul还使用了ribbon做负载均衡,要设备ribbon的超时时间 ribbon:ConnectTimeout: 3000ReadTimeout: 60000
spring:application:name: microservice-gateway-zuul server:port: 8040 eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka instance:prefer-ip-address: true zuul:prefix: /api # http://192.168.88.1:8040/api/microservice-provider-user/simple/1 前缀加服务的名称strip-prefix: true # 为false就不能通过加前缀/api来访问了, logging:level:com.netflix: DEBUG
spring:application:name: microservice-gateway-zuul server:port: 8040 eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka instance:prefer-ip-address: true zuul:routes:abc:path: /user-url/**url: http://192.168.85.1:7900/
spring:application:name: microservice-gateway-zuul server:port: 8040 eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka instance:prefer-ip-address: true zuul:routes:abc: #只针对abc路由path: /user-url/**service-id: microservice-provider-user ribbon:eureka:enabled: false # http://192.168.88.1:8040/microservice-provider-user/simple/1 会从7901和7902这2个节点来请求 microservice-provider-user: # 这边是ribbon要请求的微服务的serviceId,7901和7902是2个user微服务,ribbon:listOfServers: http://localhost:7901,http://localhost:7902
spring:application:name: microservice-gateway-zuul server:port: 8040 eureka:client:service-url:defaultZone: http://user:password123@localhost:8761/eureka instance:prefer-ip-address: true zuul:ignoredServices: microservice-consumer-movie-ribbon-with-hystrix #不想反向代理microservice-consumer-movie-ribbon-with-hystrix微服务routes:microservice-provider-user: /user/** #user微服务的别名# 现在http://192.168.88.1:8040/user/simple/1访问user微服务,原来http://192.168.88.1:8040/microservice-provider-user/simple/1#默认zuul会反向代理所有注册到eureka的微服务
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.itmuch.cloud</groupId><artifactId>microservice-spring-cloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>microservice-gateway-zuul</artifactId><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><!-- 依赖,还要加eureka client的依赖 --><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency></dependencies></project>
springcloud13---zuul相关推荐
- 【微服务架构】SpringCloud之路由网关(zuul)
什么是zuul zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架.Zu ...
- zuul两大作用_SpringCloud微服务(05):Zuul组件,实现路由网关控制
一.Zuul组件简介 1.基础概念 Zuul 网关主要提供动态路由,监控,弹性,安全管控等功能.在分布式的微服务系统中,系统被拆为了多个微服务模块,通过zuul网关对用户的请求进行路由,转发到具体的后 ...
- spring cloud微服务治理eureka、hystrix、zuul代码例子
spring cloud微服务中台服务代码例子,包括eureka.hystrix.zuul https://github.com/birdstudiocn/spring-cloud-sample/tr ...
- zuul 启动 threw exception_SpringCloud-Zuul-网关路由过滤器
标注: SpringBoot版本:<version>2.1.11.RELEASE</version> SpringCloud版本:<spring-cloud.versio ...
- java 类隔离_微服务架构中zuul的两种隔离机制实验
ZuulException REJECTED_SEMAPHORE_EXECUTION 是一个最近在性能测试中经常遇到的异常.查询资料发现是因为zuul默认每个路由直接用信号量做隔离,并且默认值是100 ...
- Spring Cloud入门教程 - Zuul实现API网关和请求过滤
简介 Zuul是Spring Cloud提供的api网关和过滤组件,它提供如下功能: 认证 过滤 压力测试 Canary测试 动态路由 服务迁移 负载均衡 安全 静态请求处理 动态流量管理 在本教程中 ...
- Spring Cloud(七)服务网关 Zuul Filter 使用
上一篇文章中,讲了Zuul 转发,动态路由,负载均衡,等等一些Zuul 的特性,这个一篇文章,讲Zuul Filter 使用,关于网关的作用,这里就不再次赘述了,重点是zuul的Filter ,我们可 ...
- Spring Cloud(六)服务网关 zuul 快速入门
服务网关是微服务架构中一个不可或缺的部分.通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由.均衡负载功能之外,它还具备了权限控制等功能.Spring Cloud Netflix中 ...
- springCloud Zuul网关
1.springboot 仅2.0.x 支持,在此选择 2.0.7 2.新建Module eureka-zuul-client 3.导入依赖 <?xml version="1.0&qu ...
- SpringCloud的服务网关zuul
演示如何使用api网关屏蔽各服务来源 一.概念和定义 1.zuul最终还是使用Ribbon的,顺便测试一下Hystrix断路保护 2.zuul也是一个EurekaClient,访问服务注册中心,获取元 ...
最新文章
- 头条小视频和西瓜视频signature签名算法
- Java的死锁的例子
- tensorflow 实现逻辑回归——原以为TensorFlow不擅长做线性回归或者逻辑回归,原来是这么简单哇!...
- 跑深度学习在Linux服务器上常用操作(ssh, screen, tensorboard, jupyter-notebook)
- libjpeg在windows下的编译
- JavaScript设计模式: 接口模仿
- plc ge c语言编程,GE PLC编程软件快速入门手册.pdf
- 深度装机大师一键重装_电脑店U盘重装系统教程
- USB加密狗复制USBTrace数据截取工具分享
- 科技论文之Introduction部分写作
- 英特尔超级计算机显卡,美国公布首台百亿亿次超级计算机!用上Intel Xe独立显卡...
- 浅析企业应收账款保理融资
- app中跳转到手机浏览器,部分手机白屏解决(Vue)
- win10合并硬盘合区(win10怎样合并硬盘的两个分区)
- 古琴【A1】基本指法
- 注入winlogon
- HEVC区域划分Slice Tile CTU CU PU TU
- BZOJ 1124 [POI2008]枪战Maf 贪心+乱搞
- 新手入门刷题(专题三)暴力枚举
- python写自动化测试脚本常见报错_Appium自动化测试
热门文章
- 数据存储之SharedPreferences
- 兰州大学计算机考研专硕学费,2018年兰州大学在职硕士研究生学费标准
- 学习笔记Kafka(三)—— Kafka安装配置(2)—— Kafka单代理及常用操作
- hive相对于oracle的优点,【Hive】Hive面试题
- was连接oracle rac集群,Oracle集群(RAC)及 jdbc 联接双机数据库
- pcm 采样率转换_44.1KHz够用吗?我们是否需要更高的采样率?
- 哨兵机器人钢力士_哨兵胳膊都被卸了?巴西厂X战警钢力士正式公布
- sublime c 语言 编译环境搭建,详解sublime搭建C/C++编译环境
- swing查询输入框无值时出现null异常_如何优雅处理代码中 Null 值引起的 Bug?告别 Null 恐惧症!...
- vue中 .sync 修饰符 个人理解