202301-31 解决SpringCloud Gateway配置自定义路由404的坑 目录问题背景问题现象解决过程1检查网关配置2跟源码,查找可能的原因3异常原因分析解决方法心得问题背景将原有项目中的websocket模块迁移到基于SpringCloudAlibaba的微服务系统中,其中网关部分使用的是gateway。问题现象迁移后,我们在使用客户端连接websocket时报错:io.netty.handler.codec.http.websocketx.WebSocketHandshakeException:Invalidsubprotocol.Actual:null.Expectedoneof:protocol...同时,我们还有... 继续阅读 >
202205-17 SpringCloud如何解决服务之间的通信问题 目录1、如何解决服务之间的通信问题?2、如何在java代码中发起http方式请求?3、实现服务间通信的小案例4、现有RestTemplate方式通信存在的问题?5、解决RestTemplate负载均衡问题1、如何解决服务之间的通信问题?[1]HTTPREST方式使用http协议进行数据传递json格式数据[2]RPC方式远程过程调用二进制数据从OSI七层结构来讲,即物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。http属于应用层协议,而RPC属于传输... 继续阅读 >
202205-17 使用springCloud+nacos集成seata1.3.0搭建过程 1.docker安装seata1.3.0镜像dockerpullseataio/seata-server:1.3.02.运行容器获取配置文件dockerrun--nameseata-server-p8091:8091-dseataio/seata-server:1.3.03.将容器中的配置拷贝到/usr/local/seata-1.3.0dockercpseata-server:/seata-server/usr/local/seata-1.3.04.停止容器删除容器dockerstopseata-serverdocekrrmseata-server5.进入目录/usr/local/seata-1.3.0/resources中修改file.conf和registry.conf... 继续阅读 >
202204-30 SpringCloud2020.0.x版UnderTow AccessLog相关配置简介 目录01.accesslog相关配置02.日志文件rotate目前只能按照日期03.access占位符总结本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford01.accesslog相关配置server:undertow:#accesslog相关配置accesslog:#存放目录,默认为logsdir:./log#是否开启enabled:true#格式,各种占位符后面会详细说明pattern:'{... 继续阅读 >
202204-12 一篇文章教你如何在SpringCloud项目中使用OpenFeign 目录OpenFeign的介绍OpenFeign是一种声明式、模板化的HTTP客户端。OpenFeign与Feign的之间的关系OpenFegin中的两个常用注解在项目中使用OpenFeign调用关系图导入依赖使用注解@FeignClient@EnableFeignClients注入对象、调用总结:OpenFeign的介绍OpenFeign是一种声明式、模板化的HTTP客户端。何为声明式?就像调用本地方法一样调用远程方法,无需感知操作远程http请求。何为模板化?Feign会为每一个Feign接口方法创建一个Reques... 继续阅读 >
202203-17 springcloud之Feign、ribbon如何设置超时时间和重试机制 Feign、ribbon设置超时时间和重试机制前言我们在微服务调用服务的时候,会使用feign和ribbon,比如有一个实例发生了故障而该情况还没有被服务治理机制及时的发现和摘除,这时候客户端访问该节点的时候自然会失败。所以,为了构建更为健壮的应用系统,我们希望当请求失败的时候能够有一定策略的重试机制,而不是直接返回失败。先看一个配置:#预加载配置,默认为懒加载ribbon:eager-load:enabled:trueclients:zoo-plus-e... 继续阅读 >
202203-16 初探Spring Cloud Gateway实战 目录关于SpringCloudGateway版本信息经典配置中的核心概念启动nacos-2.0.3源码下载《SpringCloudGateway实战》系列的父工程创建名为common的子工程,存放共用的常量和数据结构创建web应用,作为服务提供方开发一个简单的demo,完成spring-cloud-gateway的初体验总结关于SpringCloudGateway这是一个基于Spring技术栈构建的API网关,涉及到:Spring5、SpringBoot2、Reactor等,目标是为项目提供简单高效的API路由,以及... 继续阅读 >
202202-10 Nginx+SpringCloud Gateway搭建项目访问环境 目录安装Nginx准备SpringBoot应用添加网关现如今的项目开发基本都是微服务方式,导致一个系统中会有很多的服务,每个模块都对应着不同的端口,为了方便访问,通常会让某个服务绑定一个域名,比如商品服务:product.xxx.com;订单服务:order.xxx.com,此时可以使用Nginx来搭建一个域名访问环境,基于前后端分离开发的项目经常会遇到跨域问题,使用Nginx也能轻松解决。安装Nginx首先拉取nginx的镜像:dockerpullnginx:1.10然后随... 继续阅读 >
202110-29 SpringCloud Config使用配置方法 Config介绍SpringCloudConfig项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。构建配置中心配置中心服务端配置新建一个配置中心模块,且注册到eureka中,在其他服务的基础上增加如下配置pom文件增加配置服务端设置<!--config配置中⼼服务端--><dependency... 继续阅读 >
202110-29 SpringCloud gateway request的body验证或修改方式 SpringCloudgatewayrequest的body验证或修改后续版本新增了以下过滤器org.springframework.cloud.gateway.filter.headers.RemoveHopByHopHeadersFilter默认会把以下头部移除(暂不了解这做法的目的)-connection-keep-alive-te-transfer-encoding-trailer-proxy-authorization-proxy-authenticate-x-application-context-upgrade从而导致下面我们重写getHeaders方法时添加的transfer-encoding头部移除,导致无法解析bod... 继续阅读 >
202110-28 SpringCloud 如何提取公共配置 SpringCloud提取公共配置在开发微服务项目时,通常会有很多服务,此时会用配置中心来管理这些服务的配置,但有些服务可能会有相同的配置,比如数据源配置,eurekaserver注册中心地址配置,actuator开放端口配置等,很多的服务都需要,如果每个服务都写一份这样相同的配置,服务一多,也挺麻烦的,并且如果要换一个数据库或注册中心,每个服务都得改,很麻烦,所以就需要将这些公共的配置提取出来,放到公共的配置文件中,而这些... 继续阅读 >
202110-28 SpringCloud gateway跨域配置的操作 gateway跨域配置gateway允许跨域的配置和zuul的不一样,记录一下。版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.6.RELEASE</version><relativePath/><!--lookupparentfromrepository--></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>... 继续阅读 >
202110-28 解决springcloud-gateway限流遇到的问题 场景:最近在研究springcloud组件gateway限流的实现,看官网springcloud操作下去,决定采用redis的方式去实现这个限流,因为系统架构是分布式的,方便以后的迭代升级,所以就用redis了,之后就出现了下面的异常!!!异常信息:java.lang.IllegalArgumentException:UnabletofindGateWayFilterFactorywithnameRequestRateLimiter我的开发环境是离线的状态,maven库只能用本地的,因为这个问题耗费了我一天时间,网上几乎... 继续阅读 >
202110-28 浅谈springcloud gateway 连接保活问题 项目中使用了springcloudgateway作为网关,上游与负载均衡服务器连接。近期通过监控系统观察,发现网关与上游负载均衡服务器保持的TCP连接有300+,初步怀疑是调用方未释放连接用如下方法进行分析:1)周期性采集当前建立的连接及端口数据首先是每隔10分钟连续采集2两个小时,发现在两个小时之内新出现的端口不到12个,再逐步缩短采样周期,到最后每秒采集一次,分析发现每秒种建立一个连接,同时关闭一个连接,当仍存在300+连接,... 继续阅读 >
202110-28 引入SpringCloud-gateway报错的解决方案 1.问题描述在我引入SpringCloud-gateway,运行时报错如下:org.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'routeDefinitionRouteLocator'definedinclasspathresource[org/springframework/cloud/gateway/config/GatewayAutoConfiguration.class]:Unsatisfieddependencyexpressedthroughmethod'routeDefinitionRouteLocator'parameter4;nestedexceptionisor... 继续阅读 >
202110-28 SpringCloud 服务网关路由规则的坑及解决 一、场景简述笔者最近用到SpringCloud服务网关的时候,进行服务网关的路由测试,发现无法路由自己设置的规则,测试的时候如下通过错误排查发现,原来是路由规则写错了!路由规则如下(错误)#端口server:port:8080spring:#该配置文件中的配置,对应的服务名称是wc-gatewayapplication:name:wc-gatewayprofiles:active:dev#服务网关配置zuul:host:connect-timeout-millis:60000socket-timeout-millis:... 继续阅读 >