[图片上传失败...(image-883e28-1653318905408)]背景前段时间同事碰到一个问题,需要在SpringCloud的Feign调用中使用自定义的URL;通常情况下是没有这个需求的;毕竟都用了SpringCloud的了,那服务之间的调用都是走注册中心的,不会需要自定义URL的情况。但也有特殊的,比如我们这里碰到ToB场景,需要对每个商户自定义的URL进行调用。虽说也可以使用原生的Feign甚至是自定义一个OKHTTPClient实现,但这些方案都得换一种写法;打算利用现有的SpringCloudOpenFeign来实现,毕竟原生的Feign其实是支持该功能的,而Spring
一、web服务器配置选用undertow服务器,添加undertow依赖 org.springframework.boot spring-boot-starter-undertowa、相关配置server: undertow: io-threads:16 worker-threads:256 buffer-size:1024 buffers-per-region:1024 direct-buffers:trueb、参数解释server.undertow.io-threads:设置IO线程数,它主要执行非阻塞的任务,它们会负责多个连接,默认设置每个CPU核心一个线程,不要设置过大,如果
一、web服务器配置选用undertow服务器,添加undertow依赖 org.springframework.boot spring-boot-starter-undertowa、相关配置server: undertow: io-threads:16 worker-threads:256 buffer-size:1024 buffers-per-region:1024 direct-buffers:trueb、参数解释server.undertow.io-threads:设置IO线程数,它主要执行非阻塞的任务,它们会负责多个连接,默认设置每个CPU核心一个线程,不要设置过大,如果
前言1.rocketmq安装可参考:https://www.jianshu.com/p/f3713adfa3dd2.启动好nameserv和broker3.官方RocketMQ+springcloudstream例子https://github.com/alibaba/spring-cloud-alibaba/blob/2021.x/spring-cloud-alibaba-examples/rocketmq-example/readme-zh.md本文将说明普通消息发送/消费、广播消息发送/消费、延时消息发送消费三种模式项目环境/依赖:2.3.12.RELEASEHoxton.SR122.2
前言1.rocketmq安装可参考:https://www.jianshu.com/p/f3713adfa3dd2.启动好nameserv和broker3.官方RocketMQ+springcloudstream例子https://github.com/alibaba/spring-cloud-alibaba/blob/2021.x/spring-cloud-alibaba-examples/rocketmq-example/readme-zh.md本文将说明普通消息发送/消费、广播消息发送/消费、延时消息发送消费三种模式项目环境/依赖:2.3.12.RELEASEHoxton.SR122.2
image.png1、源码入口SpringCloud是基于Springboot的,而Springboot最大的特点就是自动装配:通过SPI机制加载META-INF下的spring.factories文件,来自动的注册一些必要的bean,以达到自动装配的效果。所以我们读SpringCloud各个组件的源码也是从这里直接去找相关jar包下META-INFO下的spring.factories文件,看看自动注册了哪些类的实例。eureka的依赖分为eureka服务端和客户端两部分,我们先从eureka客户端看起。找到这个jar包org.springframework.cloud:spring-clo
image.png1、源码入口SpringCloud是基于Springboot的,而Springboot最大的特点就是自动装配:通过SPI机制加载META-INF下的spring.factories文件,来自动的注册一些必要的bean,以达到自动装配的效果。所以我们读SpringCloud各个组件的源码也是从这里直接去找相关jar包下META-INFO下的spring.factories文件,看看自动注册了哪些类的实例。eureka的依赖分为eureka服务端和客户端两部分,我们先从eureka客户端看起。找到这个jar包org.springframework.cloud:spring-clo
日志打印收集是开发中调试和定位线上问题的关键手段也是重中之重,gateway作为请求入口转发的核心模块,合理、规范的日志打印很重要。这里只进行日志的打印输出,不做收集,收集汇总工作可以结合ELK,监控日志文件进行同步。实现方式使用gateway的GlobalFilter过滤器。请求日志打印的过滤器排序尽量低一些。打印日志时,注意避免多次打印造成并发请求日志错乱,可以拼接一个大的日志串,一次打印输出。RequestLogFilter增加一个请求入参过滤器,用来打印入参信息。@Slf4j@Configuration@ConditionalOnProperty(value="log.request.
日志打印收集是开发中调试和定位线上问题的关键手段也是重中之重,gateway作为请求入口转发的核心模块,合理、规范的日志打印很重要。这里只进行日志的打印输出,不做收集,收集汇总工作可以结合ELK,监控日志文件进行同步。实现方式使用gateway的GlobalFilter过滤器。请求日志打印的过滤器排序尽量低一些。打印日志时,注意避免多次打印造成并发请求日志错乱,可以拼接一个大的日志串,一次打印输出。RequestLogFilter增加一个请求入参过滤器,用来打印入参信息。@Slf4j@Configuration@ConditionalOnProperty(value="log.request.
在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如killPID和kill-9PID都是暴力杀死服务,相对于kill-9PID来说,killPID就是优雅的。但如果单独拿killPID出来说,我们能说它是优雅的下线策略吗?肯定不是啊,就是这个道理。因此,本文讲述的优雅下线仅能称之为“相对的优雅下线”,但相对于暴力的杀