![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring Cloud
文章平均质量分 69
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
EnableDiscoveryClient与EnableEurekaClient的区别、Cloud-2.0以后无需增加
EnableDiscoveryClient注解现在也没用了。EnableDiscoveryClient不是必须的,只要classpath中存在DiscoveryClient的实现就可以保证将应用注册到注册中心了,只依赖以spring-cloud-starter-netflix为前缀的库(例如spring-cloud-starter-netflix-eureka-client),就启用了服务注册发现功能,利用spring容器通过META-INF/spring.factories文件加载配置的能力。转载 2023-08-04 17:50:06 · 752 阅读 · 0 评论 -
SpringCloud-Zuul自定义过滤器控制路由切换
目前希望将 a-service 与 b-service 整合,故需要迁移 b-service的代码 至 a-service中,迁移过程中,为了不影响原有的 b-service 接口访问,故需要 自定义 ZuulFilter来实现。1、b-service 代码 迁移至 a-service 后 ,增加 前缀 /b,完整访问路径 10.118.1.2/a-service/b/testB。Zuul 映射如下,IP:10.118.1.1。原创 2023-06-05 18:16:04 · 172 阅读 · 0 评论 -
nacos 部署 Could not retrieve transation read-only status server
这个时候 需要在 在nacos目录下,创建 plugins\mysql 文件夹 把指定版本的mysql 驱动放入 在重启 就ok。Could not retrieve transation read-only status server 错误。解压nacos-server.jar 发现mysql驱动是5+的版本,但实际链接的mysql版本已经是8+nacos 低版本 部署的时候 mysql 数据库版本高于驱动时。查看mysql版本:登陆后 select version();原创 2023-04-27 14:43:19 · 358 阅读 · 1 评论 -
RequestMapping、RequestBody继承相关,推荐的FeignClient+RestController 配置
在A服务的公共模块中声明了一个FeignClient接口,然后A的业务模块Controller实现了这个接口之后,就可保证A对外提供的restapi的规范性?同时B服务如果依赖了A的公共模块,就不必要再自己写一份FeignClient接口对应A服务的restapi了,直接引用A的公共模块包含的FeignClient接口即可。这可以在服务之间的通讯接口进行规范。A 和 B服务都用了相同的接口,保证了一致性,减少开发过程中的接口调试问题使用Spring Cloud做项目的同学会使用。转载 2023-04-17 18:05:49 · 822 阅读 · 0 评论 -
Spring Cloud中eureka注册中心添加security认证
配置信息:eureka.client.serviceUrl.defaultZone=http://admin:admin@localhost:9090/eureka/因为服务端添加了安全认证,如果客户端不添加安全认证,就会出现与服务端连接不上的情况,因此客户端也需要添加安全认证。输入账号信息后能够正常进入注册中心,表示eureka添加security安全认证成功。转载 2023-04-13 09:00:59 · 551 阅读 · 1 评论 -
SpringCloud+@RefreshScope+@Value配置中心动态加载(刷新)配置文件
现在的系统中,通常会使用一个中间件作为配置中心,目的是实现在多服务器集群的场景下,只需要统一修改配置中心的配置文件,然后所有的服务器全部获取配置中心最新的配置文件信息,服务器不用重新启动,即可以在所有的服务器上面生效。要想实现这个功能,它的原理大概如下:场景1:服务器首次启动-->获取配置中心最新的配置-->然后实例化bean,并根据配置文件信息初始化bean的所有的属性。这个场景很好理解,那些原本配置在本地的配置文件,也就是这样使用的,只不过配置中心的配置,需要远程获取一下。转载 2022-11-25 09:26:37 · 1703 阅读 · 0 评论 -
SpringCloud @RefreshScope实现原理
环境:spring cloud context2.2.8.RELEASE + spring boot 2.3.9.RELEASE。转载 2022-10-17 16:29:43 · 386 阅读 · 0 评论 -
spring cloud gateway使用 uri: lb://方式配置时,服务名的特殊要求
spring cloud gateway uri=lb://转载 2022-06-16 22:00:34 · 4525 阅读 · 1 评论 -
Zuul、SpringCloudGateway-stripPrefix问题
https://blog.csdn.net/uncletian/article/details/82424966https://blog.csdn.net/uncletian/article/details/82424966Spring Cloud Gateway的PrefixPath及StripPrefix功能 - 筱进GG - 博客园序 本文主要研究一下spring cloud gateway的PrefixPath及StripPrefix功能 PrefixPathGatewayFilterF......原创 2022-06-16 20:41:18 · 1239 阅读 · 2 评论 -
SpringBoot+Nacos:@RefreshScope自动刷新原理
@RefreshScope的作用经过@RefreshScope注解修饰的bean,将被RefreshScope进行代理,用来实现配置、实例热加载,即当配置变更时可以在不重启应用的前提下刷新bean中相关的属性值。@RefreshScope注解@RefreshScope的实现如下,非常简单,最主要是@Scope("refresh")和ScopedProxyMode.TARGET_CLASS,表示@RefreshScope 是scopeName="refresh"的 @Scope,且代理模式为TAR转载 2022-03-28 20:16:48 · 8631 阅读 · 1 评论 -
从RefreshScope实现原理看刷新配置失效问题
前言在SpringIOC中,我们熟知的BeanScope有单例(singleton)、原型(prototype), Bean的Scope影响了Bean的创建方式,例如创建Scope=singleton的Bean时,IOC会保存实例在一个Map中,保证这个Bean在一个IOC上下文有且仅有一个实例。SpringCloud新增了一个refresh范围的scope,同样用了一种独特的方式改变了Bean的创建方式,使得其可以通过外部化配置(.properties)的刷新,在应用不需要重启的情况下热加载新的外部化转载 2022-03-22 14:54:11 · 4436 阅读 · 1 评论 -
Spring-Cloud Eureka集群配置
Eureka集群配置:配集群需要将各Eureka服务的服务端hostname服务名称修改,并将服务地址进行互相关联,服务名称间用‘ , ’分隔。启动类上注解@EnableEurekaServer开启服务新建Eureka7002与Eureka7003:导入依赖、application.yml配置文件、启动类。application.yml配置文件:server: port: 7002 # 端口# Eureka配置eureka: instance: host转载 2021-12-21 15:30:15 · 233 阅读 · 0 评论 -
SpringCloud openfeign @FeignClient注解的path参数不起作用?
本地测试时发现,请求http://localhost:9999/addLabel是可以的,请求http://localhost:9999/cms/addLabel会报404。接口是这样写的@FeignClient(name = "image-server" path = "/cms") public interface ImageLabelServiceCmsFeign { @PostMapping(value = "/addLabel") Result<Void转载 2021-03-18 17:20:38 · 7981 阅读 · 4 评论 -
透过现象看原理:详解Spring中Bean的this调用导致AOP失效的原因(this指针)
前言在我们使用Spring时,可能有前辈教导过我们,在bean中不要使用this来调用被@Async、@Transactional、@Cacheable等注解标注的方法,this下注解是不生效的。那么大家可曾想过以下问题为何致this调用的方法,注解会不生效 这些注解生效的原理又是什么 如果确实需要调用本类方法,且还需要注解生效,该怎么做? 代理是否可以做到this调用注解就直接生效?通过本文,上面的疑问都可以解决,而且可以学到很多相关原理知识,信息量较大,那么就开始吧现象以@A转载 2021-02-20 18:08:35 · 1090 阅读 · 1 评论 -
Ribbon服务实例选择与更新机制
简介用来了解下Ribbon选择服务实例和服务实例列表更新机制;选择服务实例涉及到如下几个类:1.ILoadBalancer:负载均衡对象,用于封装ServerList; 2.IRule:实例选择规则对象,决定采用何种规则进行实例选择; 3.Predicate:断言类,选择规则的具体实现; 4.LoadBalancerStats:用于保存实例状态的缓存类;更新过程Ribbon更新服务实例主要依靠的对象有:PollingServerListUpdater:该对象是用来更新服务实例转载 2021-02-09 14:51:37 · 490 阅读 · 0 评论 -
SpringCloud-OpenFeign-配置使用HttpClient
Spring Cloud Feign性能优化(使用httpclient/okhttp连接池通信):https://www.dazhuanlan.com/2019/12/05/5de8a898f2ae0/1、Spring Cloud替换Feign默认Client:https://www.appblog.cn/2020/11/09/Spring%20Cloud%E6%9B%BF%E6%8D%A2Feign%E9%BB%98%E8%AE%A4Client/2、怎样配置Feign使用HttpClient:h原创 2021-01-15 16:57:39 · 5988 阅读 · 0 评论 -
SpringCloudFeign引入feign-httpclient导致的坑
SpringCloudFeign底层是通过http/https协议进行通信,默认是采用java.net.HttpURLConnection,每次请求都会建立、关闭连接,为了性能考虑,可以引入httpclient、okhttp作为底层的通信框架。maven坐标如下:<dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-httpclient</artifact转载 2021-01-15 15:52:35 · 1791 阅读 · 1 评论 -
spring-cloud-stream 消息分区与消息分组【只有链接,后续补】
消息分区https://blog.csdn.net/guzhangyu12345/article/details/108012835https://blog.csdn.net/qq_38526573/article/details/94048443分组和分区https://www.cnblogs.com/dalianpai/p/12301049.html分组:https://zhuanlan.zhihu.com/p/107138354分区:https://zhuanlan.zhihu原创 2020-12-04 23:54:08 · 814 阅读 · 0 评论 -
spring-cloud-stream消息驱动的微服务
Spring Cloud Stream 是 一 个用来为微服务应用构建消息驱动能力的框架。 它可以基于Spring Boot 来创建独立的、 可用于生产的 Spring 应用程序。 它通过使用 Spring Integration来连接消息代理中间件以实现消息事件驱动。 Spring Cloud Stream 为 一 些供应商的消息中间件产品提供了个性化的自动化配置实现,并且引入了发布与订阅、 消费组以及分区这三个核心概念。 简单地说, Spring Cloud Stream 本质上就是整合了 Spring转载 2020-12-04 23:47:54 · 929 阅读 · 0 评论 -
SpringCloud-Gateway自定义局部 GatewayFilter
有两种方式:1、继承GatewayFilter,实现后使用java方式配置路由;2、继承AbstractGatewayFilterFactory,注入为bean即可(推荐)另外可参考:https://www.cnblogs.com/chenglc/p/13139407.htmlhttps://www.cnblogs.com/cloudxlr/p/11820638.html自定义过滤器工厂过滤器工厂的顶级接口是GatewayFilterFactory,我们可以直接继承它的两个抽象类转载 2020-12-02 22:02:45 · 3418 阅读 · 1 评论 -
SpringCloud-Gateway自定义全局 GlobalFilter
一种全局的一种局部的两种filters.提前准备的常见的全局一般就是日志记录。GlobalFilter是gateway提供给我们的,Ordered是Spring提供给我们的。filter是分前后顺序的,先入后出,后入先出的特性。所以需要实现ordered的接口。越小越早进入,越晚出去。这是具体的业务处理对象。我想调用下一个还是返回就取决于参数Chain这个链路。表示继续往下走,紧接着把exchange传进去。ServerWebExchange类似于我们Zuul里面学习到的 RequestCon转载 2020-12-02 21:55:09 · 2591 阅读 · 1 评论 -
SpringCloud-gateway Redis动态路由及 各EndPoint介绍
Spring Cloud Gateway 微服务网关 创建项目(命名 为 Gateway), 添加pom 依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>2.2.0.RELEASE</version>&转载 2020-12-02 21:47:51 · 2709 阅读 · 0 评论 -
微服务网关实战-Spring Cloud Gateway-自动路由配置
导读作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用。本文对Spring Cloud Gateway常见使用场景进行了梳理,希望对微服务开发人员提供一些帮助。微服务网关SpringCloudGateway1.概述Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spr转载 2020-12-02 17:26:08 · 3822 阅读 · 0 评论 -
Spring Cloud Gateway中异常处理 [JSON]
最近我们的项目在考虑使用Gateway,考虑使用Spring Cloud Gateway,发现网关的异常处理和spring boot 单体应用异常处理还是有很大区别的。让我们来回顾一下异常。关于异常是拿来干什么的,很多人老程序员认为就是拿来我们Debug的时候排错的,当然这一点确实是异常机制非常大的一个好处,但异常机制包含着更多的意义。关注业务实现。异常机制使得业务代码与异常处理代码可以分开,你可以将一些你调用数据库操作的代码写在一个方法里而只需要在方法上加上throw DB相关的异常。至于如何处.转载 2020-12-01 15:46:20 · 1932 阅读 · 0 评论 -
SpringCloud Gateway 动态路由配置导致cpu满载,内存耗完
SpringCloud Gateway导致cpu满载,内存耗完问题发现 问题查找 问题分析 动态配置代码问题发现**程序打好包丢上测试环境之后,正常运行了一段时间,可是一个周末回来,发现服务器卡得不行,一开始以为是机器问题,指定堆栈大小重启然后内存再给大一点,结果过了几天还是一样,于是开始怀疑程序问题了。**问题查找ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head查询服务器的占用情况,发现springclou.转载 2020-12-01 15:38:54 · 5493 阅读 · 1 评论 -
Spring Cloud Gateway 全局通用异常处理
为什么需要全局异常处理在传统 Spring Boot 应用中, 我们 @ControllerAdvice 来处理全局的异常,进行统一包装返回// 摘至 spring cloud alibaba console 模块处理@ControllerAdvicepublic class ConsoleExceptionHandler { @ExceptionHandler(AccessException.class) private ResponseEntity<String&转载 2020-12-01 13:24:54 · 1583 阅读 · 0 评论 -
Spring WebFlux 工作原理分析 - 2.应用启动过程--6.WebFlux 自动配置
本系列以上的文章,到Spring WebFlux 工作原理分析 - 2.应用启动过程–3.更新应用上下文为止,其实我们已经得到了一个启动完成处于服务状态的Reactive Web Server。但是为了更深入了解其中的Reactive Web Server,我们通过以下篇幅对其创建和启动过程做了详细的分析:Spring WebFlux 工作原理分析 - 2.应用启动过程–4.创建Web服务器 Spring WebFlux 工作原理分析 - 2.应用启动过程–5.启动Web服务器基于以上的分析,我们知转载 2020-12-01 13:23:13 · 1909 阅读 · 0 评论 -
Spring-cloud动态路由“动态”的理解,30s刷新一次路由的原理解析
非动态众所周知,gateway配置最后会被封装成RouteDefinition。可以通过硬编码来配置路由略读取yml文件配置路由@Configurationpublic class DynamicRouteAutoConfiguration { /** * 配置文件设置为空 * redis 加载为准 * * @return */ @Bean public PropertiesRouteDefinitionLocator propertiesRouteDefi转载 2020-11-29 19:57:08 · 3603 阅读 · 3 评论 -
spring cloud gateway-GatewayFilter、GlobalFilter、GatewayFilterChain、GatewayFilterFactory作用及生命周期
一、概述 在Spring-Cloud-Gateway之请求处理流程中最终网关是将请求交给过滤器链表进行处理。 核心接口:GatewayFilter,GlobalFilter,GatewayFilterChain。查看整体类图 二、网关过滤器作用 当使用微服务构建整个 API 服务时,一般有许多不同的应用在运行,如上图所示的mst-user-service、mst-good-service和mst-order-service,这些服务都需要对客户端的请求的进行 Auth转载 2020-11-29 19:17:21 · 4341 阅读 · 1 评论 -
微服务网关 Spring Cloud Gateway 与其它网关(介绍及使用)
1. 为什么是Spring Cloud Gateway一句话,Spring Cloud已经放弃Netflix Zuul了。现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是基于过滤器的,是阻塞IO,不支持长连接。Zuul 2.x版本跟1.x的架构大一样,性能也有所提升。既然Spring Cloud已经不再集成Zuul 2.x了,那么是时候了解一下Spring Cloud Gateway了。可以看到,最新的Spring Cloud中的Zuul还是1.3.1版本而且,官.转载 2020-11-29 19:08:14 · 1066 阅读 · 0 评论 -
SpringCloud gateway原理分析
前置说明本文源码基于springcloud Finchley版本. 以下分析仅代表个人的理解, 如有错误, 欢迎探讨.使用说明以spring一贯的作风, 用户使用的模式都是约定俗成的, 也就是引入spring-cloud-starter-gateway依赖, 然后就可以愉快的自动配置了. 但是这里有一个要说的点, springcloud gateway是只能使用在 webflux上面, 也就是说如果引入的springmvc依赖, 那么需要修改,不然只能使用zuul了. <d...转载 2020-11-29 00:12:57 · 1256 阅读 · 0 评论 -
微服务网关 Spring Cloud Gateway 概览
导读作为Netflix Zuul的替代者,Spring Cloud Gateway是一款非常实用的微服务网关,在Spring Cloud微服务架构体系中发挥非常大的作用。本文对Spring Cloud Gateway常见使用场景进行了梳理,希望对微服务开发人员提供一些帮助。微服务网关SpringCloudGateway1.概述Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的..转载 2020-11-28 19:16:52 · 580 阅读 · 0 评论 -
Spring Cloud Gateway动态路由实现
Gateway上线部署分析当你的网关程序开发完成之后,需要部署到生产环境,这个时候你的程序不能是单点运行的,肯定是多节点启动(独立部署或者docker等容器部署),防止单节点故障导致整个服务不能访问,网关是对客户端的入口与出口,在生产运行中极为重要,哪怕是简单的重启也会导致部分请求的丢失。网关的路由配置这个时候就是一个大问题,是代码里面编写还是配置文件配置?他们都有一个致命的缺点,当有新的程序需要接入到网关进行路由或者有服务需要下线时候需要修改代码或者配置,然后重启整个网关程序,导致其他正常的服务路转载 2020-11-28 16:39:04 · 1831 阅读 · 1 评论 -
Spring-Cloud-Gateway之Route初始化加载
Spring-Cloud-Gateway路由信息是通过路由定位器RouteLocator加载以及初始化的接下来阅读源码看下Spring-Cloud-Gateway是怎么一步一步的实现了路由的加载初始化。首选我们还是在Spring-Cloud-Gateway初始化配置中看Spring-Cloud-Gateway初始化是创建了路由定位相关的那些类------------- GatewayAutoConfiguration类 /** * 创建一个根据RouteDefinition.转载 2020-11-26 15:02:08 · 1932 阅读 · 0 评论 -
SpringCloud Gateway 和 Nacos 动态网关的相关配置
pom及spring-cloud、spring-cloud-alibaba版本<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring-boot.version>2.3.2.RELEASE</sp原创 2020-11-26 13:22:41 · 1959 阅读 · 0 评论 -
SpringCloud:学习Gateway网关拦截器的ServerWebExchange
1.Gateway的拦截器我们要在项目中实现一个拦截器,需要继承两个类:GlobalFilter, OrderedGlobalFilter:全局过滤拦截器,在gateway中已经有部分实现,具体参照:https://www.cnblogs.com/liukaifeng/p/10055862.htmlOrdered:拦截器的顺序,不多说于是一个简单的拦截器就有了@Slf4j@Componentpublic class AuthFilter implements GlobalFil转载 2020-11-26 10:13:08 · 10075 阅读 · 2 评论 -
SpringCloud 热更新原理,不重启服务使配置文件生效
不涉及配置中心的搭建和使用,网上百度一大堆,主要说一下不重启微服务使配置文件生效的流程首先我们得添加一个依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId></dependency>它会提供一个/refresh这样的监控端点,当配置文转载 2020-11-10 13:07:57 · 1358 阅读 · 0 评论 -
SpringCloud+Logback配置实例
boot+logback+nacos方案:https://blog.csdn.net/z69183787/article/details/108948325正常情况下使用 springboot + logback + nacos 进行日志级别动态变更是没有问题的,但当和springcloud一起使用时,会发生 logger级别重置的情况,即设置完某个logger的独立级别后,整个logger上下文会重新刷新,并且重置logger 为 Root设置的 level 级别。经过一番源码的探查,目前还未找到问题原创 2020-11-10 12:57:16 · 1782 阅读 · 0 评论 -
@Configuration(proxyBeanMethods = false) 详解
https://blog.csdn.net/yunxing323/article/details/108655250https://fangshixiang.blog.csdn.net/article/details/1061274181. Full 模式 Lite 模式proxyBeanMethods = true 或不写,是Full模式proxyBeanMethods = false 是lite模式不带@Configuration的类叫Lite配置类ConfigurationCl转载 2020-11-06 16:00:33 · 8948 阅读 · 0 评论 -
Spring-Cloud Nacos配置项监听 Listener
package com.saic.cloud.demo.listener;import ch.qos.logback.classic.Level;import ch.qos.logback.classic.LoggerContext;import com.alibaba.cloud.nacos.NacosConfigManager;import com.alibaba.cloud.nacos.NacosConfigProperties;import com.alibaba.nacos.api..原创 2020-11-06 15:01:50 · 8308 阅读 · 1 评论