分类 Spring Cloud 下的文章

Spring Cloud在使用Feign的情况下,shutdown时会提示如下错误:
org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)

- 阅读剩余部分 -

eureka.client.registryFetchIntervalSeconds(默认值:30),eureka client每隔多少秒从eureka server获取最新的已注册的实例信息,实例信息会缓存在eureka client
eureka.client.eurekaServiceUrlPollIntervalSeconds(默认值:5*60),eureka client每隔多少秒动态更新eureka server的信息,比如动态删除或新增eureka server的url,执行此任务的时候日志中会打印:Resolving eureka endpoints via configuration
ribbon.serverListRefreshInterval(默认值:30000,单位:毫秒),ribbon缓存服务器实例的时间,ribbon缓存数据来源于eureka client缓存,如果用了ribbon,想缩短客户端的缓存时间,除了修改eureka.client.registryFetchIntervalSeconds参数,还要修改ribbon.serverListRefreshInterval参数

- 阅读剩余部分 -

RestTemplate通过ClientHttpRequestFactory来创建ClientHttpRequest,常用的ClientHttpRequestFactory为SimpleClientHttpRequestFactory(底层使用jdk的HttpURLConnection,HttpURLConnection底层会使用长连接,详情参见:HttpURLConnection长连接详解)和HttpComponentsClientHttpRequestFactory(底层使用Apache的HttpClient),默认使用SimpleClientHttpRequestFactory。

- 阅读剩余部分 -

简介

Zuul是Spring Cloud中的网关,整个系统对外提供服务的统一入口。由于Spring Cloud中,一个服务有多个实例,并且实例还可以动态增加和减少,外部服务如果想要调用Spring Cloud中的内部服务,根本不知道内部服务具体的IP和端口是多少,所以没办法直接调用内部服务。使用Zuul就可以解决这个问题,外部服务只需要调用Zuul,告诉Zuul他想要调用哪个服务的哪个接口,根本不关心这个服务的IP和端口是多少,由Zuul作为代理向内部服务发请求,并将内部服务的响应内容返回给外部服务,由于Zuul也是一个Eureka Client,所以他会向Eureka Server获取所有服务的注册表,Zuul知道每个服务的每个实例的具体的IP和端口。使用Zuul还可以做统一鉴权、安全认证,将非法的请求直接拒之门外,不需要经过内部服务。

- 阅读剩余部分 -

简介

Hystrix是Spring Cloud中的熔断器,一个容错工具,相当于电路中的断路器,当电路中的负载过高,为了防止出现火灾事故,断路器会自动打开。在Spring Cound中,B服务调用C服务,当C服务出现故障,长时间不能响应,导致B服务也会变慢,而A服务调用B服务时,B服务也不能正常响应,导致整个系统出现雪崩。使用Hystrix后,B服务调用C服务,当请求失败率达到一定的阈值,B服务就会打开C服务的断路器,将C服务降级,同时启用备用机制,从而防止整个系统出现雪崩。

- 阅读剩余部分 -

简介

Ribbon是Spring Cloud中的负载均衡器,类似于我们常用的Nginx和F5。在分布式系统中,一个服务通常都会有多个实例,Ribbon的作用就是将请求分发到这些实例上。Ribbon默认的分发策略是轮询,每个实例轮着发请求,防止某个实例负载过重。同时Ribbon也可以按照响应时间加权,响应时间快的实例多分发一些请求,响应时间慢的实例,少分发一些请求,从而合理的运用各个实例的资源。Ribbon也可以随机分发请求到实例上,有多种分发策略,可根据项目中的实际情况来选择。

- 阅读剩余部分 -

简介

Feign是Spring Cloud中的一个声明式的Web服务客户端,其目的就是让Spring Cloud中多个服务之间相互调用更简单。我们平常调用别的服务,需要写一大堆代码,而使用Feign,只需要声明一个接口即可,不需要关心传参、发送请求、获取响应内容、关闭连接等细节,Feign全部帮我们做好了。

- 阅读剩余部分 -