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
SpringCloud的EurekaClient : 客户端应用访问注册的微服务(有断路器场景)的更多相关文章
- SpringCloud的EurekaClient : 客户端应用访问注册的微服务(无断路器场景)
演示客户端应用如何访问注册在EurekaServer里的微服务 一.概念和定义 采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,2. ...
- SpringCloud的服务消费者 (一):(rest+ribbon)访问注册的微服务
采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,Feign底层调用Ribbon2.注册在EurekaServer中的微服务api,不 ...
- SpringCloud的服务消费者 (二):(rest+feign/ribbon)声明式访问注册的微服务
采用Ribbon或Feign方式访问注册到EurekaServer中的微服务.1.Ribbon实现了客户端负载均衡,Feign底层调用Ribbon2.注册在EurekaServer中的微服务api,不 ...
- SpringCloud与微服务Ⅷ --- Hystrix断路器
复杂的分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败. 服务雪崩 多个微服务之间调用的时候,假设微服务调用服务B和微服务C,微服务B和微服务C又调用其他服务,这就是 ...
- SpringCloud学习笔记(三):Rest微服务构建案例工程模块
需要具备的知识 1 springmvc+mybatis+mysql 2 Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务 3 Maven的分包分模 ...
- 学习一下 SpringCloud (一)-- 从单体架构到微服务架构、代码拆分(maven 聚合)
一.架构演变 1.系统架构.集群.分布式系统 简单理解 (1)什么是系统架构? [什么是系统架构?] 系统架构 描述了 在应用程序内部,如何根据 业务.技术.灵活性.可扩展性.可维护性 等因素,将系统 ...
- 怎样从外网访问内网微服务Microservices?
本地部署了一个微服务,只能在局域网内访问,怎样从外网也能访问到本地的微服务呢?本文将介绍具体的实现步骤. 准备工作 部署并启动微服务程序 默认部署的微服务端口是8088. 实现步骤 下载并解压hole ...
- Spring-cloud微服务实战【一】:微服务的概念与演进过程
本文是一个系列文章,主要讲述使用spring-cloud进行微服务开发的实战.在开始之前,我们先说一下从传统的单一部署架构到微服务的发展过程,以便让童鞋们更好的理解微服务的概念与演进过程. 1.单体架 ...
- 【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
问题描述 1) 当成功的在Service Fabric集群中部署了应用后,如何来访问呢?如果是一个Web服务,它的URL又是什么呢? 2) 当Service Fabric集群中,服务之间如需要相互访问 ...
随机推荐
- lvm创建卷组和格式化
* 前提条件:/dev/sdb为一块空的硬盘 * 创建物理卷:pvcreate /dev/sdb * 创建卷组:vgcreate vol_name /dev/sdb (vol_name 为卷组名字) ...
- 解决新电脑的系统安装问题:针对BIOS的UEFI模式
安装win7或win8系统时UEFI和Legacy模式的设置 新的的笔记本或台式机主板都开始支持UEFI模式,不过这种模式让很多打算给电脑换win7或win8的用户头疼不已,尤其是笔记本用户. ...
- JAVA:一篇文章理清多态
很多人总是喜欢,或者说错误地将JAVA中的多态理解得很复杂,最常见的错误说法就是所谓"方法的多态",他们会给出类似下面的例子来佐证"多态是指方法的多态": // ...
- cesium 热力图
- JS中原始值和引用值的储存方式
在ECMAscript中,变量可以存放两种类型的值,即原始值和引用值 原始值指的是代表原始数据类型的值,也叫基本数据类型,包括:Number.Stirng.Boolean.Null.Underfine ...
- java 连接 elasticsearch 报错java.lang.NoClassDefFoundError: org/apache/http/auth/Credentials 解决
您的问题是您在应用程序类路径中缺少必需的JAR(这导致ClassNotFound异常).如果您下载了包含IP Camera驱动程序(webcam-capture-driver-ipcam-0.3.10 ...
- Linux(CentOS 7)环境下安装MySQL
在CentOS中默认安装有MariaDB,但是我们需要的是MySQL,安装MySQL可以覆盖MariaDB MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 ...
- [模拟赛] T2 混合图
Description Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家.他一般 会从任意一个点出发,随便找边 ...
- VMware 下快速克隆出多个 Linux 环境
念念不忘,必有回响 好好工作,好好吃饭,困了倒头就睡:吃你认为好吃的,吃到饱:买贵的,你想买的:去玩去野: 就这样. 为什么要克隆多个 Linux 系统? 因为要玩阿. 其实也不是了,就是为了折腾嘛, ...
- Ajax与服务器(JSON)通信介绍
本文主要介绍使用Ajax与服务器(JSON)通信方法,谈谈Ajax提供的两类服务器通信手段:同步通信和异步通信.有需要的可以了解一下.毕竟这个时代出了很多东西,自动化构建工具,mvvm框架等等.Jav ...