当前位置:首页 > 技术分析 > 正文内容

FeignClient注解配置url属性实现指定服务方

ruisui883个月前 (02-03)技术分析22
原文地址:https://blog.csdn.net/miranaibuai/article/details/106650367

某天,跟同学聊天,同学说起之前面试的时候面试官提的一个问题:使用spring cloud,现在某个服务有一个新的接口需要验证。该接口目前只上线了一台机器,如何指定调用方只调用这台机器。问题大致如此,可能有些出入。总结起来,就是希望能够指定访问某台机器。这样的情况,在我们平时也可能经常遇到。比如甲乙两人需要调试新接口,但注册中心只有一个。可能上面有丙丁戊己庚辛注册的服务。如果我们按照默认的轮询的负载均衡规则去调用,七次调用才能轮到乙的服务,根本没有办法调试。所以这时候就需要我们能够指定调用的服务方。

FeignClient注解通过配置url属性可以指定调用的服务方。我们按照上面的例子,假设乙的IP为192.168.1.2,在端口8080上启动的服务,那我们就可以把我们的url配置成http://192.168.1.2:8080。这样调用的就一直是乙的服务了。

那我们配置了url和不配置url到底产生了哪些不同呢?

feign,或者说open-feign底层是使用,我以为默认是httpclient,但是我debug的结果是HttpURLConnection。知道为什么的可以留言告诉我。feign会基于配置,生成URI。当我们不配置url的时候,URI是这样的http://service-name/path。使用FeignClien是LoadBalancerFeignClient,该类在处理该URI的时候会对服务名进行解析,也就是从注册中心查询该服务名下已经注册的服务器信息,包括IP和端口。然后将服务名替换成真实的链接。而当我们不配置url的时候,使用的FeignClient是Client的默认实现Default,该类就没有解析的这一步而是直接通过HttpURLConnection进行请求。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1200.html

标签: feign 使用
分享给朋友:

“FeignClient注解配置url属性实现指定服务方” 的相关文章

掌握版本控制:Git的那些常见用法与技巧

Git作为现代开发中最常用的版本控制系统,它的普及和高效性使得程序员几乎每天都在与它打交道。无论是个人项目,还是团队协作,Git都能帮助我们追踪代码的修改历史,保证代码版本的管理井井有条,并在多人协作时有效地避免冲突。本文将分享一些常见的Git用法与技巧,帮助你更好地掌握Git的强大功能,并提升你在...

前后端分离自动化运维平台开发

运维平台采用前后端分离:前端vue,框架vue-element-admin;后端python,框架django-rest-framework.目前运维平台模块如下:1、 CMDB管理应用管理、环境管理、开发语言管理、产品项目管理、资产管理2、 构建发布持续构建、持续部署、Jar工程依赖构建3、 容器...

使用cgroup限制进程资源

这里使用containerd项目中的cgroup包来实现进程资源限制。先写一个耗费一个CPU并且一秒增加10m内存的测试进程package mainimport ( "fmt" "math/rand" "time")func main() { go f...

K8S NFS 共享存储

NFS 共享存储前面我们学习了 hostPath 与 Local PV 两种本地存储方式,但是平时我们的应用更多的是无状态服务,可能会同时发布在不同的节点上,这个时候本地存储就不适用了,往往就需要使用到共享存储了,比如最简单常用的网络共享存储 NFS,本节课我们就来介绍下如何在 Kubernetes...

再来一波黑科技工具,低调使用

静读天下静读天下是一个特别优秀的电子书阅读器。它上面有多个在线书库,像古登堡计划,很多种优秀的书杂志,都可以下载来阅读。它还能智能识别章节功能,还支持外置的语音阅读功能。它支持多种文本格式,比如说txt,pdf,epub,mobi等等。为了便于阅读它还有10 种配色方式,还有夜间模式。不过免费版有广...

12种JavaScript中最常用的数组操作整理汇总

数组是最常见的数据结构之一,我们需要绝对自信地使用它。在这里,我将列出 JavaScript 中最重要的几个数组常用操作片段,包括数组长度、替换元素、去重以及许多其他内容。1、数组长度大多数人都知道可以像这样得到数组的长度:const arr = [1, 2, 3]; console.log(a...