草庐IT

springcloud-alibaba

全部标签

15. SpringCloud之Eureka客户端源码解析

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

15. SpringCloud之Eureka客户端源码解析

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

Springcloud Gateway网关日志这样打才完美

日志打印收集是开发中调试和定位线上问题的关键手段也是重中之重,gateway作为请求入口转发的核心模块,合理、规范的日志打印很重要。这里只进行日志的打印输出,不做收集,收集汇总工作可以结合ELK,监控日志文件进行同步。实现方式使用gateway的GlobalFilter过滤器。请求日志打印的过滤器排序尽量低一些。打印日志时,注意避免多次打印造成并发请求日志错乱,可以拼接一个大的日志串,一次打印输出。RequestLogFilter增加一个请求入参过滤器,用来打印入参信息。@Slf4j@Configuration@ConditionalOnProperty(value="log.request.

Springcloud Gateway网关日志这样打才完美

日志打印收集是开发中调试和定位线上问题的关键手段也是重中之重,gateway作为请求入口转发的核心模块,合理、规范的日志打印很重要。这里只进行日志的打印输出,不做收集,收集汇总工作可以结合ELK,监控日志文件进行同步。实现方式使用gateway的GlobalFilter过滤器。请求日志打印的过滤器排序尽量低一些。打印日志时,注意避免多次打印造成并发请求日志错乱,可以拼接一个大的日志串,一次打印输出。RequestLogFilter增加一个请求入参过滤器,用来打印入参信息。@Slf4j@Configuration@ConditionalOnProperty(value="log.request.

SpringCloud 优雅下线+灰度发布

在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如killPID和kill-9PID都是暴力杀死服务,相对于kill-9PID来说,killPID就是优雅的。但如果单独拿killPID出来说,我们能说它是优雅的下线策略吗?肯定不是啊,就是这个道理。因此,本文讲述的优雅下线仅能称之为“相对的优雅下线”,但相对于暴力的杀

SpringCloud 优雅下线+灰度发布

在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如killPID和kill-9PID都是暴力杀死服务,相对于kill-9PID来说,killPID就是优雅的。但如果单独拿killPID出来说,我们能说它是优雅的下线策略吗?肯定不是啊,就是这个道理。因此,本文讲述的优雅下线仅能称之为“相对的优雅下线”,但相对于暴力的杀

Open Feign之非SpringCloud方式使用实践

OpenFeign之非SpringCloud方式使用前言网上对于spring-cloud-starter-openfeign的使用有非常多的说明,此处不再赘述。机缘巧合之下,笔者遇到希望轻量级使用OpenFeign的场景,即项目中并未使用SpringCloud框架、注册中心等服务发现组件,而只是想简单的做远程http请求调用来解耦微-微服务。OpenFeign是什么Feign是netflix提供的开源httpclient库,目前已经停止维护。随后,SpringCloud官方提供了OpenFeign,对Feign做了如下增强:支持SpringMVC注解整合Ribbon、Nacos等它与Apach

Open Feign之非SpringCloud方式使用实践

OpenFeign之非SpringCloud方式使用前言网上对于spring-cloud-starter-openfeign的使用有非常多的说明,此处不再赘述。机缘巧合之下,笔者遇到希望轻量级使用OpenFeign的场景,即项目中并未使用SpringCloud框架、注册中心等服务发现组件,而只是想简单的做远程http请求调用来解耦微-微服务。OpenFeign是什么Feign是netflix提供的开源httpclient库,目前已经停止维护。随后,SpringCloud官方提供了OpenFeign,对Feign做了如下增强:支持SpringMVC注解整合Ribbon、Nacos等它与Apach

Spring Cloud alibaba之Feign

JAVA项目中如何实现接口调用?HttpclientHttpclient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持Http协议的客户端编程工具包,并且它支持HTTP协议最新版本和建议。HttpClient相比传统JDK自带的URLConnection,提升了易用性和灵活性,是客户端发送HTTP请求变得容易,提高了开发的效率。Okhttp一个处理网络请求的开源项目,是安卓端最火的轻量级框架,由Square公司贡献,用于代替HttpUrlConnection和ApacheHttpClient。OkHttp拥有简洁的API、高校的性能,并支持多种协议(

Spring Cloud alibaba之Feign

JAVA项目中如何实现接口调用?HttpclientHttpclient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持Http协议的客户端编程工具包,并且它支持HTTP协议最新版本和建议。HttpClient相比传统JDK自带的URLConnection,提升了易用性和灵活性,是客户端发送HTTP请求变得容易,提高了开发的效率。Okhttp一个处理网络请求的开源项目,是安卓端最火的轻量级框架,由Square公司贡献,用于代替HttpUrlConnection和ApacheHttpClient。OkHttp拥有简洁的API、高校的性能,并支持多种协议(