
分布式
文章平均质量分 73
Thai_
never
展开
-
Gateway 报错org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes..
Spring Boot 版本:2.6.6Spring Cloud Gateway 版本:3.1.1由于在 Gateway 的自定义过滤器中重写了请求 ServerRequest,后面因为升级了架构,原本旧版本未对请求参数的大小进行限制(默认取-1),后面升级了新版修改为 256KB 的限制。解决方案如下:一、设置配置文件(失败)spring: codec: max-in-memory-size: 50MB二、添加配置 Bean(失败)@Configuration@EnableW原创 2022-04-30 17:15:29 · 4629 阅读 · 0 评论 -
Gateway 报错 java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is
引起错误的原因,在负载均衡调用时 BlockingLoadBalancerClient 会有一个 block 的操作 @Override public <T> ServiceInstance choose(String serviceId, Request<T> request) { // 略... // block Response<ServiceInstance> loadBalancerResponse = Mono.from原创 2022-04-29 17:37:16 · 6934 阅读 · 0 评论 -
Ribbon 的替代品 Spring Cloud Loadbalancer 使用与原理分析
目录一、 使用方法二、 @LoadBalancerClients 与 @LoadBalancerClient三、 自定义负载均衡四、 重试机制五、 原理分析六、 执行流程分析系列文章:Spring Cloud LoadBalancer之负载均衡简介Spring Cloud NamedContextFactory 原理分析Ribbon 的替代品 Spring Cloud Loadbalancer 使用与原理分析本文所有的 spring-cloud-loadbalancer version:3.1原创 2022-04-22 23:22:32 · 8256 阅读 · 4 评论 -
Spring Cloud LoadBalancer之负载均衡简介
概念负载均衡,英文名称为 Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如 FTP 服务器、Web 服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。来源于百度百科说白一点就是通过一个协调者,将工作尽量均匀地分配出去,不让某一个提供者承受太多的工作,或者某个提供者能力更大,协调者可以将更多的工作分配给它。1.1 负载均衡分类硬件负载均衡,不依赖于底层的软件,通过专门的硬件去实现软件负载均衡,例如 nginx、ribb原创 2022-04-22 10:14:48 · 2197 阅读 · 0 评论 -
Spring Cloud NamedContextFactory 原理分析
本次完整代码地址1.1 NamedContextFactory 作用ribbon 与 loadbalancer 都能做到对不同的调用服务使用不同的负载均衡配置。例如:数据服务需要查询的时间较长,用户中心服务查询用户信息的时间较短,二者可以采用不同的负载策略。要实现上述要求,可以使用 Spring Cloud 提供的 NamedContextFactory 实现;他的作用就是根据名称去存储不同的 ApplicationContext,这样就能实现不同的名称的 Bean 隔离了。由于NamedCont原创 2022-04-21 11:09:34 · 1231 阅读 · 0 评论 -
Spring Cloud Gateway 响应出现中文乱码?
前言:记一次 Gateway 读取响应内容时导致中文乱码。问题还是比较严重的,因为这个问题导致系统全局中文出现偶发性乱码,经过 debug 追踪,最终确认了是在 gateway 获取响应内容重写时出现了问题。场景复现:先看代码,方法的功能是读取响应结果,并记录响应结果。 /** * 记录响应日志 * * @param exchange * @return */ private ServerHttpResponseDecorator logR原创 2022-03-29 23:54:19 · 4933 阅读 · 3 评论 -
Spring Cloud Gateway 本地内存 IP 限流
限流对保障系统的可用性有着至关重要的作用,通常限流已经有成熟的框架可以做到,如 Hystrix、Sentinel 等;这里介绍如何使用 Spring Cloud Gateway 实现对 IP 的限流。 常见的限流算法有 滑动窗口、漏桶算法、令牌桶算法,以下简单介绍下漏桶与令牌桶算法:漏桶算法: 以固定的速率处理流量,桶里的水溢出了,则不管丢弃,对突发的流量无特殊处理。令牌桶算法: 令牌桶算法则是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。桶中存放的令牌数有最大上限,超出之后就原创 2022-03-19 18:03:54 · 2234 阅读 · 0 评论 -
Spring Cloud Gateway 执行流程解读
gateway 是在 Spring WebFlux 的基础上构建的,目标是提供一个简单高效的方式去统一管理 API 路由。Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标和限流。一、整体流程请求处理流程 UML 图从 UML 图可以看得出来 gateway 使用了与 Spring Mvc 类似的处理逻辑,即适配器模式;先从 Mapping 中匹配到适配器,然后使用适配器调用 handler。原创 2022-03-17 21:28:27 · 3624 阅读 · 0 评论 -
Hystrix 熔断降级配置
1. 基础知识1.1 服务隔离 说明:把每个依赖或调用的服务都隔离开来,防止级联失败引起整体服务不可用 博客:https://zhuanlan.zhihu.com/p/59109781 Hystrix 隔离策略的区别如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmUzwQOa-1646387001228)(.\img\270324-20181228163336619-55270777.png)]1.2 熔断说明:为了防止服务雪崩,类似家用电原创 2022-03-09 22:55:43 · 3053 阅读 · 0 评论