- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 Zuul 添加 Header
在网关层添加新的 Header 信息是很常见的,比如天剑唯一id、时间戳等。 如下伪代码添加 Header 头:@Component@Slf4jpublic class ModifyHeaderFilter extends ZuulFilter {...... @Override public Object run() throws ZuulException { ...
2018-10-31 17:29:03 4456
原创 Zuul 使用 OKHttp 替换 HttpClient
引入依赖<!-- OKHttp 支持 --><dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId></dependency>开启 OKHttp 支持### Ribbo
2018-10-31 17:24:45 3869
原创 Zuul 修改请求体内容
样例代码:/** * @Author:大漠知秋 * @Description:修改请求体内容 * @CreateDate:4:35 PM 2018/10/31 */@Component@Slf4jpublic class ModifyRequestEntityFilter extends ZuulFilter { @Override public String...
2018-10-31 17:19:59 2444
原创 Zuul 上传文件
Zuul 的上传文件功能是从 Spring Boot 及成果来的,所以直接进行 Spring Boot 的相关配置即可spring: servlet: multipart: # 是否启用分段上传支持,默认:true enabled: true # 最大单个文件大小。值可以使用后缀“MB”或“KB”分别表示兆字节或千字节。默认:1MB ...
2018-10-31 16:22:41 1237
原创 Zuul 基于 Eureka 元数据的弧度发布
文章目录灰度发布概述灰度发布概述 灰度发布,是指在系统迭代新功能时的一种平滑过渡的上线发布方式。灰度发布是在原有系统的基础上,额外增加一个新版本,这个新版本包含我们需要待验证的新功能,随后用负载均衡器引入一小部分流量到这个新版本应用,如果整个过程没有出现任何差错,再平滑地把线上系统或服务一步步替换成新版本,至此完成了一次灰度发布,如下图所示: 这种发布方式由于可以在用户无感知的情况下完...
2018-10-31 16:09:00 1168 2
原创 Zuul Filter
文章目录简介Filter 类型Zuul 原生 Filter简介 Zuul 的核心逻辑是由一系列紧密配合工作的 Filter 来实现的,它们能够在进行 HTTP 请求或者响应的时候执行相关操作。可以说,没有 Filter 责任链,就没有如今的 Zuul,更不可能构成功能丰富的网关。基本上你想要在网关实现的功能都要与 Filter 有关。它是 Zuul 中最为开放与核心的功能。 Zuul Fil...
2018-10-30 17:51:43 18434
原创 Zuul 重试
在生产环境中,总会因为种种原因(无论是网络、性能等)导致档次请求的失败,这时候就需要使用到重试了,Zuul 可以结合 Ribbon(默认集成)进行重试。引入依赖&lt;dependency&gt; &lt;groupId&gt;org.springframework.retry&lt;/groupId&gt; &lt;artifactId&gt;sp
2018-10-30 15:57:13 1367
原创 Zuul 重定向问题
客户端通过 Zuul 请求认证服务,认证成功之后重定向到一个欢迎页,但是发现重定向的这个欢迎页的 host 变成了这个认证服务的 host,而不是 Zuul 的 host,如下图所示,直接暴露了认证服务的地址,我们可以在配置里面解决掉这个问题。### 网关配置zuul: routes: demo-order: path: /do/** serviceI...
2018-10-30 13:59:08 9582 4
原创 Zuul 不向后端服务传递指定 Headers
### 网关配置zuul: routes: demo-order: path: /do/** serviceId: demo-order stripPrefix: true # 不向后端服务传递的敏感头信息 sensitiveHeaders: Cookie,Set-Cookie,Authorization...
2018-10-30 13:56:15 1965
原创 Zuul 屏蔽服务和指定路径
有时我们的一些后端服务并不想暴露出去,我们可以通过屏蔽服务或者路径的方式来进行实现:### 网关配置zuul: routes: demo-order: path: /do/** serviceId: demo-order stripPrefix: true # 忽略的服务,有些后端服务是不需要让网管代理的,防止服务侵入 ignored...
2018-10-30 13:54:44 1993
原创 Zuul 路由前缀
给被 Zuul 代理的服务添加统一的前缀:### 网关配置zuul: routes: # 使用 prefix 添加前缀 prefix: /pre demo-order: path: /do/** serviceId: demo-order 这样访问网关的时候实际就是:/pre/do/add,实际代理到后端服务的请求路径是:/do/add...
2018-10-30 13:52:22 4017 2
原创 Zuul 路由配置
文章目录单实例 serviceId 映射单实例 url 映射使用 Ribbon 的负载均衡路由forward 本地跳转路径映射规则加载顺序通配符单实例 serviceId 映射详细配置### 网关配置zuul: # 路由信息配置 routes: # 针对某个服务的配置,可自定义 demo-order: # 访问的路径,此处要以 '/do/' 开头 ...
2018-10-30 13:44:22 5506 1
原创 Zuul 入门
文章目录功能简介 Zuul is the front door for all requests from devices and web sites to the backend of the Netflix streaming application. Zuul 是从设备和网站到后端应用程序所有请求的前门,为内部服务提供可配置的对外 URL 到服务的映射关系,基于 JVM 的后端路由...
2018-10-30 11:09:42 562
原创 Spring Boot Admin 使用
文章目录服务端客户端 Spring Boot Admin 主要是用来监控基于 Spring Boot 的项目,在 Actuator 的基础上封装了一层 UI。 相应的也提供了许多功能,如:服务监控、日志级别管理、运行信息查看、环境参数配置等。服务端引入依赖<!-- Spring Cloud Admin Server --><dependency> ...
2018-10-29 17:40:42 2403 1
原创 Hystrix 配置说明
文章目录配置参数Hystrix 线程调整配置参数 Hystrix 配置项比较多,下面整理了一下常用的一些配置配置项默认值推荐值说明feign.hystrix.enabled高版本中:falsetrue是否开启 Hystrix 对 Feign 的支持hystrix.command.default.execution.isolation.strategy...
2018-10-29 16:27:17 424
原创 Hystrix 异常处理机制
文章目录错误类型错误信息获取错误类型 Hystrix 的异常处理中,有5种出错的情况下会被 fallback 所截获,从而触发 fallback,这些情况是:FAILURE:执行失败,抛出异常。TIMEOUT:执行超时。SHORT_CIRCUITED:断路器打开。THREAD_POOL_REJECTED:线程池拒绝。SEMAPHORE_REJECTED:信号量拒绝。 有一种...
2018-10-29 15:21:36 3106
原创 Hystrix Turbine
Hystrix Dashboard 在集群环境下的作用基本上可以忽略,所以需要一种方式来聚合整个集群下的监控状况,Turbine就是用来聚合所有相关的 hystrix.stream 流的解决方案,最后在 Hystrix Dashboard 中显示出来。...
2018-10-29 15:02:40 480
原创 Hystrix Dashboard
文章目录简介搭建工程要点记录简介 Hystrix Dashboard 仪表盘是根据系统一段时间内发生的请求情况来展示的可视化面板,这些信息是每个 HystrixCommand 执行过程中的信息,这些信息是一个指标集合和具体的系统运行情况。搭建工程 这里在原有的基础上新建一个 Hystrix Dashboard 工程。引入依赖&lt;!-- Spring Cloud Hystr...
2018-10-29 14:12:19 1439
原创 Hystrix 入门
文章目录简介简介 官方是这么说的: Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable re...
2018-10-29 11:01:38 166
原创 Ribbon 脱离 Eureka 进行负载
在一些特殊的情况下,我们可能并不希望 Ribbon 直接使用 Eureka 的注册列表进行负载,想要手动指定一个或者多个注册服务,从而使用另外的一个或者多个注册列表进行负载。先禁用 Ribbon 的 Eureka 功能:### Ribbon 配置ribbon: # Eureka 配置 eureka: # 禁止使用 Eureka enabled: false...
2018-10-26 23:01:41 1215
原创 Ribbon 饥饿加载
Ribbon 在进行客户端负载均衡的时候并不是在启动时就加载上下文,而是在实际请求的时候才去创建,因此这个特性往往会让我们的第一次调用显得颇为疲软乏力,严重的时候会引起调用超时。所以我们可以通过指定 Ribbon 具体的客户端的名称来开启饥饿加载,即在启动的时候便加载所有配置项的应用程序上下文。 如下是在未开启饥饿加载时,第一次请求会打印的日志:开启 Ribbon 饥饿加载方式:...
2018-10-26 17:50:27 2198
原创 Ribbon 超时与重试
在 Spring Cloud Finchley 版 Ribbon 的重试机制是默认开启的,默认重试一次。针对单个服务的重试与超时配置:### 针对单个服务的 Ribbon 配置demo-goods: ribbon: # 基于配置文件形式的 针对单个服务的 Ribbon 负载均衡策略 NFLoadBalancerRuleClassName: com.netfli...
2018-10-26 17:44:23 6667
原创 Ribbon 负载均衡策略配置
文章目录Ribbon 的负载均衡策略全局策略设置增加 Ribbon 负载均衡策略配置类基于注解的针对单个服务的 Ribbon 负载均衡策略注解方式配置文件方式 这个负载策略配置说白了就是让 Ribbon 这个客户端负载均衡器怎么进行访问服务提供者列表。是轮流访问?随机访问?权重?等。Ribbon 的负载均衡策略策略类命名说明RandomRule随机策略随机选择 S...
2018-10-26 10:51:45 11178 2
原创 Ribbon 入门
文章目录Ribbon 简介入门案例引入依赖在启动类中注入配置编写 ControllerRibbon 简介 Ribbon 是一个客户端负载均衡器(Nginx 为服务端负载均衡),它赋予了应用一些支配 HTTP 与 TCP 行为的能力,可以得知,这里的客户端负载均衡也是进程内负载均衡的一种。它在 Spring Cloud 生态内是一个不可缺少的组件,少了它,服务便不能横向扩展,这显然是有违云原生...
2018-10-25 18:14:51 783
原创 Feign Client 第一次请求超时
有时,在项目启动之后,第一次进行 Feign 请求时,会超时。这是因为,Hystrix 开启之后的默认超时时间是 1 秒,如果在这一秒内还没有做出响应那么就会超时,进入 fallback 代码。由于 Bean 装配和懒加载机制等,Feign 在首次请求的时候相对较慢。下面三种方法可以解决 1 秒问题:将 Hystrix 的超时时间调高,如:### Hystrix 配置hystrix:...
2018-10-25 17:25:21 6932
原创 Feign Client Upload File
早期的 Feign 是不支持文件上传的,后来支持了,但是有部分缺陷,需要一次性读取到内存中再编码发送。引入 Feign Client 文件上传依赖&lt;!-- Feign Client 上传文件支持 --&gt;&lt;dependency&gt; &lt;groupId&gt;io.github.openfeign.form&lt;/groupId&g
2018-10-25 15:56:45 1913
原创 Feign GET 多参数传递
Spring MVC 是支持 GET/POST 多参数传递的,但是 Feign 并没有实现所有的 Spring MVC 的功能,暂时是不支持 GET 的 POJO 传递方法。一般的解决办法有一下三种:把 POJO 拆散成一个一个单独的属性放在方法参数里。把方法参数变成 Map 传递。使用 GET 传递 @Requestbody,但此方式违反 RESTFul 规范。 以上三种方法...
2018-10-25 15:13:42 11314
原创 Feign 默认 Client 替换
文章目录使用 HTTP Client 替换掉 Feign 默认 Client使用 OKHttp 替换掉 Feign 默认 Client Feign 在默认情况下使用的是 JDK 原生的 URLConnection 发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用 HTTP 的 persistence connection。我们可以用 Apache 的 HttpClient...
2018-10-25 14:10:28 7880
原创 Feign Client 超时配置
文章目录Ribbon 超时配置Hystrix 超时配置开启 Hystrix Feign 其实是一种包装,把复杂的 Http 请求包装成我们只需写一两个注解就可以搞定的地步。他底层使用的还是 Ribbon。 Feign 的调用,总共分为两层,即 Ribbon 的调用和 Hystrix(熔断处理) 的调用,高版本的 Hystrix 默认是关闭的。Ribbon 超时配置 如果出现上图...
2018-10-24 18:28:01 28902 2
原创 Feign Client Logger Configuration
文章目录针对每一个 Feign 配置日志级别增加 Logger.Level Bean针对每一个 Feign 配置日志级别### Feign Logger Level 配置logging: level: # 此处要将对应 Feign 的日志界别设置成 DEBUG,因为 Feign 的 Logger.Level 只对 DEBUG 作出响应 com.lynchj.demoorder...
2018-10-24 17:16:26 1923 1
原创 Feign 开启 GZIP 压缩
Spring Cloud Feign 支持对请求和响应进行GZIP压缩,以提高通信效率。注意:Spring Cloud 版本:Finchley.RELEASE配置文件新增### Feign 配置feign: compression: request: # 开启请求压缩 enabled: true # 配置压缩的 MIME TYPE...
2018-10-24 15:19:08 5630
原创 Feign 基本使用
文章目录Feign 概述什么是 FeignFeign 入门案例引入依赖Feign 接口编写Controller结果Feign 工作原理@FeignClient 注解 在开发 Spring Cloud 微服务的时候,我们知道,服务之间都是以 HTTP 接口的形式对外提供服务的,因此消费者在进行调用的时候,底层就是通过 HTTP Client 的这种方式进行访问。当然我们可以使用JDK原生的 U...
2018-10-24 15:07:32 62431 6
原创 Eureka 常见故障
文章目录Eureka Server 全部不可用Eureka Client 启动前 Eureka Server 全部不可用Eureka Client 运行时 Eureka Server 不可用Eureka Server 部分不可用Client 端Server 端Eureka Server 全部不可用Eureka Client 启动前 Eureka Server 全部不可用 如果 Eureka...
2018-10-24 13:45:07 4978
原创 Eureka 开启 HTTP Basic 认证
文章目录Eureka Server 配置引入依赖增加 Spring Security 配置类增加配置信息 在真正的生产环境中,我们最不能忽视的就是安全问题,我们的 Eureka Server 是有自己的一套 REST API 服务的,如果不进行认证的话,岂不是知道的人就能进行注册操作?进行下线操作?Eureka Server 配置引入依赖 要启用 Eureka Server 的安全...
2018-10-23 15:13:23 1026
原创 Eureka 的设计理念
文章目录概述服务实例如何注册到服务中心服务实例如何从服务中心剔除服务实例信息的一致性问题AP 优于 CPPeer to Peer 架构主从复制对等复制客户端服务端SELF PRESERVATION 设计概述 作为一个服务注册以及发现中心,需要解决很多问题。服务实例如何注册到服务中心 本质上就是在服务启动的时候,需要调用 Eureka Server 的 REST API 的 regi...
2018-10-22 17:41:35 706
原创 Eureka Server REST API
文章目录REST API 介绍REST API 实战查询所有应用实例根据 AppId 查询根据 AppId 及 instanceId 查询根据 instanceId 查询注册新应用实例注销应用实例暂停/下线应用实例恢复应用实例应用实例发送心跳修改应用实例元数据REST API 介绍 Eureka 在 GitHub 的 wiki 上专门写了一篇《 Eureka REST operations》...
2018-10-22 15:29:59 17323 4
原创 Eureka 入门
文章目录简介Eureka服务发现的技术选型案例1. 创建父级工程2. 创建 Eureka Server Module3. 创建 Eureka Client简介Eureka Eureka 是 Netfix 公司开源的一款服务发现组件,该组件提供的服务发现可以为负载均衡、Failover 等提供支持,如下图所示。Eureka 包括 Eureka Server 及 Eureka Client。E...
2018-10-22 13:44:46 524
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人