![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spring cloud
文章平均质量分 74
尹吉欢
欢迎大家关注我的微信公众号‘猿天地’, 猿天地由《Spring Cloud微服务-全栈技术与案例解析》作者尹吉欢创建。 JAVA方向为主(Spring Boot, Spring Cloud,Sharding JDBC,Elastic Job,Mongodb等)。 技术之路很漫长,我们一起前行吧。 作者代码分享GitHub地址:https://github.com/yinjihuan , 个人网站:http://cxytiandi.com/course , 有任何问题或者合作请联系我。微信号:jihuan900
展开
-
Spring Cloud 2020: Hystrix不生效怪我咯
好像没写相关的文章了,正好最近有朋友问我一些关于新版本中遇到的问题。2020.0.1这个版本是目前最新的版本,也是变动最大的一个版本。最大的变动莫过于将Netflix OSS的组件进行了移除操作。今天的问题也是跟这个有关系,大家通过标题就可以知道。虽然移除了Netflix的组件,但是对于初学者来说,市面上大部分书籍或者文章都是老的版本,也都是用的Netflix里面的组件。在学习的时候自然的选择了最新的版本,但是没有仔细的去看官方文档,也不知道最新版已经进行了移除,在用的时候还是按照老版本的方式去使用这些原创 2021-03-19 14:04:20 · 1334 阅读 · 2 评论 -
Kitty中的动态线程池支持Nacos,Apollo多配置中心了
目录回顾昨日nacos集成Spring Cloud Alibaba 方式Nacos Spring Boot 方式Apollo集成自研配置中心对接无配置中心对接实现源码分析兼容Apollo和Nacos NoClassDefFoundErrorApollo自动刷新问题回顾昨日上篇文章 《一时技痒,撸了个动态线程池,源码放Github了》(https://mp.weixin.qq.com/s/JM9idgFPZGkRAdCpw0NaKw)发出后很多读者私下问我这个能不能用到原创 2020-07-08 13:31:39 · 822 阅读 · 0 评论 -
Dubbo对Spring Cloud说:来老弟,我要拥抱你
项目地址https://github.com/yinjihuan/kitty-cloud前言Kitty Cloud 开源后有以为朋友在 GitHub 上给我提了一个 issues,问为什么项目中要同时集成 Feign 和 Dubbo 两个框架来调用服务。今天就来聊一聊这个问题,然后讲下在 Kitty Cloud 中如何切换使用两种调用方式。为什么要支持两种协议?关于支持两种协议,我这个是一个开源项目,主要还是为了让使用者有更多的选择。当然框架本身不是我开发的,我只是使用者而已。一种协议更统一化,原创 2020-05-18 12:50:15 · 1153 阅读 · 0 评论 -
Kitty Cloud(HTTP_RPC)的全局异常处理
项目地址https://github.com/yinjihuan/kitty-cloud异常处理不用我讲,大家都清楚。单独的异常处理太繁琐,全局异常处理可以在一个应用中统一进行异常的处理,非常方便。目前全局异常处理用的也越来越广泛,今天跟大家来聊一聊 Kitty Cloud 中的全局异常是如何处理的?为什么要使用全局异常处理呢?使用全局异常处理后,我们不需要定义固定类型的返回值,当业务代码报错的时候直接通过异常处理方式来返回给前端或者 API 调用方错误信息。不使用全局异常处理案例Web 层比原创 2020-05-13 13:40:39 · 696 阅读 · 0 评论 -
Spring Cloud Gateway 限流操作
开发高并发系统时有三把利器用来保护系统:缓存、降级和限流,API网关作为所有请求的入口,请求量大,我们可以通过对并发访问的请求进行限速来保护系统的可用性。常用的限流算法比如有令牌桶算法,漏桶算法,计数器算法等,在Zuul中我们可以自己去实现限流的功能(Zuul中如何限流在我的书《Spring Cloud微服务-全栈技术与案例解析》中有详细讲解),Spring Cloud Gateway的出现本...原创 2018-07-23 16:00:42 · 27075 阅读 · 10 评论 -
Spring Cloud微服务-全栈技术与案例解析
在互联网时代,互联网产品的最大特点就是需要快速发布新功能,支持高并发和大数据。传统的架构已经慢慢不能支撑互联网业务的发展,这时候微服务架构顺势而出。最开始国内很多公司都是基于阿里开源的Dubbo框架来构建微服务的,由于阿里内部的原因,Dubbo已经几年没进行维护了,不过今年(2018年)又宣布重新开始维护了。反观Spring Cloud,其在国外发展得很好,但在国内,由于Dubbo导致其鲜为人...原创 2018-07-19 11:11:20 · 1517 阅读 · 0 评论 -
JAVA开发者大会-Spring Cloud网关分享
新书购买:单本75折包邮原创 2018-07-28 22:11:53 · 1116 阅读 · 0 评论 -
Spring Cloud Gateway 整合Eureka路由转发
前面我们对Spring Cloud Gateway进行了一个入门的学习,具体文章可以查看《Spring Cloud Gateway 网关尝鲜》进行学习。网关负责转发工作,那么它需要知道后端的服务信息,今天我们来学习下Spring Cloud Gateway 整合Eureka的操作,实现服务转发功能。在之前的基础上添加eureka-client的依赖:<dependency&g...原创 2018-07-27 09:42:22 · 30280 阅读 · 7 评论 -
Spring Cloud Zuul记录接口响应数据
系统在生产环境出现问题时,排查问题最好的方式就是查看日志了,日志的记录尽量详细,这样你才能快速定位问题。如果需要在Zuul中进行详细的日志记录,这两种日志必不可少。 - API请求信息 - API响应信息前面有介绍过如何获取请求信息,文章请查看《Spring Cloud Zuul过滤器获取请求参数问题》。今天正好又有一位朋友问我如何获取响应的数据,抽时间给大家写篇文章简单分享下。...原创 2018-08-06 09:28:21 · 11882 阅读 · 0 评论 -
Spring Boot2中Spring Security导致Eureka注册失败
将Spring Boot升级到2.0,Spring Cloud升级到Finchley.M8时,Eureka注册就报错了Eureka Server配置:server.port=9011spring.application.name=eureka-server spring.security.user.name=usernamespring.security.user.passwo...原创 2018-05-24 11:00:49 · 5559 阅读 · 1 评论 -
Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失下篇
前言上篇文章《Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失》我们对ThreadLocal数据丢失进行了详细的分析,并通过代码的方式复现了这个问题。在上篇文章的末尾我也说了思路给大家提供了,如果需要能够在Hystrix 为线程隔离模式也能正确传递数据的话,需要我们自己去修改。我这边以Zuul中自定义负载均衡策略来进行讲解,在Zuul中需要实现灰度发...原创 2018-05-10 16:38:34 · 1431 阅读 · 0 评论 -
Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失
在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离。在使用线程隔离的时候,有个问题是必须要解决的,那就是在某些业务场景下通过ThreadLocal来在线程里传递数据,用信号量是没问题的,从请求进来,但后续的流程都是通一个线程。当隔离模式为线程时,Hystrix会将请求放入Hystr...原创 2018-05-09 10:22:18 · 996 阅读 · 0 评论 -
Spring Cloud Eureka 服务上下线监控
之前我们有介绍通过Spring Boot Admin来检测服务的上下线,然后进行通知功能。文章:http://cxytiandi.com/blog/detail/13376今天为大家介绍另外一种实现的方式,在Eureka服务中进行检测通知,Eureka中提供了事件监听的方式来支持扩展。EurekaInstanceCanceledEvent 服务下线事件EurekaInstanceR...原创 2018-04-17 17:16:36 · 2210 阅读 · 0 评论 -
Spring Cloud入门到实战系列教程
本教程由猿天地尹吉欢进行整理,欢迎大家转载分享,请注明文章出处。文章对应源码地址:https://github.com/yinjihuan/spring-cloudSpring Cloud EurekaSpring Cloud Eureka 初探Spring Cloud Eureka 增加权限认证Spring Cloud Eureka 集群高可用Spring Clo...原创 2018-04-16 09:29:40 · 5253 阅读 · 0 评论 -
Spring Boot入门到实战系列教程
本教程由猿天地尹吉欢进行整理,欢迎大家转载分享,请注明文章出处。Spring Boot 相关课程推荐:Spring Boot从入门到精通课程Spring Boot Web开发前端性能调优从零开始手写百度云盘搜索系统实战课程spring boot开发rest api实战课程activeMQ加spring boot开发邮件服务课程Spring Boot手写百度云盘存储系...原创 2018-03-27 09:33:59 · 8276 阅读 · 1 评论 -
swagger 注解使用
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger的目标是对REST API定义一个标准的和语言无关的接口,可让人和计算机无需访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过Swagger进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger消除了调用...原创 2018-03-05 09:31:26 · 16882 阅读 · 1 评论 -
Spring Cloud Gateway 结合配置中心限流
前言上篇文章我讲过复杂的限流场景可以通过扩展RedisRateLimiter来实现自己的限流策略。假设你领导给你安排了一个任务,具体需求如下: - 针对具体的接口做限流 - 不同接口限流的力度可以不同 - 可以动态调整限流配置,实时生效如果你接到上面的任务,你会怎么去设计+实现呢?每个人看待问题的角度不同,自然思考出来的方案也不同,正所谓条条大路通罗马,能到达目的地的路那就是...原创 2018-08-20 09:37:52 · 8930 阅读 · 1 评论 -
聊聊我眼中的微服务
2018年7月19日,我的处女作《Spring Cloud微服务-全栈技术与案例解析》开卖了。这是一个值得纪念的日子,也是对自己平时学习的考核。近几年正是微服务大火的时候,我也算抱了抱大腿,作为一个技术人,必须时刻保持着学习之心,正所谓该出手时就出手。微服务之所以这么火,无疑是解决了我们实际工作中遇到的很多痛点。比如重复代码多,项目臃肿,启动时间变长了等问题。今天主要谈谈我对微服务的一...原创 2018-08-21 13:58:35 · 1246 阅读 · 0 评论 -
Spring Cloud Gateway重试机制
前言重试,我相信大家并不陌生。在我们调用Http接口的时候,总会因为某种原因调用失败,这个时候我们可以通过重试的方式,来重新请求接口。生活中这样的事例很多,比如打电话,对方正在通话中啊,信号不好啊等等原因,你总会打不通,当你第一次没打通之后,你会打第二次,第三次…第四次就通了。重试也要注意应用场景,读数据的接口比较适合重试的场景,写数据的接口就需要注意接口的幂等性了。还有就是重试次数如...原创 2018-09-17 09:28:59 · 12105 阅读 · 4 评论 -
Hystrix 超时配置的N种玩法
前阵子在我的知识星球中,有位朋友对我提了个问题,问我如何让Hystrix支持对接口级别的超时配置,今天给大家写篇文章,普及下Hystrix配置超时的几种方式。至于以后你是用阿里的Sentinel还是Netflix Hystrix我就不管了,但今天的主题还是Netflix Hystrix,至少目前还是有很多在使用的,所以今天这篇文章还是看看吧。@HystrixCommand如果我们使用的是@H...原创 2019-05-28 21:28:29 · 2060 阅读 · 0 评论 -
阿里Sentinel整合Zuul网关详解
前面我们讲解了Sentinel整合Spring Cloud Gateway,详细请查看文章:阿里Sentinel支持Spring Cloud Gateway啦目前来说,大部分公司线上的网关应该是Zuul,所以今天我们就来看看如何在Zuul中整合Sentinel。本来想基于Spring Cloud Alibaba来进行整合讲解,整合的时候发现目前还没更新版本,依赖还是之前的版本,咱们就以最原生的方...原创 2019-05-10 09:20:01 · 2244 阅读 · 0 评论 -
Zuul中聚合Swagger的坑
每个服务都有自己的接口,通过Swagger来管理接口文档。在服务较多的时候我们希望有一个统一的入口来进行文档的查看,这个时候可以在zuul中进行文档的聚合显示。下面来看下具体的整合步骤以及采坑记录。Cloud版本:Finchley.SR2, Boot版本:2.0.6加入Swagger的依赖:<!-- Swagger --><dependency> <grou...原创 2019-05-01 10:23:49 · 2227 阅读 · 0 评论 -
Spring Cloud Alibaba Sentinel对RestTemplate的支持
欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course)PS:目前星球中正在星主的带领下组队学习Sentinel,等你哦!原创 2019-05-05 11:06:26 · 1929 阅读 · 1 评论 -
阿里Sentinel控制台源码修改-对接Apollo规则持久化
改造背景前面我们讲解了如何对接Apollo来持久化限流的规则,对接后可以直接通过Apollo的后台进行规则的修改,推送到各个客户端实时生效。但还有一个问题就是Sentinel控制台没有对接Apollo,Sentinel控制台本来就可以修改限流的规则,目前存在的情况就是通过Sentinel控制台修改的配置无法更新到Apollo中,所以今天我们的主题是改造Sentinel控制台源码,对接Apoll...原创 2019-04-15 09:34:42 · 1227 阅读 · 0 评论 -
从前端到后端玩转Spring Cloud
现在提起 Spring Cloud 我相信你就算没自己体验过,也肯定听说过。作为微服务架构的主流选择,如果你是一名 Java 使用者和爱好者,我相信你对 Spring Cloud 肯定感兴趣,对今天这门课程更加感兴趣。很多人看文档,看书,将一些组件都用了,但是由于实际工作中的种种原因,无法真正的去使用 Spring Cloud 来进行开发,就会出现只知道各个组件的使用,对于怎么整合这些组件来一个...原创 2019-04-14 19:00:47 · 3888 阅读 · 0 评论 -
阿里Sentinel支持Spring Cloud Gateway啦
1. 前言4月25号,Sentinel 1.6.0 正式发布,带来 Spring Cloud Gateway 支持、控制台登录功能、改进的热点限流和注解 fallback 等多项新特性,该出手时就出手,紧跟时代潮流,昨天刚发布,今天我就要给大家分享下如何使用!2. 介绍(本段来自Sentinel文档)Sentinel 1.6.0 引入了 Sentinel API Gateway Adapte...原创 2019-04-26 09:49:23 · 3300 阅读 · 1 评论 -
Spring Cloud Alibaba整合Sentinel流控
前面我们都是直接通过集成sentinel的依赖,通过编码的方式配置规则等。对于集成到Spring Cloud中阿里已经有了一套开源框架spring-cloud-alibaba,就是用于将一系列的框架成功的整合到Spring Cloud中。我这边Spring Cloud的版本是Finchley.SR2,Spring Boot的版本是2.0.6.RELEASE,下面开始集成步骤。1. 整合步骤1...原创 2019-04-22 09:36:21 · 3363 阅读 · 0 评论 -
Spring Boot Admin2.X监控的服务context-path问题
在使用Spring Boot Admin进行监控时,如果被监控的服务没有加context-path的话是不会有任何问题的,一旦服务加了context-path的配置,监控就会失败。下图是正常情况的显示:我们给被监控的服务增加一个context-path:server.servlet.context-path=/yinjihuan当被监控的服务增加了context-path之后,这边就会...原创 2019-03-07 10:10:15 · 2191 阅读 · 0 评论 -
spring cloud gateway 全局过滤器
全局过滤器作用于所有的路由,不需要单独配置,我们可以用它来实现很多统一化处理的业务需求,比如权限认证,IP访问限制等等。接口定义类:org.springframework.cloud.gateway.filter.GlobalFilterpublic interface GlobalFilter { Mono&lt;Void&gt; filter(ServerWebExchange exch...原创 2018-10-16 19:05:29 · 7733 阅读 · 2 评论 -
Spring Cloud Gateway的全局异常处理
Spring Cloud Gateway中的全局异常处理不能直接用@ControllerAdvice来处理,通过跟踪异常信息的抛出,找到对应的源码,自定义一些处理逻辑来符合业务的需求。网关都是给接口做代理转发的,后端对应的都是REST API,返回数据格式都是JSON。如果不做处理,当发生异常时,Gateway默认给出的错误信息是页面,不方便前端进行异常处理。需要对异常信息进行处理,返回JSO...原创 2018-10-08 09:34:49 · 22173 阅读 · 17 评论 -
Spring Cloud Gateway 之 AddRequestHeader GatewayFilter Factory
今天我们来学习下GatewayFilter Factory,中文解释就是过滤器工厂。官方文档对GatewayFilter Factory的介绍:Route filters allow the modification of the incoming HTTP request or outgoing HTTP response in some manner. Route filters are...原创 2018-09-25 09:27:50 · 4982 阅读 · 0 评论 -
Spring Boot Web 静态文件缓存处理
采用Spring Boot + Freemarker开发Web项目时,由于一些静态文件比较大,如果是在PC上访问影响不大,当在手机上访问时,特别是用流量访问时速度会慢很多,而且很耗流量。通过对请求进行抓包,可以发现每次进入一个页面都需要加载静态文件,如果不差钱的公司可以将静态文件放在CDN上来加快访问速度,或者用Nginx来做静态文件的缓存。今天给大家介绍一种其他的缓存优化方式,通过Spr...原创 2018-03-16 09:25:58 · 2402 阅读 · 0 评论 -
smjdbctemplate 基于 spring jdbctemplate 做的升级版
GitHub地址:https://github.com/yinjihuan/smjdbctemplate大家自己下载源码编译安装到本地仓库即可使用,当前版本号为1.0.2<!-- jdbc orm --><dependency> <groupId>com.cxytiandi</groupId> <artifactId>cxytiandi-jdbc</artifactId> <versi原创 2018-01-05 09:37:31 · 1053 阅读 · 0 评论 -
Hystrix 配置信息
在Hystrix中我们一般是用的默认配置,有些时候需要调整一些参数来获取更好的处理性能配置官方文档:https://github.com/Netflix/Hystrix/wiki/ConfigurationExecution相关的属性的配置:hystrix.command.default.execution.isolation.strategy 隔离策略,默认是Thread, 可选Thread|S原创 2017-12-29 09:33:31 · 1184 阅读 · 0 评论 -
Spring Cloud Eureka REST 接口
Eureka 作为注册中心,其本质是存储了每个客户端的注册信息,Ribbon在转发的时候会获取注册中心的服务列表,然后根据对应的路由规则来选择一个服务给Feign来进行调用。如果我们不是Spring Cloud技术选型,也想用Eureka可以吗?完全可以如果不是Spring Cloud技术栈个人推荐用zk之类的会方便些,当然用Eureka也是可以的这样的话就涉及到如何注册信息,获取注册的信息等等操作原创 2017-12-14 09:44:21 · 11962 阅读 · 0 评论 -
Spring Cloud Sleuth 链路追踪
随着微服务的数量增长,一个业务接口涉及到多个微服务的交互,在出错的情况下怎么能够快速的定位错误,这是一个难题。好在Spring Cloud已经为什么实现了一个非常好的方案来对服务进行追踪。Sleuth就是做这个事情的,它在日志中引入唯一的请求ID来标识每次请求,通过SpanId来构成整个的链路。只需要引入依赖就可以集成Sleuth <dependency> <groupId>org.spr原创 2017-12-22 09:33:59 · 1746 阅读 · 0 评论 -
Spring Cloud Eureka 控制台快速查看Swagger API文档
在服务比较多的情况下,突然想看某个服务的API 文档虽然外面使用了Swagger来进行API的管理,但是还是得找到对应的服务,然后访问Swagger的管理页面才行。为了方便查询文档,把这个功能集成到Eureka中,这样就很方便了默认的Instances也是有链接跳转的,外面需要把这个跳转改成Swagger的管理页面这样直接点击fsh-house:192.168.10.170:2101就能跳转到Swa原创 2017-12-13 09:44:36 · 2175 阅读 · 0 评论 -
Spring Boot Async异步执行
异步调用就是不用等待结果的返回就执行后面的逻辑,同步调用则需要等带结果再执行后面的逻辑。通常我们使用异步操作都会去创建一个线程执行一段逻辑,然后把这个线程丢到线程池中去执行,代码如下:ExecutorService executorService = Executors.newFixedThreadPool(10);executorService.execute(() -> { try {原创 2017-12-21 09:33:07 · 1175 阅读 · 0 评论 -
Spring Cloud Feign fallback错误解决
今天在启动时报了下面这个错误Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.nested exception is org.springframework.beans.factory.BeanCreatio原创 2017-12-04 11:15:55 · 6520 阅读 · 0 评论 -
Spring Cloud Feign 启动UnsatisfiedDependencyException
在加入Swagger之后启动就报错了,由此可知肯定是冲突了错误信息如下:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 我目前的版本如下: <parent> <groupId>org.springframework.boot</groupId原创 2017-12-12 09:42:40 · 2929 阅读 · 0 评论