Spring Cloud

SpringCloud之Ribbon

情到浓时终转凉″ 提交于 2020-02-28 13:31:37
【 前面的话 】书接上文,本文的某些知识依赖我的上一篇文章: SpringCloud之Eureka ,如果没有看过可以先移步去看一下。另外在微服务架构中,业务都会被拆分成一个个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。在这一篇文章首先讲解下基于ribbon+rest。 壹、Ribbon简介 ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。 ribbon 已经默认实现了这些配置bean: IClientConfig ribbonClientConfig: DefaultClientConfigImpl IRule ribbonRule: ZoneAvoidanceRule IPing ribbonPing: NoOpPing ServerList ribbonServerList: ConfigurationBasedServerList ServerListFilter ribbonServerListFilter: ZonePreferenceServerListFilter ILoadBalancer ribbonLoadBalancer: ZoneAwareLoadBalancer 贰

spring cloud Dalston.SR4 feign 实际开发中踩坑(二)

江枫思渺然 提交于 2020-02-28 12:57:39
本文采用的springcloud 版本 Dalston.SR4 所有例子以Dalston.SR4 版本为准 spring cloud Dalston.SR4 feign 实际开发中踩坑(一) https://my.oschina.net/u/2948566/blog/1591028 坑4、 无法扫描到引用包的feign接口 在实际的生产中 我们服务模块是有很多的, 如果 A的接口 B要调用 我们声明一次feigin客户端 api 然后C也要调A的接口 我们还要声明一次feigin客户端api 如果还有更多 就会有很多重复代码 为了提高代码复用,我们往往单独声明一个包来引入feigin 的api 其他包如果调用的化引入到工程中就行了 但是 问题来了 引用包无法被直接扫描到 我们知道 一个微服务模块 如果需要开启feign调用功能 需要加上 @EnableFeignClients 源码: /* * Copyright 2013-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may

(二)Java B2B2C o2o多用户商城 springcloud架构-服务消费者(rest+ribbon)

↘锁芯ラ 提交于 2020-02-28 12:35:36
一、ribbon简介 Ribbon is a client side load balancer which gives you a lot of control over the behaviour of HTTP and TCP clients. Feign already uses Ribbon, so if you are using @FeignClient then this section also applies. —–摘自官网 ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon。 ribbon 已经默认实现了这些配置bean: IClientConfig ribbonClientConfig: DefaultClientConfigImpl IRule ribbonRule: ZoneAvoidanceRule IPing ribbonPing: NoOpPing ServerList ribbonServerList: ConfigurationBasedServerList ServerListFilter ribbonServerListFilter: ZonePreferenceServerListFilter ILoadBalancer ribbonLoadBalancer:

SpringCloud 基础教程(六)-负载均衡Ribbon

喜夏-厌秋 提交于 2020-02-28 10:24:58
 我的博客: 程序员笑笑生 ,欢迎浏览博客!  上一章 SpringCloud基础教程(五)-配置中心热生效和高可用 当中,我们对配置中心进行进行了深入的了解,本章将继续微服务架构的深入学习,了解在微服务中是如何做到负载均衡的。 前言  简单来讲,Ribbon是Netflix发布的开源项目,主要的功能是提供客户端的软件负载均衡算法。它可以在客户端配置服务端类别,然后轮询请求以实现负载均衡。  当项目引入Eureka依赖后,会自动的引入ribbon的依赖,当然我们可以显示的引入ribbon依赖。在集成Eureka时,DiscoveryEnabledNIWSServerList重写了Ribbon的服务列表,在com.netflix.ribbon:ribbon-eureka:2.3.0模块我们可以看到,同时使用 NIWSDiscoveryPing取代IPing: 一、Ribbo快速使用  当前的实例我们会涉及到Eureka注册中心,两个服务提供者(server-provider),一个服务消费者(server-consumer),首先,我们启动两个服务提供者,并注册到Eureka,服务提供接口如下: @RestController public class RibbonController { @RequestMapping("/sayHello") public String

入门实战: Spring Cloud 开篇

廉价感情. 提交于 2020-02-28 09:40:03
父应用 GroupId: top.bing Artifact: battle Dependencies: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <properties> <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version> </properties> <dependencies> <!-- lombok 工具通过在代码编译时期动态的将注解替换为具体的代码, IDEA 需要添加 lombok 插件 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId>

SpringCloud基础教程(五)-配置中心热生效和高可用

此生再无相见时 提交于 2020-02-28 08:58:46
 我的博客: 程序员笑笑生 ,欢迎浏览博客!  上一章 SpringCloud基础教程(四)-配置中心入门 当中,我们在对Eureka的有了基本的基础认识之上,深入的了解Eureka高可用集群和其他的生产环境中用到的一些配置。本章将开始了解分布式环境下的配置中心。 前言  在实际的项目运行中,我们会根据实际需求修改配置内容,那么有没有一种方式,能够在不启动服务组件的情况向让配置文件动态的生效呢,Spring Cloud Conifg中提供了一种方式了。当然我们还需要考虑一旦配置服务宕机的话,那么配置客户端是无法获取到配置信息的,所以针对配置服务,我们也希望能提供高可用的服务。 一、配置热生效  首先我们在客户端(每个开发的微服务)的控制器上添加 @RefreshScope 注解,并在客户端(项目的pom.xml中引入actuator依赖(actuator中包含了/actuator/refresh的api): @RefreshScope @RestController public class ValueController { @Value("${k1}") String value; @GetMapping("/get") public String getValue(){ return value; } } 亲自测试,如果将@RefreshScope注解添加在启动类上

SpringCloud Feign 配置token请求

萝らか妹 提交于 2020-02-28 04:45:22
相关依赖引入 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 新建实现 RequestInterceptor 接口的配置类,重写apply方法 import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context

配置中心问题

有些话、适合烂在心里 提交于 2020-02-28 03:53:16
Could not locate PropertySource and the fail fast property is set, failing springcloud的其他服务读取不了配置中心得配置文件出错,原因是配置中心的一个配置文件有svn冲突。配置中心启动不报错是因为配置中心没有用到这个文件吧。 其他服务读取该冲突文件就读取不了,所以报错,记录一下。 来源: oschina 链接: https://my.oschina.net/u/3915790/blog/3163374

配置中心报错

限于喜欢 提交于 2020-02-28 03:03:52
Spring cloud 问题记录(六)配置中心报错Cannot pull from remote XX.git the working tree is not clean. 原创zhuwei_clark 最后发布于2019-06-17 16:47:33 阅读数 421 收藏 展开 在使用配置中心拉取配置文件的时候,有时候总会遇到很多让人很郁闷的问题,如果本地缓存文件被更改的时候就会遇到以下问题: Cannot pull from remote https://git.zhubanxian.com/zhu/online_edu_config.git, the working tree is not clean. 而我遇到这个问题的原因就是因为吧本地的缓存给删了。 其实在Spring Cloud官网给出了答案 https://github.com/spring-cloud/spring-cloud-config/blob/master/docs/src/main/asciidoc/spring-cloud-config.adoc#force-pull-in-git-repositories Spring Cloud配置服务器会复制远程git存储库,如果本地副本变得不干净(例如,通过OS进程更改文件夹内容),那么Spring Cloud配置服务器就不能更新远程存储库中的本地副本

ZhaoWei-2020-01-26

旧时模样 提交于 2020-02-28 02:23:32
spring cloud Ribbon Ribbon(负载均衡): Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP客户端的行为。为Ribbon,配置服务提供者的地址列表后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多的负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。在SpringCloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从EurekaServer获取服务提供者的地址列表,并基于负载均衡算法,请求其中一个服务提供者的实例(为了服务的可靠性,一个微服务可能部署多个实例) Hystrix Hystrix(熔断器): 当服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到提供者响应或超时。在高负载场景下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃(雪崩效应)。Hystrix正是为了防止此类问题发生。Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。 包裹请求:使用HystrixCommand(或HystrixObservableCommand