WebFlux(reactor)中获取完整response body数据
摘要:场景使用Spring Cloud Gateway(SCG)时,想在网关日志中输出返回日志,但由于数据流只能被读取一次,必须使用特定方式进行重写才能正常返回到前端。 处理过程起初使用fluxBody.map读取数据流,会出现多次输出的情况,由于使用的时reactor框架处理数据,导致会出现将一个结果集
阅读全文
posted @
2021-05-31 09:07
duanxz
阅读(3138)
推荐(0) 编辑
Spring Cloud Gateway 扩展支持多版本控制及灰度发布
摘要:第一反应,参考zuul 的实现,自定义断言,然后从上下中获取版本信息即可。但由于 spring cloud gateway 是基于webflux 的反应式编程,所以传统的TTL或者 RequestContextHolder 都不能正确的维护上下文请求。 先来看 spring clou的 gatewa
阅读全文
posted @
2021-05-24 19:09
duanxz
阅读(1482)
推荐(0) 编辑
Springboot2.x actuator
摘要:一、Springboot2.x的actuator使用 1.1、添加依赖包 compile 'org.springframework.boot:spring-boot-starter-actuator:2.3.8.RELEASE' Springcloud Gateway项目中的springboot是2
阅读全文
posted @
2021-05-21 15:41
duanxz
阅读(870)
推荐(0) 编辑
build.gradle模板文件
摘要:build.gradle是gradle中非常重要的一个文件,因为它描述了gradle中可以运行的任务,今天本文将会带大家体验一下如何创建一个build.gradle文件和如何编写其中的内容。 project和task gradle是一个构建工具,所谓构建工具就是通过既定的各种规则,将原代码或者原文件
阅读全文
posted @
2021-05-21 14:14
duanxz
阅读(1331)
推荐(0) 编辑
SpringCloud Gateway全链路实现
摘要:背景 随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。而诸多的服务可能分布在了几千台服务器,横跨多个不同的数据中心。为了快速定位和解决故障,应用性能进行分析,全链路监控组件就在这样的问题背景下产生了。最出名的是谷歌公开的论文提到的Google Dapper。想要在这
阅读全文
posted @
2021-05-20 09:38
duanxz
阅读(1882)
推荐(0) 编辑
SpringCloud Gateway获取request body
摘要:问题1:无法获取body内容 问题原因分析 在使用过程中碰到过滤器中获取的内容一直都是空的,尝试了网上的各种解析body内容的方法,但是得到结果都是一样,死活获取不到body数据,一度很崩溃。后来进行了各种尝试,最终发现使用不同的spring boot版本和spring cloud版本,对结果影响很
阅读全文
posted @
2021-05-20 09:36
duanxz
阅读(2830)
推荐(0) 编辑
Spring Cloud Gateway-自定义异常处理
摘要:一、前提 我们平时在用SpringMVC的时候,只要是经过DispatcherServlet处理的请求,可以通过@ControllerAdvice和@ExceptionHandler自定义不同类型异常的处理逻辑,具体可以参考ResponseEntityExceptionHandler和Default
阅读全文
posted @
2021-05-19 18:28
duanxz
阅读(4293)
推荐(0) 编辑
Gateway 过滤器总结
摘要:一、filter的作用和生命周期 Zuul1.x 阻塞式IO 2.x 基于Netty,Spring Cloud GateWay天生就是异步非阻塞的,基于Reactor模型; 一个请求-->网关根据特定的条件匹配—>匹配成功之后可以将请求转发到指定的服务地址;在这个过程中,我们可以进行一些比较具体的控
阅读全文
posted @
2021-05-18 14:05
duanxz
阅读(4198)
推荐(1) 编辑
spring cloud gateway和nigix 路由转发时携带域名头信息
摘要:1.nigin添加一段配置 server { listen 80; # this is the key !!!!! proxy_set_header Host $host; location /client/pids { proxy_pass http://10.103.13.103:3200/cl
阅读全文
posted @
2021-05-18 11:28
duanxz
阅读(2134)
推荐(0) 编辑
spring cloud gateway 报错 Unable to find GatewayFilterFactory with name
摘要:Unable to find GatewayFilterFactory with name xxx 原因是过滤器名称导致的... spring 约定过滤器类名"xxx"+GatewayFilterFactory,其中"xxx"为配置中的name; 配置文件中 filters: - name: Val
阅读全文
posted @
2021-05-17 18:19
duanxz
阅读(5389)
推荐(1) 编辑
springcloud-gateway整合Swagger聚合微服务系统API文档
摘要:最近使用Spring Cloud Gateway替换Zuul的时候发现Swagger并不支持以WebFlux为底层的Gateway,无法集成,运行报错。 首先是子项目Spring Boot项目正常集成Swagger。在业务项目Admin中添加Swagger依赖包(使用consul为注册中心),这里跳
阅读全文
posted @
2021-05-17 17:19
duanxz
阅读(2302)
推荐(0) 编辑
Gateway 其他配置
摘要:1. TLS / SSL Spring Cloud Gateway使用HTTPS,是和普通的Spring boot服务配置是一样的,比如: application.yml. 1234567 server: ssl: enabled: true key-alias: scg key-store-pas
阅读全文
posted @
2021-05-13 21:05
duanxz
阅读(1205)
推荐(0) 编辑
Gateway Global Filters
摘要:Global Filters GlobalFilter接口方法和GatewayFilter是一样的,GlobalFilter特别之处在于它的作用是全局的。 1. Combined Global Filter and GatewayFilter Ordering 当请求到来时,Filtering We
阅读全文
posted @
2021-05-13 21:00
duanxz
阅读(562)
推荐(0) 编辑
Gateway GatewayFilter Factories
摘要:GatewayFilter Factories Route filters可以通过一些方式修改HTTP请求的输入和输出,针对某些特殊的场景,Spring Cloud Gateway已经内置了很多不同功能的GatewayFilter Factories。 下面就来通过例子逐一讲解这些GatewayFi
阅读全文
posted @
2021-05-13 20:57
duanxz
阅读(457)
推荐(0) 编辑
Gateway Route Predicate Factories
摘要:Spring Cloud Gateway是使用Spring WebFlux的HandlerMapping作为匹配路由底层实现,本身已自带很多Route Predicate Factories,分别匹配不同的http请求属性,多个Route Predicate Factories也可以通过and进行逻
阅读全文
posted @
2021-05-13 19:59
duanxz
阅读(264)
推荐(1) 编辑
Redis HyperLogLog使用
摘要:Redis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。 在 Redis 里面,每个 HyperLogLog
阅读全文
posted @
2021-05-10 15:11
duanxz
阅读(340)
推荐(0) 编辑
Redis HyperLogLog使用
摘要:Redis 在 2.8.9 版本添加了 HyperLogLog 结构。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。 在 Redis 里面,每个 HyperLogLog
阅读全文
posted @
2021-05-10 14:36
duanxz
阅读(230)
推荐(0) 编辑
Redis 事务操作
摘要:1、RedisTemplate的API实现 @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest @EnableAutoConfiguration @EnableFeignClients //@ActiveProfiles("sonar")
阅读全文
posted @
2021-05-10 10:32
duanxz
阅读(244)
推荐(0) 编辑
Redis 监视器
摘要:一 介绍 客户端可以通过执行MONITOR命令,将客户端转换成监视器,接收并打印服务器处理的每个命令请求的相关信息。 当一个客户端从普通客户端变为监视器时,该客户端的REDIS_MONITOR标识会被打开。服务器将所有监视器都记录在monitors链表中。每次处理命令请求时,服务器都会遍历monit
阅读全文
posted @
2021-05-09 18:05
duanxz
阅读(256)
推荐(0) 编辑
Redis 慢查询日志
摘要:《Redis性能问题排查解决手册》《Redis的基本操作以及info命令》《redis object命令》《清理 redis 死键》 一、什么是slowlog Slow log 是 Redis 用来记录查询执行时间的日志系统。提供的一种用于观察系统性能的功能, 这个功能的实现非常简单, 这里我们也简
阅读全文
posted @
2021-05-09 17:51
duanxz
阅读(1054)
推荐(0) 编辑
Redis Lua脚本
摘要:Lua 脚本功能是 Reids 2.6 版本的最大亮点, 通过在服务器中内嵌对 Lua 环境的支持,Redis客户端可以使用Lua脚本,直接在服务器端原子地执行多个Redis命令。 Redis 解决了长久以来不能高效地处理 CAS (check-and-set)命令的缺点, 并且可以通过组合使用多个
阅读全文
posted @
2021-05-09 17:01
duanxz
阅读(515)
推荐(0) 编辑
Redis事务
摘要:Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务功能, 本章首先讨论使用 MULTI 、 DISCARD 和 EXEC 三个命令实现的一般事务, 然后再来讨论带有 WATCH 的事务的实现。 因为事务的安全性也非常重要, 所以本章最后通过常见的 AC
阅读全文
posted @
2021-05-09 16:35
duanxz
阅读(219)
推荐(0) 编辑
Redis发布与订阅
摘要:Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了订阅与发布模式, 这个功能提供两种信息机制, 分别是订阅/发布到频道和订阅/发布到模式。 举个例子: 当右边窗口执行了后, 一、频道的订阅与信息发送 Redis 的 SUBSCRIBE 命令可以让客户端订阅任意数量的频道, 每当有
阅读全文
posted @
2021-05-09 15:31
duanxz
阅读(566)
推荐(0) 编辑
Redis服务器
摘要:Redis 服务器: Redis 服务器实现与多个客户端的连接,并处理这些客户端发送过来的请求,同时保存客户端执行命令所产生的数据到数据库中。Redis 服务器依靠资源管理器来维持自身的运转,其主要作用是管理 Redis 服务。 一、命令请求的执行过程 举个例子: 我们向客户端发送了一条命令:SET
阅读全文
posted @
2021-05-09 14:45
duanxz
阅读(681)
推荐(0) 编辑
Redis客户端
摘要:Redis 是一个客户端服务端的程序,服务端提供数据存储等等服务,客户端连接服务端并通过向服务端发送命令,读取或写入数据,简单来说,客户端就是某种工具,我们通过它与 Redis 服务端进行通讯并完成数据操作。 客户端并不是 Redis 的核心,Redis 的核心是它的服务端程序,服务端程序才是完成数
阅读全文
posted @
2021-05-09 11:59
duanxz
阅读(903)
推荐(1) 编辑
Redis单线程模型,redis6的多线程模型
摘要:为什么单线程还能这么快 通常来讲,单线程处理能力要比多线程差,那么为什么Redis使用单线程模型会达到每秒万级别的处理能力呢?可以将其归结为三点: 第一:纯内存访问,Redis将所有数据放在内存中,内存的响应时长大约为100纳秒,这是Redis达到每秒万级别访问的最重要的基础。 第二:非阻塞I/O,
阅读全文
posted @
2021-05-09 11:24
duanxz
阅读(397)
推荐(1) 编辑
Redis数据库
摘要:一、Redis服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个想都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库: struct redisServer { //一个数组,保存着服务
阅读全文
posted @
2021-05-09 09:53
duanxz
阅读(579)
推荐(0) 编辑