spring cloud eureka 消费者使用服务名访问,不能访问的问题

2023-11-11

     这里说一下我自己犯的一个错误。我有三个项目eureka-server,provide-service,consumer-service,以下我统称为ABC三个项目。现在的步骤是这样的,先访问C项目的一个接口,接口里面用restTemplate发送的一个请求,具体看下面

@RestController
public class TestController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value = "/test")
    public void test() {
        //template.getForEntity("http://localhost:8000/test",String.class);
        restTemplate.getForEntity("http://provide-serivce/test",String.class);
    }
}

然后B的test这个接口代码如下

 @RequestMapping(value = "/test")
    public String test(HttpServletResponse resp) {
        System.out.println("provide-service is provides services");
        return "redirect:/page";
    }

这里ABC的配置是正常的,并且BC项目都注册到A上了,当我们访问C的test接口时显示如下错误

java.net.UnknownHostException: provide-serivce
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_144]
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_144]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_144]
	at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_144]
	at java.net.Socket.connect(Socket.java:538) ~[na:1.8.0_144]

这里显示的错误很明显,就是不知道的域名。然后我就一直纳闷了,按我自己的逻辑,我的消费者已经拥有的从注册中心拉取服务名实例的权限,已经拥有服务名列表(服务名就是包含元元素,其中包含ip,port),为什么显示不知道的域名呢?当然了这就是我想当然的问题了。是的C项目确实有从注册中心拿的服务实例列表,但是我错的点resttemplate只是类似于httpclient的一个发送rest风格的请求,它这里是没有办法去识别所谓的服务名的,不识别服务名当然就会报那个错误咯。在《spring Cloud 微服务实战》这本书上写的,一定要@loadBalance注解修饰的restTemplate才能实现服务名的调用,没有修饰的restTemplate是没有该功能的。@loadBalance是Netflix的ribbon中的一个负载均衡的注解,当我项目加了loadbalacnce的时候,就可以了。


至于为什么一定要该注解修饰,这里我大概讲一下。loadBalance这个注解加上之后,这个注解有3件事情要处理。

    第一件就是从负载均衡器中选一个对应的服务实例,那有的人就会问为什么从负载均衡器中挑选,原因很明显就是,所有的服务名实例都放在负载均衡器中的serverlist。

    第二件事情就是从第一件事情挑选的实例中去请求内容。

    第三件事情就是由服务名转为真正使用的ip地址


讲到这里大概应该清楚了吧。哎,之前也是百思不得其解,现在终于明白了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring cloud eureka 消费者使用服务名访问,不能访问的问题 的相关文章

随机推荐

  • cppkafka是什么 和librdkafka关系

    最近日志审计对接日志中心的开发 需要设计kafka相关的一些东西 因此了解了一些 在github 的 kafka官网上看到有 Language bindings 不太清楚其中的 cppkafka 是什么东西 能用来做什么 多方了解后才明白
  • C语言树莓派PICO,RP2040(树莓派Pico) PIO – 实例分析&编程

    这次拿来开刀的是WS2812 具体代码可见 gt https github com raspberrypi pico examples blob master pio ws2812 ws2812 pio program ws2812 sid
  • 什么是边缘计算网关?

    边缘计算网关 简称 边缘网关 将云端功能扩展到本地的边缘设备 使边缘设备能够快速自主地响应本地事件 提供低延时 低成本 隐私安全 本地自治的本地计算服务 同时所有服务都以 Docker 镜像方式安装 真正做到了跨平台 部署快捷 易管理 在链
  • MYSQL----union与limit

    union 1 union操作符用于合并两个或多个 SELECT 语句的结果集 2 union内部的 SELECT 语句必须拥有相同数量的列 列也必须拥有相似的数据类型 同时 每条 SELECT 语句中的列的顺序必须相同 limit 1 l
  • Jmeter使用篇(六) : Jmeter集合点

    配置Jmeter集合点的方法 1 需要设置集合点 进行并发同步 则需要在请求之前进行集合点的设置 具体位置在 添加 定时器 Synchronizing Timer 同步定时器
  • 01-LED-Blink-Demo(开发环境esp-idf)

    Blink Example This example code is in the Public Domain or CC0 licensed at your option Unless required by applicable law
  • 使用 STM32 的 SPI 来读取外部 SPI FLASH 芯片(W25Qxx)

    SPI简介 SPI 是英语 Serial Peripheral interface 的缩写 顾名思义就是串行外围设备接口 是 Motorola 首先在其 MC68HCXX 系列处理器上定义的 SPI 接口主要应用在 EEPROM FLASH
  • LeetCode刷题笔记:1619.删除某些元素后的数组均值

    1 问题描述 给你一个整数数组 arr 请你删除最小 5 的数字和最大 5 的数字后 剩余数字的平均值 与 标准答案 误差在 10 5 的结果都被视为正确结果 2 解题思路 先排序 再从数组下标5 处开始遍历 到数组下标95 截止 3 代码
  • 设计模式1:单例模式、工厂、创建者、原型

    设计模式 一种抽象 总结 Gang of Four GOF 分类 3大类23种 创建型模式 结构型模式和行为型模式 几个设计原则 接口分离 依赖倒置 原则 编程面向接口而不是实现 单一原则 单一部分完成特定的分类功能 封装 开闭原则 对修改
  • Ubuntu14/16 PCL1.7/1.8 opencv2/3/4 编译安装共存

    为了使用cuda和pcl共同编程 而系统带的pcl1 7不带gpu模块 故编译安装pcl完全版 与系统pcl1 7共存 不同分发版本Ubuntu应该没有什么区别 不同版本pcl编译和使用道理也都基本相同 opencv也是一样的道理 PCL
  • 嵌入式系统原理及应用(基于STM32)救急专用

    目录 第一章 嵌入式系统概述 第二章 嵌入式系统基础知识 第三章 STM32系列微控制器 第四章 通用输入输出端口 第五章 异常与中断处理 第六章 定时器 第七章 串行通信接口 第八章 模数转换器 数模转换器 第一章 嵌入式系统概述 嵌入式
  • 剑指offer.13.机器人的运动范围之DFS、BFS搜索

    机器人的运动范围 前言 一 DFS 1 思想 2 源码 二 BFS 1 源码 2 改进源码BFS 总结 前言 对于矩阵搜索问题 就像图的搜索一样 熟练掌握DFS BFS是关键 一 DFS 1 思想 通过DFS去寻找满足条件的格子 而已经访问
  • 用了SSD开机还是很慢?这些拖慢开机的原因你知道吗

    一 4K未对齐 如今新装机多半会选择安装SSD 固态硬盘 而要想让固态硬盘发挥应有的实力 4K对齐是一项必做的操作 4K对齐需要在分区环节完成 可以借助Win10安装程序 使用Win10安装程序分区后自动为4K对齐状态 或者专用的分区软件
  • 存储系统概述——SRAM静态随机存储器

    一 存储系统的概述 目前存储器的特点是 速度快的存储器价格贵 容量小 价格低的存储器速度慢 容量大 在计算机存储器体系结构设计时 我们希望存储器系统的性能高 价格低 那么在存储器系统设计时 应当在存储器容量 速度和价格方面的因素作折中考虑
  • c语言顺序表

    1 创建顺序表 产生随机数 2 查找元素的位置 3 插入元素 4 删除元素 5 输出元素 6 1 颜色和坐标函数 6 2 菜单 6 3蛇 7 完整代码 8 效果图片 开始 库函数 创建结构体 include
  • echarts线性渐变

    1 0 0 1分别代表了右 下 左 上四个位置的颜色坐标 然后再在下方编写 offset 0 color 00FF00 代表颜色坐标为0的颜色 offset 0 5 color 3A8EE6 代表颜色坐标为0 5的颜色 offset 0 8
  • Helm学习笔记

    文章目录 概念 定义 helm组件 helm的工作流程 helm安装 helm仓库 helm部署应用 helm应用的更新或回退或卸载 概念 定义 学习helm首先得了解helm是什么 我们先来看一下helm的定义 helm是将kuberne
  • 用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。

    1 把两个函数放在同一个程序文件中 作为一个文件进行编译和运行 include
  • 【C++】类和对象&封装

    C 面向对象三大特征 多态 继承 封装 对象与类 对象 C 中认为万事万物都可以看作一个对象 而对象具有两个特征 属性和行为 属性 属性指的是对象具有的性质 例如将书看为一个对象 那么书具有的属性就是内容 目录 出版社 书名 行为 行为就是
  • spring cloud eureka 消费者使用服务名访问,不能访问的问题

    这里说一下我自己犯的一个错误 我有三个项目eureka server provide service consumer service 以下我统称为ABC三个项目 现在的步骤是这样的 先访问C项目的一个接口 接口里面用restTemplat