本文简要介绍了微服务架构中的关键组件。Nacos是服务发现与配置管理平台,支持服务注册、发现和集中式配置管理。结合Ribbon,实现客户端负载均衡,并可通过自定义策略调整负载均衡行为。Feign简化了HTTP客户端开发,并支持日志、超时配置和认证逻辑的定制。Nacos配置中心允许动态更新配置信息。Sentinel提供流量控制和熔断降级功能,确保系统稳定。Seata解决了微服务场景下的分布式事务一致性问题。这些组件共同构建了一个强大、灵活的微服务生态系统。
在使用Spring Cloud 的时候,都会用到Ribbon做负载均衡,使用Feign 简化web 服务调用,在使用的过程中,网络服务是不稳定,所有要设置超时时间,避免服务端响应慢影响调用的服务,网络可能偶尔不稳定,重试机制能增加成功的几率。feign.client.config.user-service.connect-timeout=1000 #tcp连接超时时间1s以内。feign.client.config.user-service.read-timeout=2000 # 设置读取时间为2s。
在中很多功能都需要调用多个服务才能完成某一项功能,一个成熟的微服务集群,内部调用必然依赖一个好的 RPC 框架,比如:基于 Http 协议的Feign,基于私有 tcp 协议的Dubbo1. Feign 是什么Feign 是Spring Cloud Netflix组件中的轻量级Restful的 HTTP 服务客户端,实现了负载均衡和 Rest 调用的开源框架,封装了Ribbon和RestTemplate, 实现了WebService的面向接口编程,进一步降低了项目的耦合度。
经过修改 ribbon.ReadTimeout 的值,可以发现确实是该配置影响的,将其变大确实可以满足需求,但由于该配置文件是全局配置,影响较大,想请问大家有没有其他解决方案,如将某一接口排除在外,或者通过其他配置?
问题背景
最近公司项目有个功能需进行三层Feign调用,且还要调外部接口,延迟挺大,造成Feign一直提示Readtimed out executing POST。
feign.RetryableException: Readtimed out executing POST http://******
at feign.FeignException.errorExecuting...
最近在学习springcloud微服务,在使用openfeign时,需要使用ribbon组件的ConnectTimeOut和ReadTimeOut功能,代码示下:
@GetMapping(value = "/payment/feign/timeOut")
public String paymentTimeOut(){
//设定暂停3秒,openFeign默认等待时间一秒
TimeUnit.SECONDS.sleep(3
这是由于OpenFeign集成的Ribbon默认设置的超时时间为1秒。我们可以通过修改超时时间来避免出现这个异常。项目使用了openFeign作为微服务调用方式,使用过程中由于一个接口响应较慢,出现了。
his application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Apr 14 23:42:54 CST 2021
There was an unexpected error (type=Internal Server Error, status=500).
Readtimed ou.