![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Cloud
文章平均质量分 94
it_lihongmin
不要觉得自己怎么样,现实就是比你厉害的人,比你更努力!
当才华撑不起自己野心的时候,老老实实地踏实学习吧!
展开
-
分布式限流之 - Spring Cloud Gateway层限流实现
写在前面的话高兵发的三驾马车:缓存、降级、限流,这里仅仅说限流 常用的限流算法有:计数器算法、固定窗口算法、滑动窗口算法、漏桶算法、令牌桶算法;每种算法的特点和优缺点这里不展开,比较适用的限流算法基本都会选择令牌桶,并且这里基于Spring Cloud Gateway Redis本身默认就是基于令牌桶算法实现 限流按照类型分为:单机、分布式; 限流按照请求流量的路径分为:nginx、gateway、微服务 如果仅仅使用于单机环境:谷歌guava的RateLimiter、(AtomicIntege原创 2022-05-21 19:00:08 · 3691 阅读 · 0 评论 -
动态代理模式-在项目中的使用(基于feign源码写自己的rpc报表框架)
设计模式-总览https://mp.csdn.net/mp_blog/creation/editor/1222025071、项目背景 报表服务导出服务经常会涉及jvm、io等异常情况,所以想要将报表的查询和导出在两个服务中进行,并且报表的查询是在k8s环境中的一个微服务,而报表的真正执行服务是在一个虚拟机。需要将报表的查询和导出两个阶段在两个...原创 2022-01-04 17:09:55 · 1237 阅读 · 0 评论 -
Spring Cloud Feign超时设置
根据之前的Feign 源码分析,知道了Feign的整个配置项的加载,接口的动态代理创建和请求的执行过程。那么Hytrix、Feign、Ribbon三个的超时时间设置都会对请求产生影响,完全根据自己的业务进行判断。1、Hytrix配置# hystrix 配置feign: hystrix: enabled: true command: default: execution: isolation: ...原创 2020-10-13 22:54:23 · 856 阅读 · 0 评论 -
Spring Cloud Feign源码(四) - 总结
目录1、@EnableFeignClients和@FeignClient的解析和注册BeanDefinition2、自动装配Feign客户端,获取配置的超时等信息3、请求的动态代理的创建和服务调用过程 Spring Cloud Feign源码分为三部分,之前三篇是对整个过程的细节的详细过程说明,过于笼统没有突出主线,现在对整个进行总结。1、@EnableFeignClients和@FeignClient的解析和注册BeanDefinition 在项目是添加@EnableF...原创 2020-10-13 17:43:53 · 170 阅读 · 0 评论 -
Spring Cloud Feign源码(三) - FeignClientFactoryBean - @FeignClient的代理创建和调用过程
目录1、动态代理的创建过程2、方法调用【动态代理的执行invoke过程】1、HystrixInvocationHandler#invoke2、SynchronousMethodHandler#invoke1、动态代理的创建过程 前面分析过@EnablefeignClient会引入FeignClientsRegistrar,将@FeignClient注解的类以FeignClientFactoryBean的形式往BeanFactory注入BeanDefinition。Spring ..原创 2020-10-13 15:32:01 · 2874 阅读 · 0 评论 -
Spring Cloud Feign源码(二) - FeignRibbonClientAutoConfiguration自动装配
目录FeignRibbonClientAutoConfiguration1、FeignHttpClientProperties加载配置项2、CachingSpringLoadBalancerFactory3、配置默认的@FeignClient的连接和调用超时时间Feign客户端实现1、HttpClientFeignLoadBalancedConfiguration2、OkHttpFeignLoadBalancedConfiguration3、DefaultFeignLoadB原创 2020-10-12 23:46:50 · 1661 阅读 · 0 评论 -
Spring Cloud Feign源码(一) - @EnableFeignClients解析注解并注册成BeanDefinition
目录FeignClientsRegistrar1、registerDefaultConfiguration2、registerFeignClientsregisterFeignClient 梳理完Spring、Spring Boot的源码,再梳理Spring Cloud的源码有比较深的理解,就在需要抓住主线,然后再慢慢展开。Feign主要需要关注两个方向:1、@EnableFeignClients,将@FeignClients的服务创建远程Http的代理对象,后续进行调用2..原创 2020-10-12 16:05:30 · 1184 阅读 · 2 评论 -
Spring Cloud 序列化和反序列化过程定制(Jackson)
现在都是基于Spring Cloud Feign进行微服务的调用,并且序列化的过程都封装完成的。只是自己可以定制序列化的方式,但是为了调用的时候能方便的找到问题所在等,基本都会使用json(Jackson等)方式的序列化【虽然性能比较差】。但是最近在项目上使用的时候,自己的需求是根据不同的类型(或者枚举),入参和出参会传入不同的子类,但是在接口的定义上只能使用父类进行接收。当反序列化完成后,在Controller层拿到的数据就只有父类公共的字段,而子类特有的字段在序列化时直接进行丢弃了。 ...原创 2020-09-21 21:53:28 · 4937 阅读 · 0 评论 -
Spring Cloud Bus整合Spring Cloud Config(基于Rabbitmq实现)
目录1、config-server-github子项目1)、启动类需要添加@EnableConfigServer和@EnableEurekaClient注解2)、pom.xml中的maven依赖3)、配置文件3、config-client子项目1)、启动类需要添加@EnableConfigServer和@EnableEurekaClient注解2)、添加一个获取配置信息...原创 2019-06-13 17:12:25 · 899 阅读 · 0 评论 -
Spring Cloud Gateway常用场景实现
目录一、Spring Cloud Gateway搭建二、常用应用场景搭建1、与Spring Cloud支持的注册中心整合1)、一些提前准备2)、配置文件3)、启动类中添加@EnableEurekaClient配置4)、启动服务2、与断路器Hystrix整合3、请求频率限制4、Predicate集成5、filter集成6、RouteDefinition...原创 2019-06-04 21:25:21 · 2549 阅读 · 0 评论 -
Spring Cloud Gateway功能模块
目录一、Spring Cloud Gateway概览和特性二、Spring Cloud Gateway集成三、Spring Cloud Gateway专业术语和工作原理1、专业术语2、工作原理四、路由Predicate工厂五、过滤器工厂六、全局filter七、ssl支持八、RouteDefinitionLocator编码方式配置路由九、CORS配置方式实...原创 2019-06-04 21:16:34 · 2247 阅读 · 0 评论 -
Spring Cloud Consul配置中心
目录1、在Consul UI的界面中找到Key/Value菜单2、在启动类中添加注解@EnableDiscoveryClient和@EnableConfigurationProperties({RedisConfig.class})3、添加一个Controller类4、用@ConfigurationProperties注解直接将配置注入Bean中5、配置信息6、启动服务...原创 2019-06-10 14:12:09 · 618 阅读 · 0 评论 -
Spring Cloud Consul服务注册和发现
目录一、Spring Cloud Consul集群搭建1、在每台服务器上安装consul(每台服务操作一致)1)、下载解压安装包2)、配置启动脚本3)、启动每一个节点的脚本4)、Consul UI页面2、将每个节点组成集群二、Consul注册中心的服务调用1、在http://start.spring.io中添加Web、Actuator、Consul Discov...原创 2019-06-10 14:09:01 · 6295 阅读 · 6 评论 -
Spring Cloud Zookeeper服务注册和发现
目录1、从http://start.spring.io生成项目2、zookeeper-client-provider1)、在启动类中添加@EnableDiscoveryClient注解2)、根目录下添加UserController3)、使用Spring profiles方式启动三个服务节点3、zookeeper-client-consumer1)、启动类中添加@Enab...原创 2019-06-09 19:59:14 · 709 阅读 · 0 评论 -
Spring Cloud Bus消息总线
目录1、bus-sender1)、启动类中添加一个web可以访问的入口2)、添加一个消息发送类3)、配置信息2、bus-receiver1)、启动类中注册一个Queue的Bean2)、添加消息监听3)、配置信息3、启动三个服务Rabbitmq connectionsRabbitmq exchangeRabbitmq queue 消息总线实例...原创 2019-06-13 12:55:45 · 163 阅读 · 0 评论 -
Spring Cloud Zuul详细说明
目录一、zuul的功能概览二、常用路由策略三、高可用四、ZuulFilter1、Filter Types(Filter的类型) 1)、Pre Filter 2)、Routing Filter 3)、Error Filter 4)、Post Filter2、实现ZuulFilter的抽象方法 1)、filterType方法...原创 2019-05-30 15:45:55 · 659 阅读 · 0 评论 -
Spring Cloud 总览和基础
目录1、Spring Cloud 架构模块初览注册中心配置中心负载均衡断路器Api服务网关服务调用链路追踪2、Spring Cloud Bootstrap1、bootstrap.properties优先于application.properties加载2、bootstrap.properties配置路径 在开始之前引用Spring Cloud 官方...原创 2019-05-27 14:28:10 · 215 阅读 · 0 评论 -
Spring Cloud Eureka服务特性
先占位。。。原创 2019-05-27 16:19:00 · 140 阅读 · 0 评论 -
Spring Cloud Ribbon负载均衡实现
目录一、两种模式的Ribbon负载均衡搭建1、在start.spring.io中,添加Web、Actuator、Eureka Client、Ribbon模块2、在项目中创建ribbon-provider模块1)、在启动类中添加@EnableEurekaClient将服务注册到之前创建的Eureka Server注册中心3)、配置文件4)、使用Spring Profiles...原创 2019-05-27 17:47:29 · 291 阅读 · 0 评论 -
Spring Cloud Ribbon底层
先占位原创 2019-05-27 17:50:10 · 100 阅读 · 0 评论 -
Spring Cloud Feign服务调用
先占位原创 2019-05-29 15:24:36 · 484 阅读 · 1 评论 -
Spring Cloud Hystrix服务熔断
在开始搭建之前先来一张图,说明一下现在需要搭建的Hystrix,需要创建三个项目,一个是Hystrix Dashboard,用于收集每一个节点的监控数据;一个是但节点的Hystrix Client用于展示客户端上报到Hystrix Dashboard的过程;一个是服务调用的时候,服务端和客户端都将数据上报到Hystrix DashBoard,该项目在后续引入Feign的时候再进行集成。...原创 2019-05-28 16:58:32 · 318 阅读 · 0 评论 -
Spring Cloud Config三种配置服务
目录一、配置服务端和客户端的服务搭建1、在start.spring.io中添加Web、Actuator、Eureka Discovery、Config Server、Config Client模块2、在项目中添加config-server-file模块1)、在启动类中添加@EnableConfigServer注解2)、在resources在添加configs目录,并在目录下创建...原创 2019-05-29 15:28:26 · 620 阅读 · 0 评论 -
Spring Cloud Config详细说明
先占位原创 2019-05-29 15:36:53 · 136 阅读 · 1 评论 -
Spring Cloud Sleuth服务调用链路追踪
目录一、Zipkin服务器搭建二、Sleuth服务调用链的搭建1、基础服务搭建2、sleuth-provider-provider模块搭建1)、启动类添加@EnableEurekaClient2)、为方便,直接在根目录下创建Controller和Service3)、使用两个Spring Profile启动两台服务(直接将bootstrap.properties中的配置放...原创 2019-06-03 19:13:02 · 1571 阅读 · 0 评论 -
Spring Cloud Sleuth和Zipkin的基本概念
当服务服务化或者微服务进行管理后,服务模块之前的调用拓扑非常的复杂。并且当每一个模块又有多个分布式集群等复杂的情况时,一个请求可能会调用后端的N多台服务,那么在追查问题的时候是非常麻烦的。一般不同的小组会负责不同的服务模块,则跨团队的协作是非常麻烦的。比如电商平台中,当一个请求进入后,api网关会根据URI会分发到不同的服务模块,比如当前调用到了订单系统,订单系统可能会去查下商品系统。我们...原创 2019-06-03 19:04:11 · 7212 阅读 · 2 评论 -
Spring Cloud-Sleuth和Zipkin+mq实现
先占位原创 2019-06-03 19:13:17 · 249 阅读 · 0 评论 -
Spring Cloud Zuul的Api网关实现
目录1、在start.spring.io中添加Web、Actuator、Zuul模块2、application.properties配置3、自定义Filter4、在启动类中添加@EnableZuulProxy启动服务,并且注册自定义Filter位Bean5、启动服务,查看路由规则6、自定义日志filter 项目地址为:https://github.com/kevi...原创 2019-05-30 13:15:06 · 188 阅读 · 0 评论 -
Spring Cloud Eureka Server集群和客户端调用
目录1、Eureka 简介2、Eureka 集群搭建1)、在start.spring.io中,添加Eureka Server、Web、Actuator模块2)、在SpringBootApplication启动类中添加@EnableEurekaServer注解3)、配置文件4)、Spring Profiles启动服务3、Eureka 客户端实例注册到Eureka Serv...原创 2017-05-01 21:34:24 · 6657 阅读 · 1 评论