![](https://img-blog.csdnimg.cn/20190916203716164.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SpringCloud
SpringCloud相关技术文章
每天都要进步一点点
工作日常技术学习、积累、总结
展开
-
【Hoxton.SR1版本】Spring Cloud Sleuth分布式请求链路跟踪
一、简介在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。Spring Cloud官方提供了Spring Cloud Sleuth服务链路跟踪组件,Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin。Spring Cloud Sleuth官网地址:h原创 2020-08-29 16:09:37 · 408 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Stream消息驱动
一、简介消息驱动概述屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。Spring Cloud Stream是什么?官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs和outputs来与Spring Cloud Stream中binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就原创 2020-08-28 21:52:19 · 442 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Bus消息总线
一、简介Spring Cloud Bus能干嘛?Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改,事件推送等,也可以当做微服务间的通信通道。原创 2020-08-27 14:47:13 · 286 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Config服务配置中心
一、简介微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。Spring Cloud提供了Config Server来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理,维护起来非常困难。Spring Cloud Config是什么?Spring Cloud Config为微服务架构中的微服务提供集中式的外部原创 2020-08-26 20:43:32 · 586 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Gateway之如何进行限流
一、简介前面我们已经了解到Spring Cloud Gateway新一代网关主要有:路由转发、权限鉴定、统一日志处理、服务限流、熔断、分流等功能,今天我们来聊聊服务限流。为什么要限流?想必大家都经历过双十一淘宝的抢购商品吧,可想而知双十一当天淘宝的并发流量有多大,那么淘宝是怎么扛住这么大的并发呢,想必也肯定使用到了限流策略。在高并发分布式系统中,往往都需要进行限流操作,原因有两点:为了防止大量的请求致使服务器过载,导致服务器不可用; 为了防止网络攻击网站;常见的限流方式,比如Hystrix原创 2020-08-24 15:32:27 · 472 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Gateway之GlobalFilter全局过滤器
一、简介Spring Cloud Gateway根据作用范围划分为GatewayFilter和GlobalFilter,二者区别如下: GatewayFilter : 需要通过spring.cloud.routes.filters 配置在具体路由下,只作用在当前路由上或通过spring.cloud.default-filters配置在全局,作用在所有路由上 GlobalFilter : 全局过滤器,不需要在配置文件中配置,作用在所有的路由上,最终通过GatewayFilterAdapte原创 2020-08-23 10:41:30 · 999 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Gateway之Filter详解
一、简介上一篇文章我们对Gateway Predicate进行了详细的介绍,我们再来看下官网对Predicate的描述:Predict断言决定了请求由哪一个路由处理,在路由处理之前,需要经过“pre”类型的前置过滤器处理,处理返回响应之后,可以由“post”类型的后置过滤器处理。由上图可以看到,在Predicate断言之后,会经过过滤器链,我们可以在过滤器中对请求或者响应进行修改,如添加请求头、响应头等等。Filter作用Filter过滤器在网关有着非常重要的作用,在“pre”类型的过滤器原创 2020-08-22 15:59:17 · 907 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Gateway之Predicate详解
一、简介前面一篇文章,我们介绍有关Gateway新一代网关的概念以及与旧网关Zuul的对比,并通过一些简单的示例说明了gateway中路由如何配置、实现动态路由等,本篇文章我们主要介绍Gateway中强大的Predicate断言和Filters过滤器功能。二、常用的Predicate断言Spring Cloud官网提供了11中断言的使用方法,如下图所示:通过Gatewayt9527的启动日志,我们也可以看到:2020-08-19 16:12:54.275 INFO 16404 -原创 2020-08-19 22:44:52 · 805 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Gateway网关初体验
一、简介在SpringCloud旧版本中,我们使用的微服务网关是Zuul网关,笔者之前也做了有关Zuul网关的详解,有兴趣的小伙伴可以通过下面的链接进行学习:https://blog.csdn.net/Weixiaohuai/article/details/82717679。在SpringCloud新版本中,新推出了Spring Cloud Gateway新一代网关,它取代了Zuul,所以我们有必要花一点时间去学习Gateway。Spring Cloud Gateway官网地址为:https:/原创 2020-08-19 15:35:40 · 769 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Hystrix断路器
一、简介我们都知道,复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败,如果服务调用的链路太长,当服务提供者出现不可用时,会将故障逐渐蔓延到服务消费者身上,这其实就是“雪崩效应”。雪崩效应“雪崩效应”:因 '服务提供者' 的不可用导致 '服务调用者' 的不可用,并将不可用逐渐放大的过程。多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,原创 2020-08-17 21:56:18 · 430 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud OpenFeign远程服务调用
一、简介Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。Feign能干什么?Feign旨在是编写Java Http客户端变得更加容易。前面在使用Rib原创 2020-08-16 09:16:01 · 428 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Ribbon负载均衡服务调用
一、简介Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如超时、重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助我们基于某种规则(如简单轮训、随机连接等)去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。Ribbo原创 2020-08-15 20:30:12 · 354 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Consul服务注册中心搭建
一、简介前面介绍了通过Eureka搭建微服务注册中心,其实服务注册中心还有其他几种落地实现,如Zookeeper、Consul等,今天介绍如何搭建Consul服务注册中心。Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。能干嘛:服务发现,支持 HTTP 和 DNS 协议; 健康监测,支持多种方式,HTTP、TCP、Docker、Shell脚本定制化; KV键值对存储; 多数据中心; 可视化Web页面; 跨平台,支持 Linux原创 2020-08-03 20:38:04 · 279 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Eureka服务注册中心集群搭建
目录一、前言:二、创建Eureka Server三、调整7001端口注册中心四、调整服务提供者的配置文件:五、总结一、前言:在旧版本的时候,已经讲解过如何搭建Eureka注册中心集群,小伙伴们可以参考:https://blog.csdn.net/Weixiaohuai/article/details/82499345进行学习。版本说明:SpringBoot:2.2.2.RELEASESpringCloud:Hoxton.SR1本文主要搭建Spring Cloud原创 2020-07-26 19:01:57 · 498 阅读 · 0 评论 -
【Hoxton.SR1版本】Spring Cloud Eureka服务注册中心单节点搭建
目录一、前言二、父工程搭建三、公共API项目搭建四、Eureka Server端搭建五、Eureka Client【服务提供者】搭建六、Eureka Client【服务消费者】搭建七、扩展一、前言由于SpringCloud较老版本已经停止更新,已经迭代好几个版本,加上最近SpringCloud Alibaba挺火的,所以想花一点时间去学习一下并总结一番,本文主要搭建Spring Cloud Eureka服务注册中心(单节点),在生产环境中,基本上都是多节点负载均衡,形成一原创 2020-07-26 18:27:01 · 706 阅读 · 0 评论 -
Spring Cloud Zuul网关集成JWT身份验证学习总结
目录一、简介二、JWT简介三、Zuul集成JWT过程四、测试五、总结一、简介使用微服务开发项目,肯定少不了身份认证,一般我们都会将身份认证放在网关中做,实现统一的身份认证。这里我们选用了JWT(Json Web Token)作为身份认证, jwt作为当下比较流行的身份认证方式之一主要的特点是无状态,把信息放在客户端,服务器端不需要保存session,适合在分布式环境下使用。微服务网关(如Zuul)验证token后,把解析出来的身份信息放在request header请求头或者请求原创 2020-07-19 21:34:44 · 2076 阅读 · 6 评论 -
RestTemplate使用详解
一、简介RestTemplate是spring内置的http请求封装,使用RestTemplate可以轻松的实现HTTP请求。本文将通过RestTemplate在Spring Cloud项目中跨服务调用的示例来讲解RestTempate中常用的GET和POST请求方法,其他方法因为不常用,所以用到的时候再做查阅即可。二、工程准备本文将通过在Spring Cloud中跨服务调用示例来说明...原创 2018-10-12 18:00:22 · 661 阅读 · 0 评论 -
Spring Cloud Sleuth链路跟踪之使用Mysq保存服务链路跟踪信息(学习总结)
一、简介我们在上上一篇文章(https://blog.csdn.net/Weixiaohuai/article/details/82883280)已经实现了通过RabbitMQ消息中间件的方式来收集服务链路跟踪信息,但是当zipkin-server服务端重启之后,你会发现之前的链路信息都清空了,通过zipkin可视化界面已经不能看到服务之间的调用关系以及服务依赖关系了,这个时候我们就需要考虑将...原创 2018-10-02 17:11:54 · 696 阅读 · 1 评论 -
Spring Cloud Sleuth链路跟踪之使用RabbitMQ异步收集链路跟踪信息(学习总结)
一、简介在上一篇文章中,通过Spring Cloud Sleuth整合zipkin的时候,已经实现了通过Http方式来收集链路跟踪信息,除了使用http方式之外,还可以使用RabbitMQ等消息中间件来异步收集链路跟踪信息。结合Spring Cloud Stream可以使客户端将跟踪信息输出到消息中间件上,同时Zipkin服务端从消息中间件上异步收集这些信息。本章讲解通过RabbitMQ来收集...原创 2018-09-28 16:07:26 · 3157 阅读 · 3 评论 -
Spring Cloud Sleuth服务链路跟踪之入门篇(学习总结)
一、简介在微服务中,通常根据业务模块分服务,项目中前端发起一个请求,后端可能跨几个服务调用才能完成这个请求(如下图)。如果系统越来越庞大,服务之间的调用与被调用关系就会变得很复杂,假如一个请求中需要跨几个服务调用,其中一个服务由于网络延迟等原因挂掉了,那么这时候我们需要分析具体哪一个服务出问题了就会显得很困难。Spring Cloud Sleuth服务链路跟踪功能就可以帮助我们快速的发现错误根...原创 2018-09-27 17:05:59 · 8975 阅读 · 0 评论 -
Spring Cloud Bus消息总线(学习总结)
一、简介前面我们介绍了如何通过/refresh接口手动刷新配置文件内容,但是,当我们的系统中服务越来越多之后,维护这样的刷新清单将会变得非常繁琐麻烦,而且容易犯错。本章介绍使用Spring Cloud Bus消息总线实现配置文件的集群动态刷新。Bus消息代理中间件可以将消息路由到一个或多个目的地。二、准备工程【a】eureka-server: 服务注册中心,端口1111;【b】co...原创 2018-09-26 16:06:55 · 3079 阅读 · 1 评论 -
Spring Cloud Config分布式配置中心高可用及配置刷新(学习总结)
一、前言上一篇文章已经实现了Spring Cloud Config分布式配置中心的功能,我们已经可以通过Config Server获取Git远程仓库配置文件中的内容,但是在实际项目中,当服务实例数量比较多的情况下,每个服务单元都从配置中心获取配置信息,假如配置中心由于网络等原因挂掉了,这时候会导致那些服务实例请求失败等一系列问题。这时候可以考虑将配置中心做成一个微服务,注册到Eureka中,这...原创 2018-09-19 15:07:44 · 1067 阅读 · 0 评论 -
Spring Cloud Config分布式配置中心(学习总结)
一、简介在微服务中,每个功能模块其实都可以拆分成一个单独的服务实例,如果项目够大,必然会有很多服务单元,每个服务单元都有一份配置文件需要维护,这显得不太好维护,而且不方便协作开发。为了使服务实例的配置文件统一管理化,Spring Cloud Config提供了一套解决方案,建立一个配置服务中心,每个服务单元从config server中获取具体的配置文件,它支持配置服务放在配置服务的内存中(即...原创 2018-09-18 17:17:12 · 1920 阅读 · 0 评论 -
Spring Cloud Zuul路由网关(学习总结)
一、简介Spring Cloud Zuul主要的功能是:路由跳转以及路由过滤,本文主要讲解了这两方面的内容。在实际项目中,zuul中可能也会有相对复杂的逻辑,通常在zuul前面还有一个nginx反向代理,前端直接访问nginx,让nginx给我们代理到网关服务,网关服务再路由到具体的服务提供者上。zuul默认集成了ribbon实现了负载均衡功能。二、准备工程a. zuul-eureka...原创 2018-09-15 21:54:15 · 857 阅读 · 0 评论 -
Spring Cloud Hystrix Dashboard仪表盘 和 Turbine集群监控 (学习总结)
一、简介Spring Cloud Hystrix Dashboard是一个可以监控HystrixCommand的可视化图形界面,由于某种原因,如网络延迟、服务故障等,这时候可以借助dashboard提供的可视化界面监控各个Hystrix执行的成功率、调用成功数、失败数量、最近十分钟的流量图等等,根据这些数据我们就可以进行错误排查以及进行服务的优化等。Hystrix Dashboard只能对单个...原创 2018-09-14 11:40:07 · 1201 阅读 · 0 评论 -
Spring Cloud Hystrix服务容错 (学习总结)
一、雪崩效应“雪崩效应”: 因 '服务提供者' 的不可用导致 '服务调用者' 的不可用,并将不可用逐渐放大的过程二、Hystrix介绍Spring Cloud中服务之间的调用方式主要有两种,一种是Ribbon+RestTemplate,一种是Feign声明式服务调用,在实际项目中,为了服务高可用,一个服务通常会集群部署,运行多个实例, 由于网络原因或者服务自身原因,被调用的服务并不能保...原创 2018-09-11 17:45:44 · 627 阅读 · 3 评论 -
Spring Cloud Feign声明式服务调用 (学习总结)
一、Feign介绍Feign是一个声明式的伪Http客户端,通过Feign可以实现服务间的相互调用,比如服务A调用服务B暴露的一些接口;同时Feign整合了Ribbon,所以Feign也可以实现服务的负载均衡调用。想要使用Feign也比较简单,定义一个通过注解@FeignClient()指定需要调用的服务的接口,启动类加上@EnableFeignClients开启Feign功能即可。二、准...原创 2018-09-10 16:31:06 · 9842 阅读 · 10 评论 -
Spring Cloud Ribbon客户端负载均衡(学习总结)
一、Ribbon介绍Ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。在实际项目中,我们可以通过Ribbon实现对服务的均衡调用,以防止某个服务实例出现突发问题的时候服务调用出现问题。 二、准备工作本章主要涉及三个项目模块,分别是SpringCloudEurekaServer服务注册中心,端口号为1111;SpringCloudRibbonServi...原创 2018-09-10 14:22:56 · 731 阅读 · 0 评论 -
Spring Cloud Eureka服务注册中心 多节点搭建(学习总结)
一、前言:本文主要搭建Spring Cloud Eureka服务注册中心(多节点), 本文基于SpringBoot 1.5.2,Spring CloudCamden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:二、搭建Eureka-Server首先,引入相应的依赖pom.xml:<?xml version="1.0" encoding="UTF-8"?...原创 2018-09-07 17:35:48 · 17237 阅读 · 16 评论 -
Spring Cloud Eureka服务注册中心 单节点搭建(学习总结)
一、前言:本文主要搭建Spring Cloud Eureka服务注册中心(单节点),不过一般生产环境都是多节点负载均衡,形成一个服务注册中心集群,这样一个注册中心崩了不会影响整个系统的运行以及接口的调用。本文基于SpringBoot 1.5.2,Spring CloudCamden.SR6版本编写,版本不一致可能会有差异。下面就学习总结记录一下:二、新建一个Eureka-Server:...原创 2018-09-07 16:52:23 · 821 阅读 · 0 评论 -
(笔记) SpringCloud之Hystrix断路器 属性详解
Command属性:主要用来控制 HystrixCommand 命令的行为,主要有下面5种类型的属性配置:execution配置 控制HystrixCommand.run() 的如何执行该配置前缀为 hystrix.command.defaultexecution.isolation.strategy :该属性用来设置执行的隔离策略,有如下二个选项: THREAD:通过线程池隔离的策...转载 2018-01-09 10:51:12 · 3996 阅读 · 0 评论 -
SpringCloud 之客户端负载均衡策略
一、负载均衡介绍负载均衡(Load Balance):建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。1、服务端负载均衡:客户端请求到负载均衡服务器,负载均...原创 2017-12-26 11:24:10 · 2532 阅读 · 4 评论 -
Spring Cloud Eureka详解
Spring Cloud Eureka详解一 Eureka服务治理体系1.1 服务治理服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中转载 2017-12-25 16:49:46 · 326 阅读 · 0 评论