
springcloud
zhangzhen02
这个作者很懒,什么都没留下…
展开
-
spingcloud gateway 请求流程 源码分析
一,源起@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}进入了SpringApplication.run()二,SpringApplication public static ConfigurableApplicati原创 2020-12-10 14:49:23 · 506 阅读 · 0 评论 -
spring cloud 实现灰度发布,多个服务指向同一个路由的错误解决及源码分析
前文中,我自定义一个gatewayRule,实现了根据参数进行路由,从而实现灰度发布的功能。在本地自测的时候,运行良好。放到测试环境后,发现一个重大bug。所有的服务都会走同一个路由,所以服务A请求服务B时,却会调用到服务C!自己引入的bug,自己跪着也要解决。开始经历了层层排查历史,并最终解决问题。一,接着前文讲起,RibbonLoadBalancerClient中public ServiceInstance choose(String serviceId, Object hint) {//查询s原创 2020-12-08 14:00:58 · 417 阅读 · 0 评论 -
spring cloud Ribbon 源码分析
前两文写了ribbon的根据传参进行自定义负载均衡,今天要解释一下,为什么能够这样做。将这几天的源码查看,做一个记录,以备日后分享。当我们使用了@LoadBalanced注解后,就具有了负载均衡的能力。现在开始解密之旅。一,@LoadBalanced@LoadBalanced@beanpublic RestTemplate restTemplate() { return new RestTemplate();}发生了一些神秘的变化,一切开始不同。看一下这个注解/** * Anno原创 2020-11-26 20:46:41 · 206 阅读 · 0 评论 -
springcloud gateway 根据请求参数自定义路由,实现灰度发布
gateway 实现灰度发布比单纯的ribbon 更简单一些。一,实现一个自定义的路由import com.netflix.client.config.IClientConfig;import com.netflix.loadbalancer.AbstractLoadBalancerRule;import com.netflix.loadbalancer.Server;import org.springframework.stereotype.Component;import java.ut原创 2020-11-25 16:57:26 · 3244 阅读 · 2 评论 -
ribbon按参数路由,实现灰度发布功能
遇到一个问题,需要根据请求参数进行自定义路由。看了ribbon的实现源码,发现ribbon 在路由时,根本没有地方可以传参,以实现根据参数路由的功能。唯一的参数loadBalancerKey,是永远为null的坑爹设计。所以只好自己实现。我的实现方式如下:一,首先定义自定义RequestInterceptor,将参数传入到ThreadLocal里@Componentpublic class MyRequestInterceptor implements RequestInterceptor {原创 2020-11-24 20:26:26 · 812 阅读 · 2 评论 -
springcloud gateway自定义断言规则,以后缀结尾进行路由
因工作需要,需要使用springcloud gateway ,以.html结尾的进行路由进行websocket转发。gateway自带的8种路由规则都不能满足,故需要自定义断言规则。一,新建一个路由断言工厂ExtCheckRoutePredicateFactory@Componentpublic class ExtCheckRoutePredicateFactory extends AbstractRoutePredicateFactory<ExtCheckRoutePredicateFacto原创 2020-10-14 20:38:46 · 2124 阅读 · 0 评论 -
springcloud使用zipkin
1.首先搭建zipkin serverdocker run -d -p 9411:9411 openzipkin/zipkin通过http://localhost:9411/ 就可以看到zipkin页面了2.在springcloud中集成zipkin引入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-z原创 2020-06-23 14:20:22 · 2232 阅读 · 0 评论