Spring Cloud
SpringCloud
绅士jiejie
理想的生活,就是生活的理想!
展开
-
调用Feign接口时指定ip
调用Feign接口时指定ip原创 2022-06-23 22:19:34 · 4928 阅读 · 1 评论 -
java.lang.IllegalStateException: Either ‘name‘ or ‘value‘ must be provided in @FeignClient
java.lang.IllegalStateException: Either 'name' or 'value' must be provided in @FeignClient原创 2022-06-23 22:15:36 · 1186 阅读 · 0 评论 -
springboot启动报错:org.springframework.boot.context.properties.ConfigurationPropertiesBean
这是spring boot版本和spring cloud版本不兼容,换一个版本试试。原创 2021-03-17 21:37:51 · 3535 阅读 · 0 评论 -
微服务项目名后缀建议
对于基础设施类服务,如网关服务gateway,鉴权服务auth等,命名建议以-server结尾。对于业务服务,如订单服务order,会员服务member,命名建议以-service结尾。总结个人觉得,使用以上的命名方式,项目整体看起来也会显得明朗许多,所以分享下。...原创 2020-10-25 11:33:16 · 1440 阅读 · 1 评论 -
使用fegin调用远程服务时,启动报类没有被找到
异常信息如下:一般来说,当某个类需要注入,而IOC容器里又没有这个类的实例时,就会报这个错。由于使用fegin的接口类是没有加什么@Component等标注需要注入容器的注解,如下:类上面只有@FeignClient注解,看看该注解详情,如下://// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package org.springfram原创 2020-08-15 11:17:22 · 1011 阅读 · 0 评论 -
第二代微服务架构Spring Cloud Alibaba下学习哪些组件会比较靠谱些?
用途推荐组件服务注册与发现Nacos配置中心Nacos服务网关Spring Cloud Gateway服务熔断限流Sentinel服务通信调用Feign消息队列RocketMQ调用链监控Sleuth+Zipkin分布式任务调度XXL-JOB分布式事务Seata总结以上的推荐组件也是看了Spring C...原创 2020-04-08 21:50:44 · 328 阅读 · 0 评论 -
简单了解下Spring Cloud中的核心组件和作用
核心组件作用Eureka主要用于服务发现和服务治理Ribbon实现多实例服务的负载均衡,有不同的均衡策略可供使用Hystrix对服务之间的远程调用做容错保护Feign用于服务间的远程调用ZuulAPI网关,作为客户端请求的入口,负责鉴权,路由等功能Gateway这是新推出的基于Spring 5的响应式网关,功能和Zuul相似Con...原创 2020-04-08 21:49:25 · 291 阅读 · 0 评论 -
Zuul实现Fallback
在微服务系统里,众多的微服务大多部署在不同的服务器上,我们使用Zuul来作为网关提供统一入口同时协调服务。但有时出现一两个服务请求不通或者干脆就是宕机的情况,这也是可以预见的问题,所以需要时时刻刻准备着容错的手段,没有系统可以做到万无一失。请求经过Zuul,然后调用服务失败了,怎么容错了解过Hystrix的简单实现,其实可以发现在Spring Cloud里Hystrix是个很重要的组件,它...原创 2020-01-17 11:19:17 · 558 阅读 · 0 评论 -
Hystrix线程池的划分
通过简单了解Hystrix的舱壁隔离这篇博文,可以了解到划分独立线程池是Hystrix实现舱壁隔离的手段之一。怎么划分线程池以继承方式实现的 Hystrix 命令使用类,在该类的构造函数里划分线程池用注解的方式划分线程池以继承方式实现的 Hystrix 命令使用类,在该类的构造函数里划分线程池public class DemoCommand extends HystrixCo...原创 2020-01-14 10:49:41 · 572 阅读 · 0 评论 -
简单了解Hystrix的舱壁隔离
通过Hystrix的简单实现这篇博文,可以了解到我们为什么要使用Hystrix以及如何简单使用Hystrix的功能不过我突然意识到,我的系统可是要调用好多个三方接口的,那么如果其中一个第三方接口出现了问题,要是在高并发的情况下,所有的资源都会被这个第三方接口所耗尽,那其他的接口就没法做事了,再夸张点,还会造成系统宕机。那这时候引入Hystrix还有什么用,在上述情况下,他容错降级的功能形同虚设...原创 2020-01-09 17:01:34 · 1483 阅读 · 0 评论 -
Hystrix怎么针对不同异常做不同降级逻辑
测试代码:有一个RibbonService类,用来做远程调用服务,远程调用的方法helloRibbon()里的逻辑暂时为空,还有个降级方法fallback(),里面也暂无逻辑 @Service public class RibbonService { @HystrixCommand(fallbackMethod = "fallback") public U...原创 2020-01-08 17:30:16 · 701 阅读 · 0 评论 -
com.netflix.hystrix和org.springframework.cloud.netflix.hystrix两个包下都有HystrixCircuitBreaker
com.netflix.hystrix.HystrixCircuitBreaker是接口,HystrixCircuitBreaker是Hystrix的核心组件,HystrixCircuitBreaker作为断路器使用,有着自己的核心方法:public interface HystrixCircuitBreaker { boolean allowRequest(); boolea...原创 2020-01-07 17:33:44 · 442 阅读 · 0 评论 -
fallback method wasn't found
使用Hystrix,为远程调用方法设置回调降级方法时出现这个异常:fallback method wasn’t found原因是降级方法的入参和返回值类型和第三方方法不一致,修改成相同后就可以了。总结:目标方法的降级方法,入参和返回值类型要相同...原创 2020-01-07 17:28:24 · 791 阅读 · 0 评论 -
Hystrix工作原理
Hystrix官方的工作流程图工作流程(对应上图标记的序号)创建HystrixCommand或者HystrixObservableCommand对象HystrixCommand:用在依赖服务返回的结果是单个的时候HystrixObservableCommand:用在依赖服务返回的结果是多个的时候这里创建HystrixCommand或者HystrixObservableCom...原创 2020-01-04 16:53:34 · 260 阅读 · 0 评论 -
Eureka服务注册源码学习
首先我们要知道 Eureka 2.0 闭源了,不过这其实影响不大,国内大部分的都还在使用Eureka 1.X 系列,所以适当的了解下Eureka的源码也是挺好的,就算之后不用,思想还是可以借鉴的。总的来说,Eureka基本就做两件事,服务注册和服务发现服务注册首先要找到相关的类,一般我们都会使用@EnableDiscoveryClient注解来做服务注册功能,让注册中心能够发现该服务。...原创 2019-12-31 10:51:00 · 490 阅读 · 0 评论 -
@EnableEurekaClient和@EnableDiscoveryClient区别
相同点:两者都可以用于服务发现,作用其实是一样的不同点:@EnableEurekaClient是基于spring-cloud-netflix@EnableDiscoveryClient是基于spring-cloud-commons总结:@EnableEurekaClient适用于服务注册中心采用Eureka的服务@EnableDiscoveryClient支持其他注册中心的服务...原创 2019-12-30 16:22:36 · 1191 阅读 · 0 评论 -
一个请求在Zuul的生命周期
以下图片描述了一个请求在Zuul的生命周期:首先一个外部HTTP请求进入Api网关服务后,会先经过pre类型的过滤器,主要是做一些前置处理,比如登录校验,权限校验等,还没有进行请求的真正路由。通过pre类型的过滤器后,请求会经过routing类型的过滤器,该过滤器会对请求的路径进行路由匹配,转发到对应的服务实例上,等服务实例将请求结果返回后,这个阶段就结束了。routing类型...原创 2019-12-25 17:12:21 · 649 阅读 · 0 评论 -
简单实现分布式服务追踪-Spring Cloud Sleuth
一.对Spring Cloud Sleuth的简单理解要知道在引入了微服务后,我们发起一个Http的请求,可能要经过多个服务节点,才能组合成我们想要的结果返回。在这条http请求的服务链路上要是随便哪个服务节点出现延迟或者错误,都会影响到最终的结果,所以这时全链路跟踪就显得很重要了。对于每个请求,我们都进行跟踪,可以及时发现错误根源,同时还能监控分析每条调用链上的性能瓶颈等。而Spring Cl...原创 2019-12-12 10:57:28 · 256 阅读 · 0 评论 -
简单实现Zuul的请求过滤功能
我们知道在引入了Zuul作为Api网关服务后,它可以做到请求路由和负载均衡等功能,具体实现可以参考《zuul的简单实现》这篇博客这时问题来了,难道我们要对所有的请求的进行正常的路由么,要是他是非法请求怎么办,这时我们就需要用到Zuul的请求过滤功能,根据我们自己的合法逻辑对经过Api服务网关的请求进行校验,决定是返回响应错误还是正常路由。项目结构介绍:从注册中心可以看到有3个服务实例:...原创 2019-12-09 16:30:33 · 843 阅读 · 0 评论 -
Feign的日志配置
在使用Feign客户端调用接口时,Feign很贴心的为我们提供了日志配置功能,方便我们分析Feign的请求细节。而Feign的日志配置操作起来简单几步就行:一.写一个日志配置类,在启动时加载:@Configurationpublic class FeignLogConfiguration { @Bean Logger.Level feignLog() { r...原创 2019-12-06 15:13:20 · 2250 阅读 · 0 评论 -
如何禁用部分服务的hystrix
我们一般通过以下配置开启feign客户端的hystrix功能:feign: hystrix: enabled: true而这个开启hystrix功能就是全局开启了,所有的feign客户端调用的接口都会在失败后熔断那如果我们有些用feign客户端调用的接口不需要熔断呢,我就想安安静静的调接口,那也有办法:在提供该服务的接口上通过@FeignClient注解指定configura...原创 2019-12-05 16:43:47 · 1054 阅读 · 0 评论 -
Hystrix结合feign实现服务降级
项目结构简介:这是注册中心的截图,可以看出我们有一个EUREKA-SERVER注册中心和服务提供者EUREKA-CLIENT,同时还有一个EUREKA-FEIGN-CLIENT(feign客户端)服务。EUREKA-CLIENT提供了一个接口:可以看到在这个方法里我让线程睡眠了600毫秒feign客户端的配置文件如下:server: port: 8765spring: ap...原创 2019-12-05 14:22:26 · 980 阅读 · 0 评论 -
Ribbon重试机制
把ribbon的超时全局配置和指定服务配置这篇博客的项目拿来使用一下,把EUREKA-CLIENT服务启动3次实例。这样的话,我们EUREKA-CLIENT客户端就有三个可用实例了,这样方便演示和测试Ribbon的重试机制。先看下注册中心的信息:可以看到有两个服务,分别是EUREKA-CLIENT和EUREKA-FEIGN-CLIENT,其中EUREKA-CLIENT有端口为8770,...原创 2019-12-02 16:46:00 · 1431 阅读 · 1 评论 -
ribbon的超时全局配置和指定服务配置
我们知道Spring Cloud Fegin默认集成了Spring Cloud Ribbon那么我们在用Fegin远程调用服务时,可以通过设置Ribbon的调用超时时间来控制服务调用的等待时常,避免出现线程被占用长久等待的问题,同时还能在调用超时时进行重试(之后再写一篇)。当然这和Hystrix的使用是不一样的,一般来说Hystrix设置的超时时间要小于Ribbon的设置的超时时间,不然到了超时...原创 2019-11-29 17:30:56 · 4526 阅读 · 0 评论 -
高可用注册中心Eureka(windows)
在上篇博客简单实现了单例的Eureka注册中心。但是一个注册中心往往是不够的,要实现高可用,我们第一个想到的就是集群,以下就是高可用注册中心Eureka的简单时间的demo。新建三个配置文件,分别是application.yml,application-dev.yml,application-rls.yml:application.yml没有太多配置,就是简单的用来切换项目启动时,我...原创 2019-11-28 10:52:46 · 1109 阅读 · 0 评论 -
zuul的简单实现
Spring Cloud Zuul是什么?Spring Cloud Zuul提供API网关服务。为什么需要API网关服务?如果我们把项目拆分,构建成微服务,那原来只用于单体服务的鉴权功能,在每个拆分出来的微服务里都需要使用,保证每个服务单元都有和之前单体一样的鉴权逻辑。这时要是我们业务发展迅速,在该微服务体系上又多增加了几个服务单元,那么这新增的几个服务单元势必又要加上鉴权功能,这单...原创 2019-11-25 17:38:34 · 462 阅读 · 0 评论 -
Hystrix的简单实现
项目结构可参考:上一篇博客这次要简单实现Hystrix功能,在上篇博客的基础上改动几步就好了。这里先简单说下自己对Hystrix的理解:它就和我们平时的生活中的断路器一样,每当线路中有电路发生短路时,为了防止危害,断路器就会开启来切断故障电路,它对电路起到了一种保护作用。同理,在微服务中,每个服务之间会相互调用,比如订单服务调用库存服务,如果在订单服务在调用库存服务时,库存服务发生故障,那么...原创 2019-11-22 16:30:43 · 640 阅读 · 0 评论 -
Feign使用的简单实现
项目具体结构如下:有一个服务提供者项目:eureka-client有一个feign客户端项目:eureka-feign-client有一个eureka服务注册中心:eureka-servereureka-server详情如下:配置类:server: #端口号 port: 8761eureka: instance: #设置主机ip以及是否提交ip信息 pr...原创 2019-11-15 17:27:11 · 592 阅读 · 0 评论 -
Ribbon源码学习
了解过上篇博客:博客地址:可以很清楚的知道Ribbon的关键类是RibbonLoadBalancerClient,它在execute方法里结合其他类和方法实现了负债均衡。所以先从RibbonLoadBalancerClient类入手,类的继承关系图形如下:可以看到,RibbonLoadBalancerClient实现了LoadBalancerClient,LoadBalancerCli...原创 2019-11-14 16:03:59 · 354 阅读 · 0 评论 -
Ribbon是如何通过一个@LoadBalanced注解就实现负载均衡的
一.介绍下测试用到的服务从Eureka注册中心中可以可以看出有EUREKA-CLIENT和RIBBON-CLIENT的服务,其中EUREKA-CLIENT有两个节点作为服务提供者,而RIBBON-CLIENT则是服务消费者,通过RestTemplate来消费EUREKA-CLIENT的服务。下面代码就是简单实现Ribbon负载均衡的配置类:@Configurationpublic cla...原创 2019-11-08 15:09:04 · 2692 阅读 · 3 评论 -
Ribbon简单入门
一.Ribbon简介说起Ribbon,首先要说下负载均衡。将负载分摊到多个操作单元上进行执行就是负载均衡,简单的理解,就是将多个请求按照某种策略均匀的分配给不同的服务器处理,由此解决单台服务器的压力,减少响应速度。可以想象成以前是十件事一个人做,现在是3个人一起做这十件事,自然处理速度和压力都小的多。而Ribbon就是这样一个实现负载均衡的工具,它是通过代码层面来实现的负载均衡。与之相对的另一种...原创 2019-10-29 17:29:20 · 1013 阅读 · 0 评论 -
Eureka的一些概念理解
Register-服务注册服务注册中心启动成功后,每当有Eureka Client上线,都会向Eueka Server注册,Eureka Client会提供自身的ip地址,服务名,List item原创 2019-10-17 11:52:24 · 283 阅读 · 0 评论 -
单机版eureka服务和注册实践
一.先创建一个maven工程,采用多模块结构完成这次实践删除多余文件,整体结构是:|_springcloud |_eureka-client |_eureka-server |_pom.xml最外层的pom.xml用来处理一些公共依赖,如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="h...原创 2019-10-16 16:56:42 · 332 阅读 · 1 评论 -
启动eureka-client时报错: Completed shut down of DiscoveryClient
少了个起步依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>...原创 2019-10-16 15:50:11 · 266 阅读 · 0 评论