摘要: 摘要: 今天在生产环境发生了数据库进程卡死的现象,除了sql因为全量更新,没加索引的原因,最主要还是我们的接口的服务器端接口出现问题了。忽视了更新接口的幂等性,以及调用方feign client的重试,导致接口重复执行。万幸的是数据已经修复,花了几个小时跟踪feign和ribbon的源码,把其原理彻 阅读全文
posted @ 2017-07-24 14:07 张建斌 阅读(43066) 评论(3) 推荐(3) 编辑
摘要: 首先声明一点,这里的重试并不是报错以后的重试,而是负载均衡客户端发现远程请求实例不可到达后,去重试其他实例。 feign重试机制 feign默认是通过自己包下的Retryer进行重试配置,默认是5次 feign取消重试 feign请求超时设置 阅读全文
posted @ 2017-07-24 14:03 张建斌 阅读(13707) 评论(1) 推荐(1) 编辑
摘要: springCloud中最重要的就是微服务之间的调用,因为网络延迟或者调用超时会直接导致程序异常,因此超时的配置及处理就至关重要。 在开发过程中被调用的微服务打断点发现会又多次重试的情况,测试环境有的请求响应时间过长也会出现多次请求,网上查询了配置试了一下无果,决定自己看看源码。本人使用的Sprin 阅读全文
posted @ 2017-07-24 13:01 张建斌 阅读(4990) 评论(0) 推荐(0) 编辑
摘要: maven 配置 filterOrder 类似spring-core-4.3.4.RELEASE-sources.jar!/org/springframework/core/Ordered.java 默认越小优先级越高,排查负数的情况下,0优先级最高 RateLimitFiltercom/marco 阅读全文
posted @ 2017-07-24 12:49 张建斌 阅读(3569) 评论(0) 推荐(0) 编辑
摘要: 思路 根据eureka的metadata进行自定义元数据,然后使用ribbon对该元数据进行过滤和匹配,选择server。 实现 这里使用header来传递路由信息,改造ribbon-discovery-filter-spring-cloud-starter,使其不影响静态server list。 阅读全文
posted @ 2017-07-24 12:40 张建斌 阅读(3217) 评论(2) 推荐(0) 编辑
摘要: 序 使用eureka的元数据信息,再配上ribbon的路由功能,就可以在api-gateway实现很多功能,比如灰度测试、生产调试等等。下面介绍一下,怎么使用jmnarloch大神提供的ribbon-discovery-filter-spring-cloud-starter,利用简单的几行代码搞定这 阅读全文
posted @ 2017-07-24 12:29 张建斌 阅读(3166) 评论(1) 推荐(0) 编辑
摘要: 序 ribbon的超时设置,只能按转发的serviceId来分的,无法像nginx那样直接在每个转发的链接里头设置超时时间。这里hack一下,实现url基本的ribbon超时时间设置。具体的思路就是重写RibbonApacheHttpRequest的toRequest方法,然后进行设置。 Custo 阅读全文
posted @ 2017-07-24 12:19 张建斌 阅读(10929) 评论(3) 推荐(2) 编辑