Ribbon

Spring Cloud 之 Eureka.

吃可爱长大的小学妹 提交于 2020-04-28 11:21:53
一、微服务概述 1. 什么是微服务  简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间基于 RPC 进行通信协作。 被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建, 并且每个服务都维护着自身的数据存储(划重点,每个微服务都有自己的数据库实例)、 业务开发、自动化测试案例以及独立部署机制。 2. 微服务的特性 <b>服务组件化</b>:一个独立的系统拆成多个小型服务。 <b>以业务划分服务</b>:微服务应该以业务来划分,而不是按能力或其他因素来划分(比如之前做的一个项目直接将缓存能力建成了一个微服务组件)。 <b>智能端点和哑管道</b>:服务之间通过 RPC 的方式调用,通常会使用以下两种服务调用方式: 第一种:使用 HTTP 的 RESTfl API 或轻量级的消息发送协议, 实现信息传递与服务调用的触发。 第二种:通过在轻量级消息总线上传递消息, 类似 RabbitMQ 等 一些提供可靠异步交换的中间件。 <b>去中心化处理</b>:不同的微服务组件可以选择不同的技术方案,甚至可以选择不同的语言。只有实现了对技术平台的透明, 才能更好地发挥不同语言对不同业务处理能力的优势, 从而打造更为强大的大型系统。 <b>去中心化管理数据</b>

【Spring Cloud】Spring Cloud使用总结

北城余情 提交于 2020-04-28 06:59:29
##项目概要 项目环境信息 IDEA ultimate 2018.3.2 springboot 2.1.7.RELEASE springCloud Greenwich.SR2 ###Eureka 介绍 基于netflix eureka做了二次封装 两个组件组成: Eureka Server 注册中心 Eureka Client 服务注册 搭建Eureka Server 1、配置Eureka 的application.yml eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ #默认为true,是否向自己注册自己 register-with-eureka: false #关闭Eureka自我保护(生产环境要设置为true,测试环境设置为false) server: enable-self-preservation: false #配置服务实例名 spring: application: name: spring-cloud-eureka #配置服务实例端口 server: port: 8761 注意:如果报错读取application.yml文件错误,检查Settings->File Encodings,全部设置为UTF-8 2、配置Eureka pom.xml <?xml version="1

3.Spring Cloud初相识--------Ribbon客户端负载均衡

落花浮王杯 提交于 2020-04-27 02:23:15
前言: 在生产环境中,未避免单点故障,每个微服务都会做高可用部署。 通白的说,就是每一个一模一样的服务会根据需求提供多分在多台机器上。 那么在大并发的情况下,如何分配服务可以快速得到响应,就成为了我们要解决的问题。 Ribbon就是一款优秀的客户端负载均衡机制。 什么是客户端负载均衡呢? 就是由服务的消费方来设定负载均衡策略,选择服务。 就像我们去超市买东西进行结账时,选择人少的柜台排队。 我们是消费方,排哪个队有我们自己决定。 配置测试环境: 1.配置三台服务提供者机器 2.修改端口号分别为:8001,8002,8003 3.修改HelloController返回字符串内容 (1)8001: package com.xm.cloud.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String sayHello() { return "Hello Spring Cloud! 001号机器"; } } (2)8002

SpringCloud系列-利用Feign实现声明式服务调用

痴心易碎 提交于 2020-04-26 19:00:37
上一篇文章 《手把手带你利用Ribbon实现客户端的负载均衡》 介绍了消费者通过Ribbon调用服务实现负载均衡的过程,里面所需要的参数需要在请求的URL中进行拼接,但是参数太多会导致拼接字符串的效率低下,本文将介绍一种更好的方案,利用Feign实现声明式服务调用。 本文目录 一、Feign简介 二、搭建注册中心 三、服务提供者 四、Feign服务消费者 五、服务调用实战 一、Feign简介 Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。 Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息,而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。 总起来说,Feign具有如下特性: 可插拔的注解支持,包括Feign注解和JAX-RS注解; 支持可插拔的HTTP编码器和解码器; 支持Hystrix和它的Fallback; 支持Ribbon的负载均衡; 支持HTTP请求和响应的压缩。 二、搭建注册中心 首先新建一个SpringBoot项目,命名spring-cloud-eureka,然后按照下面步骤编写代码即可。 pom.xml代码 添加eureka-server的依赖,代码如下: < dependencies > <

Spring Cloud-hystrix Feign(九)

依然范特西╮ 提交于 2020-04-25 16:28:36
前面使用ribbon拦截RestTemplate 实现服务的负载均衡 使用Hystrix进行熔断降级请求缓存 用原生的方式 将会有大量的模板代码,feigin就是rabbon和Histrix的整合 同 使用feign只需要通过接口对服务方的绑定 实现多处调用 使用例子 1.引入Pom依赖 < dependency > < groupId > org.springframework.cloud </ groupId > < artifactId > spring-cloud-starter-openfeign </ artifactId > </ dependency > < dependency > < groupId > org.springframework.cloud </ groupId > < artifactId > spring-cloud-starter-netflix-eureka-server </ artifactId > </ dependency > <!-- 开启端点 用于dashboard监控 --> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-actuator </ artifactId > </

Nacos(三):Nacos与OpenFeign的对接使用

无人久伴 提交于 2020-04-25 13:32:32
前言 上篇文章中,简单介绍了 如何在SpringCloud项目中接入Nacos作为注册中心 ,其中服务消费者是通过RestTemplate+Ribbon的方式来进行服务调用的。 实际上在日常项目中服务间调用大都用的是 OpenFeign , OpenFeign自身整合了Ribbon和Hystrix,为服务调用提供了更优雅的方式 那么接入了Nacos之后,服务调用还能用这一套吗? 通过我在公司项目上的试水,这个大胆的设想是完全没问题的 本文在上一篇文章中的项目工程基础上 ,进行测试和演示,文章地址: 在SpringCloud项目中接入Nacos作为注册中心 <!-- more --> 创建项目 打开之前创建的工程Nacos,目前已经有两个子工程: nacos-provide:服务提供者 nacos-consumer:服务消费者(RestTemplate+Ribbon服务调用) 同样的操作,在Nacos项目下继续创建一个Springboot项目名为nacos-feign,创建时添加OpenFeign的依赖,如图: nacos-fegin的pom.xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www

SpringCloud Fegin超时重试源码

心不动则不痛 提交于 2020-04-25 13:32:03
springCloud中最重要的就是微服务之间的调用,因为网络延迟或者调用超时会直接导致程序异常,因此超时的配置及处理就至关重要。 在开发过程中被调用的微服务打断点发现会又多次重试的情况,测试环境有的请求响应时间过长也会出现多次请求,网上查询了配置试了一下无果,决定自己看看源码。 本人使用的SpringCloud版本是Camden.SR3。 微服务间调用其实走的是http请求,debug了一下默认的ReadTimeout时间为5s,ConnectTimeout时间为2s,我使用的是Fegin进行微服务间调用,底层用的还是Ribbon,网上提到的配置如下 ribbon: ReadTimeout: 60000 ConnectTimeout: 60000 MaxAutoRetries: 0 MaxAutoRetriesNextServer: 1 超时时间是有效的但是重试的次数无效,如果直接使用ribbon应该是有效的。 下面开始测试: 在微服务B中建立测试方法,sleep 8s 确保请求超时 public Integer testee(){ try { Thread.sleep(8000L); } catch (InterruptedException e) { e.printStackTrace(); } return 9; } 在微服务A中使用fegin调用此方法时看到有异常

spring cloud 学习之服务消费者(Feign)

大城市里の小女人 提交于 2020-04-25 13:31:27
一、Feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。 简而言之: Feign 采用的是基于接口的注解 Feign 整合了ribbon,具有负载均衡的能力 整合了Hystrix,具有熔断的能力 二、准备工作 继续用上一节的工程, 启动eureka-server,端口为8761; 启动service-hi 两次,端口分别为8762 、8773. 三、创建一个feign的服务   创建feign服务后,配置文件的配置 eureka: client: serviceUrl: defaultZone: http: // localhost:8761/eureka/ server: port: 8765 spring: application: name: service -feign 在程序的启动类ServiceFeignApplication ,加上 @EnableFeignClient s注解开启Feign的功能: @SpringBootApplication @EnableEurekaClient

spring-cloud-feign负载均衡组件

只愿长相守 提交于 2020-04-25 13:30:40
Feign简介:   Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便.它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载平衡的http客户端。Fegin对Robbin进行了封装,如果需要配置自己的负载算法,可以自定义Ribbon的算法即可 1.pom文件修改 <properties> <project.build.sourceEncoding>UTF- 8 </project.build.sourceEncoding> <project.reporting.outputEncoding>UTF- 8 </project.reporting.outputEncoding> <java.version> 1.8 </java.version> <spring-cloud.version>Finchley.SR3</spring-cloud.version> </properties> <dependencyManagement> <dependencies

Spring Cloud学习笔记-007

故事扮演 提交于 2020-04-25 13:30:23
声明式服务调用:Spring Cloud Feign   Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能之外,它还提供了一种声明式的Web服务客户端定义方式。   在使用Spring Cloud Ribbon时,通常都会利用它对RestTemplate的请求拦截来实现对依赖服务的接口调用,而RestTemplate已经实现了对HTTP请求的封装处理,形成了一套模板化的调用方法。在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口被多处调用,所以通常都会针对各个微服务自行封装一些客户端类来包装这些依赖服务的调用。Spring Cloud Feign在RestTemplate的基础上做了进一步的封装,由它来帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。 1. 启动注册中心和demo-member实例,创建demo-customer-feign工程,骨架选择quickstart。 2. 加入相关依赖: 3. 编写启动类: 4. 定义MemberService接口,通过