随笔分类 - SpringCloud
1
SpringCloud
摘要:一.背景 去年SpringCloudGateway爆出了远程代码执行漏洞(CVE-2022-22947),具体表现就是可以通过查询和修改actuator相关的信息,导致网关路由异常 官方给出了升级Gateway版本的方案,但由于升级Gateway版本影响面太大,实际情况比并支持我们这边错,这里通记录
阅读全文
摘要:一.背景 项目中的微服务使用了MDC在网关侧生成了请求链路ID,将链路ID传递到下游微服务中,然后需要将该链路ID写入到Gateway的响应中,作为本次客户端本地请求的标识 二.想法 通过自定义全局过滤器来实现对Gateway响应数据的修改,添加链路ID(trackId)返回给客户端 三.实现 /*
阅读全文
摘要:一.背景 SpringCloudGateway增加基于Redis的限流功能,但由于认证鉴权功能也是在网关连接Redis完成,本着上级上单一职责的原则,尽量将认证鉴权Redis与限流使用的Redis独立开来,在网关配置了多套Redis数据源用于实现不同的功能,总结和记录在配置过程的经验 二.想法 由于
阅读全文
摘要:一.背景 最近项目中频繁有使用基于SpringCloudGateway组件开发相关功能,如自定义路由断言,自定义拦过滤器,限流,灰度发布等功能,因此通过文章记录开发过程中的细节和问题点,本篇文档主要记录SpringCloudGateway路由断言 二.什么是路由断言 路由断言是由SpringClou
阅读全文
摘要:一.背景 最近项目中有需要使用到Websocket做长连接推送,这里整理在具体实现过程中的细节和踩过的坑 二.问题点 在实现过程中,这里自己整理了一些问题点 1.WebsocketSession无法序列化到Redis以及MySQL中,集群环境下,如果进行服务端推送到指定客户端,如何知道该客户端与后台
阅读全文
摘要:一.背景 本文主要介绍在文章一和文章二的基础上,通过自定义灰度标记请求头的方式实现灰度标记的传递,以及基于指定用户id的服务端灰度发布设计 二.解决方案 1. 自定义灰度标记请求头方案 //TODO 2.基于用户指定用户id的服务端灰度发布方案 //TODO
阅读全文
摘要:一.背景 在上文中,灰度发布遇到了些问题,例如: 1.多个终端,例如移动端(IOS和Android),PC端,Web端对应的版本号不同,但又需要访问同一个后台微服务,网关灰度路由怎么配置 2.动态修改Nacos配置中心的元数据信息,如何同步到Nacos注册中心对应服务的列表中 3.管理后台业务调用其
阅读全文
摘要:背景 由于项目中使用到Feign/Ribbon/Hystrix组件,在不通的场景需要配置各自组件组件的超时时间,网上找了很多博客,这块如何配置,配置的优先级以及分别适合在什么样的场景下使用没有很准确的说明 本篇博客,主要针对项目中的业务场景说明这块的配置和使用场景 配置 Ribbon的配置 1.Ri
阅读全文
摘要:FeignClient请求的过程,主要是在发送请求的过程中,整合了Ribbon实现负载均衡,以及从注册中心获取服务列表的,最终响应的过程 一.源码入口 SynchronousMethodHandler.invoke()方法 @Override public Object invoke(Object[
阅读全文
摘要:FeignClient实例化的主要目的是为了项目中使用@AutoWired 注解注入的被@FeignClient修饰的接口的实现类,显然这里是通过动态代理的方式生成接口的动态代理对象,将生成动态代理对象放入Spring容器中 这里的触发点也就是在FeignClientFactoryBean的getO
阅读全文
摘要:一.源码入口 1. 开启Feign客户端的核心注解为:@EnableFeignClients,表示该项目能够被声明为Feign的客户端 @Slf4j @SpringBootApplication @EnableDiscoveryClient @EnableFeignClientspublic cla
阅读全文
摘要:Nacos心跳是健康检查的一部分,心跳是服务端确认客户端是否存活的关键 这里将源码拆为两部分: 1.客户端发送心跳 2.服务端接受客户端心跳 一.客户端发送心跳: 在第二部分客户端注册实例的源码分析时,提到判断如果实例是临时实例,就会初始化心跳信息和发送心跳的线程任务,如下 @Override pu
阅读全文
摘要:一.启动nacos源码中的 nacos-excample项目 1.添加JVM启动参数或者 直接在main方法中硬编码指定nacos-server的ip和端口 Properties properties = new Properties();properties.setProperty("server
阅读全文
摘要:1.源码下载地址 https://github.com/alibaba/nacos ,这里我选择目前线上稳定的1.3.x版本 2.Nacos 源码目录: 这里Nacos主要是启动 console工程 3.配置MySQL脚本, 启动cosole服务 在MySQL中创建nacos库,执行distribu
阅读全文
摘要:方法一: 使用Feign拦截器 /** * @author: Sam.yang * @date: 2020/11/12 16:55 * @desc: feign请求拦截 */ @Slf4j @Component public class FeignRequestInterceptor impleme
阅读全文
摘要:Ribbon Ribbon 是 Netflix开源的基于HTTP和TCP等协议负载均衡组件 Ribbon 可以用来做客户端负载均衡,调用注册中心的服务 Ribbon的使用需要代码里手动调用目标服务,请参考官方示例:https://github.com/Netflix/ribbon Feign Fei
阅读全文
摘要:本篇随笔接上一篇文章:Springboot整合Nacos配置中心(一),主要记录Nacos多环境的配置的方法 Nacos多环境的配置 方法一: 1.在项目中的bootstrap.yaml文件中配置激活指定的配置文件 spring: application: name: gabriel cloud:
阅读全文
摘要:一.本地Nacos安装环境: Win7 ,JDK8 ,maven3.5 1.下载安装包 2.启动nacos服务,bin文件下下面startup.cmd 3.访问 http://localhost:8848/nacos 二.整合Springboot Springboot版本如下: <parent> <
阅读全文
摘要:在上周在的微供有数项目中(数据产品),需要对接企业微信中第三方应用,在使用Feign的去调用微服务的用户模块用微信的code获取access_token以及用户工厂信息时出现Feign重试超时报错的情况,通过此篇文章记录问题解决的过程。 一.问题重现: 1.SpringCloud部分依赖如下 <pa
阅读全文
1