在注册中心注册一个服务后 通过IP+端口能够访问, 通过服务名无法访问

客户端代码
@EnableEurekaClient
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}

@Value("${server.port}")
private String port;

@RequestMapping( value="/hi" ,method= RequestMethod.GET)
public String home (@RequestParam String name){
return "hi" + name + " i am from port "+ port;
}
}
客户端配置
server:
port: 8762
spring:
application:
name: servicehi
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/

在注册中心能够看到客户端服务,通过 http://localhost:8762/hi?name=bobo 可以正常访问, 通过http://servicehi/hi?name=bobo 无法访问

已邀请:

gongkang - 90后IT boy

赞同来自: sxuboss dbl

你是直接在浏览器端访问的,浏览器首先会在本地的hosts文件中去解析你的域名servicehi,本地没有配置的话就解析不到对应的ip。通过服务名访问服务,是在spring cloud中服务间调用的时候;在服务消费方也就是客户端,负载均衡组件Ribbon会根据服务名获取服务列表,再根据负载均衡策略获取到某个服务实例,然后将获取到的服务实例的ip和端口替换请求路径中的服务名,重新构造具体的请求路径,实现具体服务的调用。

要回复问题请先登录注册