温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springcloud-feign中怎么实现一个服务发现功能

发布时间:2021-07-30 14:36:05 来源:亿速云 阅读:293 作者:Leah 栏目:大数据

今天就跟大家聊聊有关springcloud-feign中怎么实现一个服务发现功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

springcloud使用服务发现进行服务间调用。对外使用网关gateway屏蔽分流转发接口。服务发现客户端到注册中心拉取服务列表实现客户端负载均衡。客户端实现负载均衡主要有两种方式。一种是ribbon另一种是基于ribbon封装的feign。这是feign官方的解释 springcloud-feign中怎么实现一个服务发现功能 我总结了一下主要有一下几个优点:
(1)可插拔的注解支持,包括Feign注解和JAX-RS注解;
(2)支持可插拔的HTTP编码器和解码器;
(3)支持Hystrix和它的Fallback;
(4)支持Ribbon的负载均衡;
(5)支持HTTP请求和相应的压缩。

微服务调用常用概念
(1)服务降级:
    当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略测不处理或换种简单的方式处理,从而释放资源以保证核心交易正常运作成高效运作。
(2)断路:
    熔断这一概念来自于电子工程中的断路器(circuit Breaker)。在互联网系统中,当下游服务因访问压力过大而相应变慢或者失败,上游为了保护系统整体的可用性,可以暂时切断对下游服务的调用。 简单理解就是降级是针对业务,断路是上下游故障。
(3)幂等性:
    就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。

使用方式
下面我们开始feign的使用:
(1)添加springcloudalibaba和openfeign的依赖
     <dependency>
        <groupid>org.springframework.cloud</groupid>
        <artifactid>spring-cloud-starter-openfeign</artifactid>      </dependency>
     <dependency>
        <groupid>org.springframework.cloud</groupid>
        <artifactid>spring-cloud-starter-alibaba-nacos-discovery</artifactid>
     </dependency>

(2)添加注解 @EnableDiscoveryClient开启服务发现,注解 @EnableFeignClients支持feign客户端。

springcloud-feign中怎么实现一个服务发现功能 用@FeignClient("serviceName")注解在对外的接口上,这样接口就支持调用服务,因此支持热插拔。serviceName使用注册中心被调用的服务名字。@RequestMapping注解的方法是服务提供方的接口方法,看起来是不是和springmvc使用方法很像,没错因为这是feign对mvc支持的一种契约。feign默认是@RequestLine。它可以支持各种契约。同样子,他可以使用默认的HttpUrlConnection也可以使用httpclient或者okhttp3.

(3)修改application.peoperties配置文件     #服务名字
    ----- spring.application.name=feign-service
    #服务无端口0会随机选择一个
    ----- server.port=0
    #服务集群名字
    ---- spring.cloud.nacos.discovery.cluster-name=consumer-service     #nacos注册中心地址
    ----- spring.cloud.nacos.discovery.server-addr=nacos.blog.ailijie.top
      ok,完成。下面是feign的高级使用

feign高级使用

(1)feign日志配置
springcloud-feign中怎么实现一个服务发现功能 创建feign日志级别,还有feign的重试机制,这样feign可以使用重试机制同时把每一次的请求用日志记录下来。
(2)feign的断路
springcloud-feign中怎么实现一个服务发现功能 在feignclient注解中配置fallbackFactory工厂,进行断路解决。使用factory的好处是可以处理异常信息。还可以使用fallback处理。如果使用fallback,fallbackFactory将不会生效。看一下,Factory springcloud-feign中怎么实现一个服务发现功能 需要返回一个IProviderService的实现类,在create方法里可以处理异常。这样在服务端发生异常或者下线后,将会走断路方法。
(2)feign的高级配置
    #开启okhttp
    ----- feign.okhttp.enabled=true
    #开启hystrix断路,不开启feign的降级不生效
    ----- feign.hystrix.enabled=true

    #hystrix断路超时时间
    ----- hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 2000

    ----- provider-service.ribbon.ConnectTimeout = 1000
    ----- provider-service.ribbon.ReadTimeout = 1000
    #对所有操作请求都进行重试
    ----- provider-servicee.ribbon.OkToRetryOnAllOperations = true
    #切换实例的重试次数
    ----- provider-service.ribbon.MaxAutoRetriesNextServer = 2

    #对当前实例的重试次数
    ----- provider-service.ribbon.MaxAutoRetries = 1
    #设置日志级别
    ----- logging.level.com.wotrd.feignservice.service.IProviderService=DEBUG
    断路的超时时间需要大于读超时时间,不然重试不生效。

看完上述内容,你们对springcloud-feign中怎么实现一个服务发现功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI