openfeign使用_Feign使用基于配置服务发现
![](/assets/blank.gif)
之前写了篇《Feign在实际项目中的应用实践总结》
Feign在实际项目中的应用实践总结 - 沐风之境 - 博客园www.cnblogs.com
总结了在一般项目中如何使用Feign这个提升开发效率的利器。最近在看Feign的文档的时候发现了之前遗漏的一些点,所以写了这篇文章进行补充。
pom.xml
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
JavaConfig
@Slf4j
@Configuration
@EnableFeignClients
public class FeignConfig {@Resourceprivate SimpleDiscoveryProperties simpleDiscoveryProperties;// 在K8s环境中不需要服务注册中心可以自定义一个DiscoveClient的Bean,作为简单的一个服务列表@Beanpublic DiscoveryClient discoveryClient() {log.info(JSON.toJSONString(simpleDiscoveryProperties)); // 这里打印了加载的配置参数return new SimpleDiscoveryClient(simpleDiscoveryProperties);}
}
配置(在里面写服务的路由配置):
spring:cloud:loadbalancer:ribbon:enabled: falsediscovery:client:simple:instances:feign-attempt-client:- uri: http://localhost:8080
为什么要使用本地的服务列表?
服务部署在K8s环境中,可以使用k8s提供的DNS解析和负载均衡功能。所以不需要再引入一个服务注册中心组建导致复杂性的增加。
使用
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;@FeignClient(name = "feign-attempt-client")
public interface FeignServerClient {@GetMapping("/feign/server/hello-world/hello")String hello();
}
运行单元测试
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import static org.junit.jupiter.api.Assertions.*;@SpringBootTest
class FeignServiceClientTest {@Resourceprivate FeignServiceClient feignServiceClient;@Testvoid hello() {final String res = feignServiceClient.hello(); // HTTP请求返回字符串“Hi!”assertEquals(res, "Hi!");}
}
运行细节
加载的服务路由配置,可以看到instances的对象加载了我们定义的feign-attempt-client服务,它包含了一个服务实例。为什么只要定义个服务实例呢?因为我们服务是部署在K8s上的。k8s会帮我们做多实例的负载均衡的工作
{"instances": {"feign-attempt-client": [{"host": "localhost","metadata": {},"port": 8080,"secure": false,"serviceId": "feign-attempt-client","uri": "http://localhost:8080"}]},"local": {"host": "172.16.8.55","metadata": {},"port": 8080,"secure": false,"serviceId": "application","uri": "http://172.16.8.55:8080"},"order": 0
}
openfeign使用_Feign使用基于配置服务发现相关推荐
- Prometheus 基于k8s服务发现通过Cadvisor监控Kubernetes
Prometheus服务发现 Prometheus添加被监控端支持两种方式: • 静态配置:手动配置 • 服务发现:动态发现需要监控的Target实例 支持服务发现的来源 • azure_sd_con ...
- 基于gRPC服务发现与服务治理的方案
重温最少化集群搭建,我相信很多朋友都已经搭建出来,基于Watch机制也实现了出来,相信也有很多朋友有了自己的实现思路,但是,很多朋友有个疑问,我API和服务分离好了,怎么通过服务中心进行发现呢,这个过 ...
- .net core consul 服务配置 服务发现 服务健康检测 服务变更加载
准备环境 安装consul之后 1. 创建一个.net core webapi 举例为UsercenterService 2. nuget引用Consul组件 https://github.com/ ...
- Dubbo-kubernetes 基于 Informer 服务发现优化之路
在 Kubernetes(简称 K8s,一个可移植容器的编排管理工具)体系中,etcd 存储集群的数据信息,kube-apiserver 作为统一入口,任何对数据的操作都必须经过 kube-apise ...
- Bumblebee微服务网关之consul服务发现
网关需要维护相关负载的服务器,手动添加相对来说是一件比较麻烦的工作:为了解决这一问题组件扩展了一个基于consul服务发现插件,通过配置这个插件和启用后网关会自动从consul服务中获取服务并添加到网 ...
- 找不到服务器micro,Go Micro服务发现
服务发现,就是通过什么办法可以找到需要调用的服务的地址(ip和端口),因为只有拿到服务的地址,我们才可以连接服务,发送接口调用请求. 上一个章节,我们没说明两个服务直接是如何找到对方的,只是使用服务名 ...
- Prometheus服务发现+Grafana炫酷的界面展示
目录 部署service discovery 相关概念 prometheus 服务发现机制 基于文件服务发现 文件发现的作用 基于DNS自动发现 基于consul发现 相关概念 安装consul_1. ...
- docker (九)promethues的服务发现和grafana
promethues服务发现和grafana布置 一.部署service discovery服务发现 (一)相关概念 1.Prometheus指标抓取的生命周期 2.prometheus 服务发现机制 ...
- 9-1 Kubernetes二进制部署的Prometheus实现服务发现
文章目录 前言 创建用户 复制Token 配置文件 全局配置 Master节点发现 Node节点发现 Namespace Pod发现 自定义Pod发现 前言 在上一章节介绍了 8-5 在Prometh ...
最新文章
- 哥德尔90年前的「不完备性定理」,奠定了计算机与AI的理论基础
- PHP运行神器--用HHVM减少你一半的服务器
- 数据库学习(MySQL):JDBC的简单增删改查实现
- python临床数据_从临床试验中获取数据
- java程序员编程过程中的基本问题
- 高斯滤波器是低通还是高通_经典模拟滤波器仍值得研究吗?
- 51Nod:1268 和为K的组合
- editor does not contain a main type的解决方案
- jquery程序 windows移植到linux显示不了,Windows10 + WSL 使用Linux图形界面程序
- Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch
- 【四二学堂】代码写诗之--《二十一杯酒》
- 域名解析邮箱服务器地址,邮件域名设置解析
- 送学妹的生日礼物~ 制作一个超浪漫的告白3D相册(HTML+CSS+JavaScript)
- linux 系统qcow2镜像制作
- TortoiseSVN文件及文件夹图标不显示解决方法
- CCF C³-20@滴滴:智能技术与交通治理 | 报名
- 2.3.1操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则
- Linux 磁盘分区挂载
- 滴滴开源 LogicFlow:专注流程可视化的前端框架
- 转载]ASD光谱仪测量地物光谱的数据处理方法及遇到的问题【转】