SpringCloud
SpringCloud
放羊的牧码
学习可以偷懒,面试好好发挥就行
展开
-
SpringCloud - 如何本地调试不会注册到线上环境(Nacos)?
SpringCloud - 如何本地调试不会注册到线上环境(Nacos)?原创 2024-04-03 10:15:16 · 777 阅读 · 0 评论 -
SpringCloud - Nacos 结合 K8s 优雅关闭服务(平滑升级)
SpringCloud - Nacos 结合 K8s 优雅关闭服务(平滑升级)原创 2022-08-17 10:54:34 · 7171 阅读 · 0 评论 -
SpringCloud - Circular placeholder reference ‘xxx‘ in property definitions
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxController': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Circular placeholder reference 'spring.datasource.d.原创 2021-09-03 22:08:05 · 2111 阅读 · 3 评论 -
SpringCloud - Nacos 1.3.2 Docker 连接 MySQL 8 问题解决
环境 Windows 10 20H1 Docker Desktop for Windows 2.4.0.0 MySQL Community 8.0.22.0 Nacos Docker Latest (Nacos 1.3.2) 背景看到Spring Cloud Alibaba版本更新,于是就将自己的微服务架构,一整套进行了升级。Spring Boot 升级到了 2.3.4 Spring Cloud 升级到 Hoxton.SR8 Spring Cloud转载 2021-09-03 14:01:25 · 455 阅读 · 2 评论 -
SpringCloud - Feign 调用服务及传递参数踩坑记录
在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端。我们可以使用JDK原生的URLConnection、Apache的Http Client、Netty的异步HTTP Client, Spring的RestTemplate。但是,用起来最方便、最优雅的还是要属Feign了。Feign是一种声明式、模板化的HTTP客户端Contronller层通过feignClient调用微服务,获取所有任务@Con.转载 2021-08-31 14:33:57 · 1225 阅读 · 2 评论 -
Spring Cloud - Feign RequestInterceptor 拦截器
代码案例 实现接口代码 注解方式代码1、yml 配置:feign.client.config.default.requestInterceptors (会覆盖 Java 配置方式)2、Application.java 全局配置:@EnableFeignClients 属性 defaultConfiguration = XXX.class3、注解配置:@Configuration + @Bean4、@FeignClient 配置:属性 configuration = X原创 2021-04-21 20:28:25 · 1889 阅读 · 2 评论 -
Spring Cloud - Feign 调用过程分析
今天我们要学习的是Feign,那么Feign解决了什么问题呢?相对于Eureka,Ribbon来说,Feign的地位好像不是那么重要,Feign是一个声明式的REST客户端,它的目的就是让REST调用更加简单。通过提供HTTP请求模板,让Ribbon请求的书写更加简单和便捷。另外,在Feign中整合了Ribbon,从而不需要显式的声明Ribbon的jar包。前面在使用Ribbon+RestTemplate时,利用RestTemplate对http请求的封装处理,形成了一套模版化的调用方法。但是在实.转载 2021-04-21 16:55:16 · 1213 阅读 · 0 评论 -
SpringCloud - WebMvcConfigurer & @EnableFeignClients 冲突之 getApplicationContext() 为 null 解决(二)
如果看过SpringCloud - WebMvcConfigurer & @EnableFeignClients 冲突之 getApplicationContext() 为 null 解决方案(一)的人,我相信你看完这篇解决方案,会更推荐此篇方案,废话不多说,如下~分析其实我们可以仔细想想,之所以引起getApplicationContext() 为 null 的原因,无非是生命周期受到影响(大胆猜测),所以我们可以通过注入的时候,通过懒加载的方式来解决这个问题。解决...原创 2021-01-28 19:27:18 · 1114 阅读 · 1 评论 -
SpringCloud - WebMvcConfigurer & @EnableFeignClients 冲突之 getApplicationContext() 为 null 解决(一)
在业务中,我们时常需要对 WebConfig 一些方法进行重构,那么不得不提到传统的方法:WebMvcConfigurerAdapter,但是我们都知道WebMvcConfigurerAdapter 已经过时了,替代方案有 2 个方法。新的版本解决方案目前有两种第一种:WebMvcConfigurer@Configurationpublic class WebConfg implements WebMvcConfigurer { }第二种:WebMvcConfigura..原创 2021-01-25 17:08:52 · 1975 阅读 · 0 评论 -
SpringCloud - Feign 不使用 Eureka
main@EnableFeignClients@SpringBootApplicationpublic class FeignMain { public static void main(String[] args) { SpringApplication.run(FeignMain.class, args); }}server@RequestMapping(value = "/getNum", method = RequestMethod.GET.转载 2020-12-14 17:48:28 · 1530 阅读 · 2 评论 -
SpringCloud - Eureka & 服务提供者 & 服务消费者,心跳检测时间/缓存拉取时间配置方案
Eureka(A) & 服务提供者(B)& 服务消费者(C),三者关系是:B 和 C 都注册到 A 上,然后 C 走 feign 调用 B的情景~名词解释leaseRenewalIntervalInSeconds:心跳检测时间 fetch-registry:是否需要获取服务注册列表 registry-fetch-interval-seconds:获取服务注册列表时间Eureka 服务端spring: application: name: re...原创 2020-11-26 16:16:12 · 863 阅读 · 0 评论 -
SpringCloud - Feign 之 @PathVariable 爬坑
因为 client 一方是提供给使用方来用的,所以 client 里的代码需要上传到中央仓库,但是这里使用方使用的时候会出现一个问题,就是....源代码public interface IScriptDicClient { /** * 根据厂商id获取脚本字典map * @param supplierId 厂商id * @return 脚本字典map */ @GetMapping("/script/map/dic/{supplier..原创 2020-11-18 19:15:02 · 2577 阅读 · 0 评论 -
SpringCloud - Feign调用返回对象不为null,但属性全为null
Feign是SpringCloud中的一个模块,作用是将本来需要发送请求的工作简化成为调用方法就可以完成的简单工作。最近在使用Feign的时候,经常出现两种情况请求返回一个对象,请求成功了,没有熔断,也返回数据了,而且对象不为null,但是对象所有的属性都是null,这样直接通过了我们的验空判断,从而造成报错。 返回一个对象List时,报错如下:databind.exc.MismatchedInputException: Cannot deserialize instance of ''..转载 2020-11-16 19:36:53 · 4172 阅读 · 0 评论 -
SpringCloud - @FeignClient 中 name/value 和 url 属性的作用
name/value 属性这两个的作用是一样的,指定的是调用服务的微服务名称,互为对方的别名。url 属性指定调用服务的全路径,经常用于本地测试。如果同时指定name/value和url属性,则以url属性为准,name/value属性指定的值便当做客户端的名称。...原创 2020-10-15 09:29:45 · 10942 阅读 · 0 评论 -
SpringCloud - feign.RetryableException: Read timed out executing POST
java.net.SocketTimeoutException: Read timed out解决方法ribbon: ReadTimeout: 60000 ConnectTimeout: 60000原创 2020-08-05 18:41:55 · 3341 阅读 · 0 评论 -
SpringCloud - Zuul Url & ServiceId 转发超时配置区别
问题描述:采用zuul作为网关,根据不同的访问路径进行微服务的路由,譬如有个服务是user,我访问user服务的某个接口时,该接口执行时间很慢,2秒多,然后还没执行完,zuul就执行熔断了。前提:zuul和微服务都已经注册到了eureka中,zuul采用service-id来进行路由。关键是zuul的配置文件,通过配置不同的超时策略来完成超时处理。注意看官方的文档:http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-.转载 2020-08-04 09:36:13 · 1201 阅读 · 0 评论 -
SpringCloud - com.netflix.zuul.exception.ZuulException: Hystrix Readed time out
SpringCloud - com.netflix.zuul.exception.ZuulException: Hystrix Readed time out原创 2020-07-29 09:11:24 · 846 阅读 · 0 评论 -
SpringCloud - Stream 动态绑定消息通道
在之前的章节中,所有消费者和生产者均通过@EnableBinding定义,此方式能够快速的构建生产消费关系,但仔细想想,如果我们需要根据一定的条件决策消息生产者将消息发往哪个通道,貌似当前简单粗暴的方式无法满足。如此常见的场景,springcloud必然会帮我们想到,通过BinderAwareChannelResolver的bean实例即可实现动态通道的选择,其会伴随@EnableBinding注解自动完成注册。本章概要1、BinderAwareChannelResolver的应用2、..转载 2020-07-21 09:46:20 · 2480 阅读 · 0 评论 -
SpringCloud - 配置文件加载优先级
Spring Cloud中配置文件的加载机制与其它的Spring Boot应用存在不一样的地方;如它引入了bootstrap.properties的配置文件,同时也支持从配置中心中加载配置文件等;本文主要聚焦在这些配置文件加载的优先级及覆盖关系的控制上,对于帮助理解Spring Cloud的配置文件加载方式有一定的帮助。1、bootstrap上下文Spring中加载的配置文件是分层级的;Spring Cloud启动的时候会创建一个bootstrap的上下文,它是应用的父级上下文(请注意..转载 2020-07-02 09:26:58 · 1905 阅读 · 0 评论 -
SpringCloud - FeignClient 设置 fallback 不起作用
今天在配置feign中是用hystrix的时候,FeignClient 中的 fallback 不起任何作用,本来以为是不支持这个属性了,打开源码一看,还提供这个fallback属性,后来翻阅各中资料,才发现是没有打开feign对hustrix的支持。下面是解决方案。在 application.yml 中加入如下配置就可以了feign: hystrix: enabled: true...转载 2020-06-28 10:00:26 · 3367 阅读 · 0 评论 -
SpringCloud - @EnableDiscoveryClient、@EnableEurekaClient 区别
最近在学习springcloud的时候发现不同的教程里对于服务注册使用了两种注解:@EnableDiscoveryClient与@EnableEurekaClient。下面简单介绍下两种注解的区别@EnableDiscoveryClient 基于 spring-cloud-commons,并且在 classpath 中实现。 @EnableEurekaClient 基于 spring-cloud-netflix,只能为 eureka 作用。Ps:如果选用的注册中心是eureka推荐@Enab.转载 2020-06-21 13:32:18 · 358 阅读 · 0 评论 -
SpringCloud - Cannot execute request on any known server
微服务发现(eureka)采坑记录:报 Cannot execute request on any known server 这个错:连接Eureka服务端地址不对,有以下几种处理方式。一、更改.yml文件或者.properties文件配置即可#下划线+下划线后面的小写字母等同于去掉下划线大写下划线后面的字母(驼峰原则)eureka.client.registerWithEureka=false #是否要注册到其他Server上 registerWithEureka等同于re..转载 2020-06-21 13:28:33 · 618 阅读 · 0 评论 -
SpringCloud - 如何正确查看 SpringCloud 对应 SpringBoot 的稳定版本?
进入Spring.io官网,点击PROJECTS导航,进入SpringCloud页面,选择Learn标签,选择对应的Reference Doc。进入Doc后,查看org.springframework.boot,没找对没关系,多找几次,你会找到的。转载 2020-06-10 09:24:04 · 773 阅读 · 0 评论 -
SpringCloud - Eureka报错:Connect to localhost:8761 timed out
最近整理配置Eureka时,注册服务后,Eureka服务一直报出如下错误如下是我的单台eureka的 application.yml 配置spring: application: name: eureka-serverserver: port: 2001eureka: server: enable-self-preservation: false instance: hostname: eureka1 client: register转载 2020-06-09 09:11:48 · 1900 阅读 · 10 评论 -
SpringCloud - 后台运行 Eureka 服务注册中心
写在开头研发过程中经常要做的事就是启动Eureka服务注册中心,每每都要启动一个IDEA,很是困扰。现在分享一个后台启动服务注册中心的方法。准备工作1、打包一个 eureka 服务注册中心 jar 包,在maven控制台运行 clean package,而后生成 jar 包2、将其放到桌面并重命名为eureka.jar正文开始以 jar 包方式运行eureka注册中心,共有三种方式第一种、后台实时运行,日志输出至控制台进入桌面,运行java -jar eu..原创 2020-06-08 08:45:39 · 636 阅读 · 0 评论 -
SpringCloud - Eureka 自我保护机制
Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期,但是在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。我们在单机测试的时候很容易满足心跳失败...转载 2020-05-07 09:00:56 · 394 阅读 · 0 评论 -
SpringCloud - allowBeanDefinitionOverriding(spring.main.allow-bean-definition-overriding)分析
问题描述最近在学习spring cloud sleuth过程中,遇到了一个问题The bean 'characterEncodingFilter', defined in class path resource [zipkin/autoconfigure/ui/ZipkinUiAutoConfiguration.class], could not be registered. A bea...转载 2020-05-07 08:57:28 · 1242 阅读 · 0 评论 -
SpringCloud - ZipKin 简介
traceId:在哪生成的id spanId:下一次的请求id parentId:上一次请求的idOpenTracing是语义规范、是跨语言的,zipkin是根据这个规范的。Zipkin 架构图效果图...原创 2020-04-12 20:23:12 · 381 阅读 · 0 评论 -
SpringCloud - ZipKin 快速入门(Sleuth & ZipKin)
解决如何定位哪一段微服务间的过程耗时问题zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。zipkin类似于日志的高级版,跟踪监控。访问地址:localhost:9411/zipkin/如何使用 ZipKin1.添加starter-zipkin依赖(包含了sleuth-zipkin、starter-sleuth依赖)2.配置zipkin的ba...原创 2020-04-12 20:36:00 · 4286 阅读 · 0 评论 -
SpringCloud - Hystrix(七)
Zuul-Hystrix首次启动报错问题Zuul 自带 Hystrix 模块。解决首次启动报错问题。 分析:有时候第一次启动时都会超时。是因为第一次有懒加载的过程,造成了超时。 解决方式:配置一下超时时间长一点就好了,如图。...原创 2020-04-12 18:52:52 · 216 阅读 · 0 评论 -
SpringCloud - Hystrix(六)
Hystrix-Dashboard添加依赖spring-cloud-starter-hystrix-dashboard、spring-boot-starter-actuator 启动类注解@EnableHystrixDashboard Yml 加一个management:context-path: / 去 localhost:8080/hystrix/monitor 去看可视化的...原创 2020-04-12 18:48:34 · 226 阅读 · 0 评论 -
SpringCloud - Hystrix(五)
Feign-Hystrix 使用1. order 配置开关 feign: hystrix: enabled: true2. product 注解绑定 @FeignClient(name = "product", fallback = ProductClient.ProductClientFallback.class)(注意ProductClientFallback类加@Compone...原创 2020-04-12 18:32:46 · 316 阅读 · 0 评论 -
SpringCloud - Hystrix(四)
Hystrix使用项配置spring: application: name: order cloud: config: discovery: enabled: true service-id: CONFIG profile: test stream: bindings: ...原创 2020-04-12 18:10:10 · 287 阅读 · 0 评论 -
SpringCloud - Hystrix(三)
Hystrix 服务熔断容错机制: 微服务和分布式里面,容错是必须要考虑的!通常的做法有两种 一种是重试机制,对于预期的短暂故障问题,可以重试解决; 二是使用断路器模式,即将受保护的服务封装到一个可以监控故障的断路器里面,当故障达到一定的值,断路器将会跳闸,断路器对象返回错误!断路器状态机: 1.closed,熔断器关闭状态,调用失败次数累计到一定阈值/比例,启动熔断机...原创 2020-04-12 18:03:36 · 253 阅读 · 0 评论 -
SpringCloud - Hystrix(二)
Hystrix 服务降级(超时情景)product 微服务已启动,以及模拟业务时间 2s(sleep替代),一旦超时,则触发服务降级。Product 微服务项目@PostMapping("/listForOrder")public List<ProductInfoOutput> listForOrder(@RequestBody List<String&...原创 2020-04-12 17:34:43 · 202 阅读 · 0 评论 -
SpringCloud - Hystrix(一)
Hystrix 触发降级1. 引入POM依赖 spring-cloud-starter-hystrix2. 在OrderApplication,加注解@EnableCircuitBreaker3. 在HystrixController添加注解@HystrixCommand(fallbackMethod="fallback"),这个fallback指方法,方法可以返回“太拥挤了,请稍后...原创 2020-04-12 17:23:36 · 253 阅读 · 0 评论 -
SpringCloud - Hystrix 简介
Spring Cloud Hystrix 四大功能1、服务降级2、服务熔断3、依赖隔离4、监控(Hystrix Dashboard)原创 2020-04-12 17:08:24 · 231 阅读 · 0 评论 -
SpringCloud - Zuul(五)
Zuul 跨域第一种方法:普通的跨域做法,注解形式的那种。 @CrossOrigin(allowCredentials="true") 允许跨域,并且允许cookie跨域。package com.imooc.apigateway.config;import org.springframework.context.annotation.Bean;import org.sp...原创 2020-04-12 15:45:55 · 219 阅读 · 0 评论 -
SpringCloud - Zuul(四)
限流用法,时机:请求被转发之前调用。令牌桶限流 一段时间里面往令牌桶里面放令牌,需求从令牌里拿令牌,拿不到(说明名额满了)就等着不给访问package com.imooc.apigateway.filter;import com.google.common.util.concurrent.RateLimiter;import com.imooc.apigateway.exc...原创 2020-04-12 15:42:20 · 205 阅读 · 0 评论 -
SpringCloud - Zuul(二)
基本使用 pre & post Zuul 过滤器,下面主要展示主要代码,其他基本配置都差不多。filterTypefilterOrder我们代码里“-1”是为了在它之前执行,优先级问题。shouldFiltertrue:执行 run 方法。 false:不执行 run 方法。PRE 过滤器package com.imooc.a...原创 2020-04-12 15:36:17 · 277 阅读 · 0 评论