演示客户端应用如何访问注册在EurekaServer里的微服务
一、概念和定义
采用Ribbon或Feign方式访问注册到EurekaServer中的微服务。
1、Ribbon实现了客户端负载均衡,
2、Feign底层调用Ribbon
3、注册在EurekaServer中的微服务api,不通过ip访问,而是通过ServiceId访问
其中ServiceId即配置项spring.application.name标识的注册到EurekaServer中的名称。
使用Feign/Ribbon客户端访问微服务的api,如:
http://ServiceHelloA/HelloA?name=tom
http://ServiceHelloB/HelloB?name=Jerry
说明客户端负载均衡Ribbon解释了ServiceHelloA映射的ip+端口.
二、开发案例
1、Ribbon服务代码
1.1、之前
@Service
public class HelloARibbonService {
@Autowired
RestTemplate restTemplate;
public String visitHelloA(String name) {
return restTemplate.getForObject("http://SERVICEHELLOA/HelloA?name="+name,String.class);
}
}
1.2、现在
@Service
public class HelloARibbonService {
@Autowired
RestTemplate restTemplate;
@HystrixCommand(fallbackMethod = "visitHelloAError")
public String visitHelloA(String name) {
return restTemplate.getForObject("http://SERVICEHELLOA/HelloA?name="+name,String.class);
}
public String visitHelloAError(String name) {
return "HystrixRibbon::hi,"+name+",sorry,visitHelloAError!";
}
}
2、Feign 服务代码
2.1、之前
@FeignClient(value = "SERVICEHELLOA")
public interface HelloAFeignService {
@RequestMapping(value = "/HelloA",method = RequestMethod.GET)
String visitHelloA(@RequestParam(value = "name") String name);
}
2.2、现在
/**
* FeignClient默認引入Hystrix支持,可以關閉
* 使用非常簡單,聲明fallback,並且定時失敗響應即可
*/
@FeignClient(value = "SERVICEHELLOA",fallback = HelloAFeignErrorService.class)
public interface HelloAFeignService {
@RequestMapping(value = "/HelloA",method = RequestMethod.GET)
String visitHelloA(@RequestParam(value = "name") String name);
}
package org.wanma.example.springcloud.clientfeign.service;
import org.springframework.stereotype.Component;
@Component
public class HelloAFeignErrorService implements HelloAFeignService {
@Override
public String visitHelloA(String name) {
return "HystrixFeign::hi,"+name+",feign visitHelloA error!";
}
}
三、案例说明
1、访问注册中心,发现EurekaServer启动了,Ribbon/Feign客户端启动了,但是服务(ServiceHelloA和ServiceHelloB)一个也没有启动
http://localhost:8101/
2、通过Ribbon访问HelloA
http://localhost:8301/HelloARibbon?name=lexiaofei
3、通过Feign访问HelloA
http://localhost:8321/HelloAFeign?name=liangshengqi
四、代码下载