之前写了篇《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使用基于配置服务发现相关推荐

  1. Prometheus 基于k8s服务发现通过Cadvisor监控Kubernetes

    Prometheus服务发现 Prometheus添加被监控端支持两种方式: • 静态配置:手动配置 • 服务发现:动态发现需要监控的Target实例 支持服务发现的来源 • azure_sd_con ...

  2. 基于gRPC服务发现与服务治理的方案

    重温最少化集群搭建,我相信很多朋友都已经搭建出来,基于Watch机制也实现了出来,相信也有很多朋友有了自己的实现思路,但是,很多朋友有个疑问,我API和服务分离好了,怎么通过服务中心进行发现呢,这个过 ...

  3. .net core consul 服务配置 服务发现 服务健康检测 服务变更加载

    准备环境 安装consul之后 1. 创建一个.net core webapi 举例为UsercenterService 2. nuget引用Consul组件  https://github.com/ ...

  4. Dubbo-kubernetes 基于 Informer 服务发现优化之路

    在 Kubernetes(简称 K8s,一个可移植容器的编排管理工具)体系中,etcd 存储集群的数据信息,kube-apiserver 作为统一入口,任何对数据的操作都必须经过 kube-apise ...

  5. Bumblebee微服务网关之consul服务发现

    网关需要维护相关负载的服务器,手动添加相对来说是一件比较麻烦的工作:为了解决这一问题组件扩展了一个基于consul服务发现插件,通过配置这个插件和启用后网关会自动从consul服务中获取服务并添加到网 ...

  6. 找不到服务器micro,Go Micro服务发现

    服务发现,就是通过什么办法可以找到需要调用的服务的地址(ip和端口),因为只有拿到服务的地址,我们才可以连接服务,发送接口调用请求. 上一个章节,我们没说明两个服务直接是如何找到对方的,只是使用服务名 ...

  7. Prometheus服务发现+Grafana炫酷的界面展示

    目录 部署service discovery 相关概念 prometheus 服务发现机制 基于文件服务发现 文件发现的作用 基于DNS自动发现 基于consul发现 相关概念 安装consul_1. ...

  8. docker (九)promethues的服务发现和grafana

    promethues服务发现和grafana布置 一.部署service discovery服务发现 (一)相关概念 1.Prometheus指标抓取的生命周期 2.prometheus 服务发现机制 ...

  9. 9-1 Kubernetes二进制部署的Prometheus实现服务发现

    文章目录 前言 创建用户 复制Token 配置文件 全局配置 Master节点发现 Node节点发现 Namespace Pod发现 自定义Pod发现 前言 在上一章节介绍了 8-5 在Prometh ...

最新文章

  1. 哥德尔90年前的「不完备性定理」,奠定了计算机与AI的理论基础
  2. PHP运行神器--用HHVM减少你一半的服务器
  3. 数据库学习(MySQL):JDBC的简单增删改查实现
  4. python临床数据_从临床试验中获取数据
  5. java程序员编程过程中的基本问题
  6. 高斯滤波器是低通还是高通_经典模拟滤波器仍值得研究吗?
  7. 51Nod:1268 和为K的组合
  8. editor does not contain a main type的解决方案
  9. jquery程序 windows移植到linux显示不了,Windows10 + WSL 使用Linux图形界面程序
  10. Pulling without specifying how to reconcile divergent branches is hint: discouraged. You can squelch
  11. 【四二学堂】代码写诗之--《二十一杯酒》
  12. 域名解析邮箱服务器地址,邮件域名设置解析
  13. 送学妹的生日礼物~ 制作一个超浪漫的告白3D相册(HTML+CSS+JavaScript)
  14. linux 系统qcow2镜像制作
  15. TortoiseSVN文件及文件夹图标不显示解决方法
  16. CCF C³-20@滴滴:智能技术与交通治理 | 报名
  17. 2.3.1操作系统-存储管理:页式存储、逻辑地址、物理地址、物理地址逻辑地址之间的地址关系、页面大小与页内地址长度的关系、缺页中断、内存淘汰规则
  18. Linux 磁盘分区挂载
  19. 滴滴开源 LogicFlow:专注流程可视化的前端框架
  20. 转载]ASD光谱仪测量地物光谱的数据处理方法及遇到的问题【转】

热门文章

  1. js(Dom+Bom)第六天(1)
  2. 实现div可以调整高度(div实现resize)
  3. 基于Flask实现后台权限管理系统 - 表设计
  4. alibaba fastjson
  5. 现货黄金入门知识普及一:图形分析之K线理论
  6. Configuration、SessionFactory、Session
  7. PP团队圣经巨著《Application Architecture Guide2.0》14章-数据访问层
  8. JavaScript 高级——详谈面向对象
  9. web 界面设计 Axure元件样式
  10. DOM-7 【兼容】事件处理函数、冒泡捕获、阻止冒泡默认事件