• SpringCloud的EurekaClient : 客户端应用访问注册的微服务(有断路器场景)


    演示客户端应用如何访问注册在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

    四、代码下载

    https://github.com/lexiaofei/workspace_SpringHystrix.git

  • 相关阅读:
    @Autowired mapper 层次 bean 带红线
    java 类加载机制 阿里面试题
    liunx 修改ssh 端口22
    通过mysqlbinlog 恢复数据
    网页命名规则
    子选择符 、相邻选择符 、 兄弟选择符 、 伪类选择符
    css的一些基础知识
    HTML5的表单所有type类型
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10(复制)
    网站开发最常用的代码(复制)
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/6806924.html
Copyright © 2020-2023  润新知