Spring Cloud Finchley.RELEASE
Spring Cloud Finchley.RELEASE
大漠知秋
为了不显得懒,我还是写点东西吧
展开
-
Zuul 不向后端服务传递指定 Headers
### 网关配置zuul: routes: demo-order: path: /do/** serviceId: demo-order stripPrefix: true # 不向后端服务传递的敏感头信息 sensitiveHeaders: Cookie,Set-Cookie,Authorization...原创 2018-10-30 13:56:15 · 1983 阅读 · 0 评论 -
Zuul 屏蔽服务和指定路径
有时我们的一些后端服务并不想暴露出去,我们可以通过屏蔽服务或者路径的方式来进行实现:### 网关配置zuul: routes: demo-order: path: /do/** serviceId: demo-order stripPrefix: true # 忽略的服务,有些后端服务是不需要让网管代理的,防止服务侵入 ignored...原创 2018-10-30 13:54:44 · 2034 阅读 · 0 评论 -
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 · 4113 阅读 · 2 评论 -
Zuul 路由配置
文章目录单实例 serviceId 映射单实例 url 映射使用 Ribbon 的负载均衡路由forward 本地跳转路径映射规则加载顺序通配符单实例 serviceId 映射详细配置### 网关配置zuul: # 路由信息配置 routes: # 针对某个服务的配置,可自定义 demo-order: # 访问的路径,此处要以 '/do/' 开头 ...原创 2018-10-30 13:44:22 · 5541 阅读 · 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 · 582 阅读 · 0 评论 -
Feign Client 超时配置
文章目录Ribbon 超时配置Hystrix 超时配置开启 Hystrix Feign 其实是一种包装,把复杂的 Http 请求包装成我们只需写一两个注解就可以搞定的地步。他底层使用的还是 Ribbon。 Feign 的调用,总共分为两层,即 Ribbon 的调用和 Hystrix(熔断处理) 的调用,高版本的 Hystrix 默认是关闭的。Ribbon 超时配置 如果出现上图...原创 2018-10-24 18:28:01 · 28987 阅读 · 2 评论 -
Zuul 添加 Header
在网关层添加新的 Header 信息是很常见的,比如天剑唯一id、时间戳等。 如下伪代码添加 Header 头:@Component@Slf4jpublic class ModifyHeaderFilter extends ZuulFilter {...... @Override public Object run() throws ZuulException { ...原创 2018-10-31 17:29:03 · 4511 阅读 · 0 评论 -
Zuul 使用 OKHttp 替换 HttpClient
引入依赖<!-- OKHttp 支持 --><dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId></dependency>开启 OKHttp 支持### Ribbo原创 2018-10-31 17:24:45 · 3908 阅读 · 0 评论 -
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 · 2494 阅读 · 0 评论 -
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 · 1940 阅读 · 1 评论 -
Zuul 重定向问题
客户端通过 Zuul 请求认证服务,认证成功之后重定向到一个欢迎页,但是发现重定向的这个欢迎页的 host 变成了这个认证服务的 host,而不是 Zuul 的 host,如下图所示,直接暴露了认证服务的地址,我们可以在配置里面解决掉这个问题。### 网关配置zuul: routes: demo-order: path: /do/** serviceI...原创 2018-10-30 13:59:08 · 9724 阅读 · 4 评论 -
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 · 1406 阅读 · 0 评论 -
Zuul Filter
文章目录简介Filter 类型Zuul 原生 Filter简介 Zuul 的核心逻辑是由一系列紧密配合工作的 Filter 来实现的,它们能够在进行 HTTP 请求或者响应的时候执行相关操作。可以说,没有 Filter 责任链,就没有如今的 Zuul,更不可能构成功能丰富的网关。基本上你想要在网关实现的功能都要与 Filter 有关。它是 Zuul 中最为开放与核心的功能。 Zuul Fil...原创 2018-10-30 17:51:43 · 18722 阅读 · 0 评论 -
Config Server 高可用
文章目录改造 Config Server引入依赖增加配置 这里对 Config Server 的高可用配置是结合 Eureka 进行的,客户端通过 Ribbon 进行负载均衡访问 Config Server。改造 Config Server引入依赖&amp;amp;lt;!-- Spring Cloud Netflix Eureka Client --&amp;amp;gt;&amp;amp;lt;dependency&amp;a原创 2018-11-02 15:29:35 · 677 阅读 · 0 评论 -
Config Client 自动刷新
在一些特殊的服务上,可能不需要服务端推送刷新,而是客户端本身需要每隔一段时间就去刷新一下最新的配置。 在 Config Client 端通过配合 Actuator 访问 /refresh 接口可以进行刷新配置,最终是调用了 RefreshEndopint.refresh(); 方法。所以这里的实现原理就是通过定时任务,直接调用 refresh() 方法进行定时刷新配置。新增自动刷新配置配...原创 2018-11-02 11:14:32 · 765 阅读 · 0 评论 -
Config Server 本地覆盖远程
在开发阶段,常常会使用本地参数覆盖掉远程参数,就需要进行一下配置:spring: cloud: config: # 当 allow-override 为 true 时, # override-none 设置为 true,外部的配置优先级更低, # 而且不能覆盖任何存在的属性源,默认:false override-none: true...原创 2018-11-01 18:30:49 · 1230 阅读 · 0 评论 -
Config Server 安全
引入依赖<!-- 安全 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>增加配置spri原创 2018-11-01 18:22:28 · 295 阅读 · 0 评论 -
Config Server refresh 端点
文章目录refresh引入依赖打开端点bus-refresh启动 RabbitMQConfig Server引入依赖配置Config Client引入依赖配置refresh引入依赖<!-- 内省 --><dependency> <groupId>org.springframework.boot</groupId> <ar...原创 2018-11-01 18:00:07 · 717 阅读 · 0 评论 -
Config Server 入门
文章目录简介入门服务端 Git 版新建项目引入依赖主程序入口配置文件在 Git 配置文件中添加内容客户端引入依赖配置文件注入属性简介 Spring Cloud Config 是一个集中化外部配置的分布式系统,由服务端和客户端组成。它不依赖于注册中心,是一个独立的配置中心。Spring Cloud Config 支持多种存储配置信息的形式,目前主要有 jdbc、Vault、Native、Svn...原创 2018-11-01 17:28:59 · 2852 阅读 · 0 评论 -
Zuul serviceId 映射与 url 映射超时配置的不同
使用 serviceId 时配置超时:### Ribbon 配置ribbon: # http建立socket超时时间,毫秒 ConnectTimeout: 2000 # http读取响应socket超时时间 ReadTimeout: 8000使用 url 时配置超时:### 网关配置zuul: host: # 连接超时 connect-tim...原创 2018-11-01 15:16:08 · 1011 阅读 · 0 评论 -
Zuul 对 Hystrix 的线程隔离模式选择
Hystrix 的线程隔离模式包括 线程池隔离模式(THREAD)和信号量隔离模式(SEMAPHORE)。针对这两种模式的说明和特定场景下的选择如下:线程池模式(THREAD)信号量模式(SEMAPHORE)官方推荐是否线程与请求线程分离与请求线程共用开销上下文切换频繁,较大较小异步支持不支持应对并发量大小适用场景外网...原创 2018-11-01 14:52:06 · 2541 阅读 · 0 评论 -
使用 Undertow 替换掉 Tomcat
文章目录UndertowUndertow 参数 官方说:For servlet stack applications, the spring-boot-starter-web includes Tomcat by including spring-boot-starter-tomcat, but you can use spring-boot-starter-jetty or spring-...原创 2018-11-01 14:24:55 · 12687 阅读 · 0 评论 -
OpenResty + Lua 动态增加 Zuul 节点
文章目录隐忧实践OpenResty 安装与配置Nginx 配置如下隐忧 在 Spring Cloud 微服务架构体系中,所有请求的前门的网关 Zuul 承担着请求转发的主要功能,对后端服务起着举足轻重的作用。当业务体量猛增之后得益于 Spring Cloud 的横向扩展能力,往往加节点、加机器就可以使得系统支撑性获得大大提升,但是仅仅加服务而不加网关是会有性能瓶颈的,实践经验得出的结论是单一...原创 2018-11-01 11:30:37 · 2809 阅读 · 0 评论 -
Zuul 上传文件
Zuul 的上传文件功能是从 Spring Boot 及成果来的,所以直接进行 Spring Boot 的相关配置即可spring: servlet: multipart: # 是否启用分段上传支持,默认:true enabled: true # 最大单个文件大小。值可以使用后缀“MB”或“KB”分别表示兆字节或千字节。默认:1MB ...原创 2018-10-31 16:22:41 · 1263 阅读 · 0 评论 -
Zuul 基于 Eureka 元数据的弧度发布
文章目录灰度发布概述灰度发布概述 灰度发布,是指在系统迭代新功能时的一种平滑过渡的上线发布方式。灰度发布是在原有系统的基础上,额外增加一个新版本,这个新版本包含我们需要待验证的新功能,随后用负载均衡器引入一小部分流量到这个新版本应用,如果整个过程没有出现任何差错,再平滑地把线上系统或服务一步步替换成新版本,至此完成了一次灰度发布,如下图所示: 这种发布方式由于可以在用户无感知的情况下完...原创 2018-10-31 16:09:00 · 1188 阅读 · 2 评论 -
Feign 开启 GZIP 压缩
Spring Cloud Feign 支持对请求和响应进行GZIP压缩,以提高通信效率。注意:Spring Cloud 版本:Finchley.RELEASE配置文件新增### Feign 配置feign: compression: request: # 开启请求压缩 enabled: true # 配置压缩的 MIME TYPE...原创 2018-10-24 15:19:08 · 5675 阅读 · 0 评论 -
Eureka 开启 HTTP Basic 认证
文章目录Eureka Server 配置引入依赖增加 Spring Security 配置类增加配置信息 在真正的生产环境中,我们最不能忽视的就是安全问题,我们的 Eureka Server 是有自己的一套 REST API 服务的,如果不进行认证的话,岂不是知道的人就能进行注册操作?进行下线操作?Eureka Server 配置引入依赖 要启用 Eureka Server 的安全...原创 2018-10-23 15:13:23 · 1044 阅读 · 0 评论 -
Eureka Server 高可用
文章目录原创 2018-10-23 14:07:25 · 932 阅读 · 0 评论 -
Ribbon 入门
文章目录Ribbon 简介入门案例引入依赖在启动类中注入配置编写 ControllerRibbon 简介 Ribbon 是一个客户端负载均衡器(Nginx 为服务端负载均衡),它赋予了应用一些支配 HTTP 与 TCP 行为的能力,可以得知,这里的客户端负载均衡也是进程内负载均衡的一种。它在 Spring Cloud 生态内是一个不可缺少的组件,少了它,服务便不能横向扩展,这显然是有违云原生...原创 2018-10-25 18:14:51 · 794 阅读 · 0 评论 -
Feign Client 第一次请求超时
有时,在项目启动之后,第一次进行 Feign 请求时,会超时。这是因为,Hystrix 开启之后的默认超时时间是 1 秒,如果在这一秒内还没有做出响应那么就会超时,进入 fallback 代码。由于 Bean 装配和懒加载机制等,Feign 在首次请求的时候相对较慢。下面三种方法可以解决 1 秒问题:将 Hystrix 的超时时间调高,如:### Hystrix 配置hystrix:...原创 2018-10-25 17:25:21 · 6977 阅读 · 0 评论 -
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 · 1943 阅读 · 0 评论 -
Feign GET 多参数传递
Spring MVC 是支持 GET/POST 多参数传递的,但是 Feign 并没有实现所有的 Spring MVC 的功能,暂时是不支持 GET 的 POJO 传递方法。一般的解决办法有一下三种:把 POJO 拆散成一个一个单独的属性放在方法参数里。把方法参数变成 Map 传递。使用 GET 传递 @Requestbody,但此方式违反 RESTFul 规范。 以上三种方法...原创 2018-10-25 15:13:42 · 11402 阅读 · 0 评论 -
Feign 默认 Client 替换
文章目录使用 HTTP Client 替换掉 Feign 默认 Client使用 OKHttp 替换掉 Feign 默认 Client Feign 在默认情况下使用的是 JDK 原生的 URLConnection 发送HTTP请求,没有连接池,但是对每个地址会保持一个长连接,即利用 HTTP 的 persistence connection。我们可以用 Apache 的 HttpClient...原创 2018-10-25 14:10:28 · 8140 阅读 · 1 评论 -
Eureka 参数调优
文章目录原创 2018-10-22 18:45:34 · 9909 阅读 · 3 评论 -
Eureka 的设计理念
文章目录概述服务实例如何注册到服务中心服务实例如何从服务中心剔除服务实例信息的一致性问题AP 优于 CPPeer to Peer 架构主从复制对等复制客户端服务端SELF PRESERVATION 设计概述 作为一个服务注册以及发现中心,需要解决很多问题。服务实例如何注册到服务中心 本质上就是在服务启动的时候,需要调用 Eureka Server 的 REST API 的 regi...原创 2018-10-22 17:41:35 · 724 阅读 · 0 评论 -
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 · 17467 阅读 · 4 评论 -
Eureak 开启 HTTPS
文章目录原创 2018-10-23 18:17:08 · 473 阅读 · 0 评论 -
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 · 179 阅读 · 0 评论 -
Ribbon 负载均衡策略配置
文章目录Ribbon 的负载均衡策略全局策略设置增加 Ribbon 负载均衡策略配置类基于注解的针对单个服务的 Ribbon 负载均衡策略注解方式配置文件方式 这个负载策略配置说白了就是让 Ribbon 这个客户端负载均衡器怎么进行访问服务提供者列表。是轮流访问?随机访问?权重?等。Ribbon 的负载均衡策略策略类命名说明RandomRule随机策略随机选择 S...原创 2018-10-26 10:51:45 · 11234 阅读 · 2 评论 -
Feign 基本使用
文章目录Feign 概述什么是 FeignFeign 入门案例引入依赖Feign 接口编写Controller结果Feign 工作原理@FeignClient 注解 在开发 Spring Cloud 微服务的时候,我们知道,服务之间都是以 HTTP 接口的形式对外提供服务的,因此消费者在进行调用的时候,底层就是通过 HTTP Client 的这种方式进行访问。当然我们可以使用JDK原生的 U...原创 2018-10-24 15:07:32 · 62905 阅读 · 6 评论