Spring Cloud
欧拉兔
vfrvwr
展开
-
Zuul-统一异常处理
我们详细介绍了Spring Cloud Zuul中自己实现的一些核心过滤器,以及这些过滤器在请求生命周期中的不同作用。我们会发现在这些核心过滤器中并没有实现error阶段的过滤器。那么这些过滤器可以用来做什么呢?接下来,本文将介绍如何利用error过滤器来实现统一的异常处理。过滤器中抛出异常的问题首先,我们可以来看看默认情况下,过滤器中抛出异常Spring Cloud Zuul会发生什么现...原创 2019-06-30 00:23:12 · 999 阅读 · 0 评论 -
Hystrix-Dashboard熔断器的可视化界面
在微服务架构中,为了保证服务实例的可用性,防止服务实例出现故障导致线程阻塞,而出现了熔断器模型,熔断器的状况反应了哟个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是监控Hystrix的熔断器状况的一个组件,提供了数据监控和友好的图形化展示界面。1.添加Hystrix Dashboard依赖<dependency> &...原创 2019-03-24 15:36:55 · 1107 阅读 · 0 评论 -
Spring Cloud Config-分布式配置中心加密解密
在微服务架构中,我们通常都会采用DevOps的组织方式来降低因团队间沟通造成的巨大成本,以加速微服务应用的交付能力。这就使得原本由运维团队控制的线上信息将交由微服务所属组织的成员自行维护,其中将会包括大量的敏感信息,比如:数据库的账户与密码等。很显然,如果我们直接将敏感信息以明文的方式存储于微服务应用的配置文件中是非常危险的。针对这个问题,Spring Cloud Config提供...原创 2019-03-26 23:46:05 · 614 阅读 · 0 评论 -
Hystrix-配置参数详解
1. 概述本文对Hystrix的配置参数的覆盖优先级,可配置参数的种类、配置项进行详细的介绍。Hystrix可以配置属性的有以下类型:Command PropertiesExecution:控制HystrixCommand.run() 的如何执行 Fallback: 控制HystrixCommand.getFallback() 如何执行 Circuit Breaker: ...原创 2019-03-24 01:33:43 · 2917 阅读 · 1 评论 -
Hystrix-资源隔离策略(线程、信号量)
1.为什么要进行资源隔离 比如我们现在有3个业务调用分别是查询订单、查询商品、查询用户,且这三个业务请求都是依赖第三方服务-订单服务、商品服务、用户服务。三个服务均是通过RPC调用。当依赖的订单服务变慢了,而这个时候后续有大量的查询订单请求过来,那么容器中的线程数量则会持续增加直致CPU资源耗尽到100%,整个服务对外不可用,集群环境下就是雪崩。所以,有必要将多个依赖服务的调用分...原创 2019-03-23 22:14:53 · 2569 阅读 · 0 评论 -
构建高可用的Config Server
当服务实例很多时,所有的服务实例需要同时从配置中心Config-Server读取配置文件,这时可以考虑将配置中心Config Server做成一个微服务,并且将其集群化,从而达到高可用。配置中心Config Server高可用的架构图如下图所示。Config Server和Config Client向Eureka Server注册,且将Config Server多实例部署。...原创 2019-03-26 22:14:46 · 338 阅读 · 0 评论 -
Spring Cloud Config-Bus配置刷新
Spring Cloud Bus是用轻量级的消息代理将分布式的节点连接起来,可以用来广播配置文件的更改或者服务的监控管理。一个关键的思想就是,消息总线可以为微服务做监控,也可以实现应用程序之间相互通信。Spring Cloud Bus可选的消息代理组件包括RabbitMQ、AMQP和Kafka等。本节讲述的是用RabbitMQ作为Spring Cloud的消息组件去刷新更改微服务的...原创 2019-03-26 19:48:08 · 372 阅读 · 0 评论 -
Hystrix-工作流程
一. Hystrix的处理流程1.构造HystrixCommand或HystrixObservableCommand对象HystrixCommand command = new HystrixCommand(arg1, arg2); HystrixObservableCommand command = new HystrixObservableCommand(arg1, arg2)...原创 2019-03-23 18:27:11 · 227 阅读 · 0 评论 -
Spring Cloud Config 分布式配置中心使用教程
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。市面上开源的配置中心有很多,BAT每家都出过,360的QConf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心Apache的Apache Commons Configuration、owner、cfg4j等等。在Spring Cloud中,...原创 2019-03-26 18:20:26 · 432 阅读 · 0 评论 -
Sluth-分布式服务跟踪(入门)
随着业务的发展,我们的系统规模也会变得越来越大,各微服务间的调用关系也变得越来越错综复杂。通常一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一条复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟过高或错误的时候都有可能引起请求最后的失败。这时候对于每个请求全链路调用的跟踪就变得越...原创 2019-03-27 13:25:43 · 1462 阅读 · 0 评论 -
Spring Boot-注册中心Eureka的伪分布式部署
Eureka工作机制 Eureka就像开发公司的人事部,人事部维护了公司的通讯录,通过通讯录可以找到每一名员工的联系方式。正如人员在入职和离职时,人事部会更新公司的通讯录一样;当服务上线或者下线时,Eureka都会进行服务的注册和注销的操作。 Eureka分为Server端和Client,包括Eureka Server在内(默认设置)的所有的微服务组件都属于Eureka Client...原创 2019-06-22 01:14:35 · 214 阅读 · 0 评论 -
Zuul-过滤器详解
过滤器 之前我们了解到springcloud zuul包含了对请求的路由和过滤两个功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础;而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验,服务聚合等功能的基础。然而实际上,路由功能在真正运行时,它的路由映射和请求转发都是由几个不同的过滤器完成的。其中,路由映射主要通过pre类...原创 2019-06-29 23:29:15 · 2409 阅读 · 0 评论 -
Spring Cloud Stream-配置选项
Spring Cloud Stream支持常规配置选项以及绑定和绑定器的配置。一些绑定器允许额外的绑定属性来支持中间件特定的功能。可以通过Spring Boot支持的任何机制向Spring Cloud Stream应用程序提供配置选项。这包括应用程序参数,环境变量和YAML或.properties文件。基础配置spring.cloud.stream.instanceCount应用程...原创 2019-06-29 02:39:36 · 6461 阅读 · 0 评论 -
Spring Cloud Stream-编程模型
声明和绑定频道触发绑定@EnableBinding@Input和@Output访问绑定通道生产和消费消息聚合本文介绍Spring Cloud Stream的编程模型。Spring Cloud Stream提供了许多预定义的注释,用于声明绑定的输入和输出通道以及如何收听频道。声明和绑定频道触发绑定@EnableBinding您可以将Spring应用程序转换为S...原创 2019-06-29 02:27:48 · 499 阅读 · 0 评论 -
Spring Cloud Stream-Binders
Binders生产者和消费者Binder SPIBinder检测Classpath上有多个Binders连接到多个系统Binder配置属性实施策略Spring Cloud Stream提供了一个Binder抽象,用于连接到外部中间件的物理目标。本节提供有关Binder SPI,其主要组件和实现特定详细信息背后的主要概念的信息。生产者和消费者甲生产者是将...原创 2019-06-29 02:04:34 · 2612 阅读 · 0 评论 -
Spring Cloud Stream-内容类型和转换
内容类型和转换要允许您传播关于已生成消息的内容类型的信息,默认情况下,Spring Cloud Stream附加contentType标头到出站消息。对于不直接支持头文件的中间件,Spring Cloud Stream提供了自己的自动将邮件包裹在自己的信封中的机制。对于支持头文件的中间件,Spring Cloud Stream应用程序可以从非Spring Cloud Stream应用程序接收具...原创 2019-06-29 01:24:22 · 2017 阅读 · 0 评论 -
Spring Cloud Stream-核心概念
主要概念Spring Cloud Stream提供了许多抽象和原语,简化了消息驱动的微服务应用程序的编写。本节概述了以下内容: Spring Cloud Stream的应用程序模型 Binder抽象 持久的发布 - 订阅支持 消费者群体支持 分区支持 可插拔的Binder API 1.应用模型应用程序通过 inputs 或者 ou...原创 2019-06-28 02:48:48 · 1774 阅读 · 0 评论 -
Spring Cloud Stream-快速入门
快速入门五分钟左右为你展示如何创建一个Spring Cloud Stream的应用程序,它是如何从消息中间件中接收并输出接收的信息到console,这里的消息中间件有两种选择:RabbitMQ和Kafka,本文以RabbitMQ为准这节主要简化官方文档为两步:使用idea新建项目 添加 Message Handler , Building 并运行使用idea新建项目打开项目目录...原创 2019-06-28 00:27:33 · 282 阅读 · 0 评论 -
Zuul-限流(Spring Cloud Zuul RateLimit)
简述Spring Cloud Zuul RateLimit项目Github地址:https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit该包实现了在Zuul对每个服务进行限流。提供的几种限流方式:1. 认证用户(Authenticated User)使用已认证的用户名(username)或'anonymous'...原创 2019-07-01 22:58:02 · 938 阅读 · 0 评论 -
Hystrix介绍
Hystrix介绍在分布式系统中往往存在着大量的服务依赖关系,其中不可避免的会出现部分服务因为发生故障而无法正常提供服务。这时候调用方如果没有对被依赖服务的故障进行有效的隔离,那么可能将当前服务所在容器的资源消耗殆尽,进而引发上一级的服务出现问题,最后有可能导致整个系统发生雪崩效应。为了应对这种情况,我们需要对依赖服务进行降级处理,同时对被依赖服务故障进行隔离。Hystrix是Netfli...原创 2019-03-23 00:48:51 · 231 阅读 · 0 评论 -
Hystrix熔断器的使用
1.在RestTemplate上使用 在之前介绍RestTemplate结合Ribbon实现客户端负载均衡调用服务的基础上进行改造。之前写了通过RestTemplate调用eureka-client1的“/hello”API接口,并用Ribbon做了负载均衡。本文在此基础上加了Hystrix熔断器功能。 首先在pom文件中引用Hystrix的起步依赖spring...原创 2019-03-23 00:12:26 · 393 阅读 · 0 评论 -
Feign-简单使用
Feign 是一个声明式的伪RPC的REST客户端,它用了基于接口的注解方式,很方便的客户端配置。Spring Cloud 给 Feign 添加了支持Spring MVC注解,并整合Ribbon及Eureka进行支持负载均衡。 Feign的使用很简单,有以下几步:添加依赖和配置文件 启动类添加@EnableFeignClients 注解支持 建立Clie...原创 2019-03-21 22:18:40 · 6964 阅读 · 0 评论 -
Zuul-简介
Zuul网关是将一个业务系统内部的多个微服务进行封装,对外提供唯一访问入口,实现系统内高内聚,系统间通过网关交互达到松耦合的效果。它可以和Eureka、Ribbon、Hystrix等组件配合使用,实现身份认证与安全、审查与监控、动态路由、压力测试、负载均衡、流量控制等功能为什么需要Zuul Zuul作为路由网关组件,在微服务架构中有着非常重要的作用,主要体...原创 2019-03-25 20:49:33 · 846 阅读 · 0 评论 -
Eureka-安全配置
之前已经成功的实现了一个 Eureka 的服务启动以及微服务的注册配置操作,但是现在的程序有一个问题,你自己公司的 Eureka 服务应该可以注册的服务只能够是满足于认证要求的微服务,所以这样一来在之前所进行的 Eureka 里面配置缺少关键性的一步:安全认证,所以应该为 Eureka 配置上安全认证处理。注册中心Maven:在之前注册服务pom.xml的文件里...原创 2019-03-20 22:57:11 · 5275 阅读 · 1 评论 -
Ribbon-@LoadBalance+RestTemplate
为什么在RestTemplate加一个@LoadBalance注解就可可以开启负载均衡呢? @LoadBalanced @Bean RestTemplate restTemplate() { return new RestTemplate(); }全局搜索ctr+shift+f @LoadBalanced有哪些类用到了LoadBalanced有哪些类用到了, 发现L...原创 2019-03-20 21:15:45 · 844 阅读 · 0 评论 -
Ribbon详解
简介 Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在...原创 2019-03-20 17:58:15 · 622 阅读 · 0 评论 -
Eureka-服务提供者集群创建
1.Eureka服务注册中心配置文件:server: port: 8761 eureka: instance: hostname: localhost server: enable-self-preservation: false # 关闭自我保护模式(默认为打开) eviction-interval-timer-in-ms: 5000 ...原创 2019-03-20 00:50:18 · 353 阅读 · 0 评论 -
Eureka-实现微服务的调用
1、Eureka的注册中心Maven依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo...原创 2019-03-19 23:19:40 · 2149 阅读 · 0 评论 -
Eureka-搭建
1.搭建Eureka服务端搭建一个简单的Eureka服务端十分容易(搭建高可用的注册中心也不难,Eureka直接支持)。- 第一步:添加Mavan依赖 :加入Spring Boot和Spring Cloud相关依赖,并对应好版本;- 第二步:注解启用类 :在启用类上加入@EnableEurekaServer注解;- 第三步:配置application.yml文件 :修改默认配置,适...原创 2019-03-19 18:51:49 · 352 阅读 · 0 评论 -
Zuul-快速搭建
1.引入依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId></dependency><dependency> &...原创 2019-03-25 16:03:52 · 2893 阅读 · 0 评论 -
Zuul-Cookie与头消息
Zuul的Header设置敏感Header设置同一个系统中各个服务之间通过Headers来共享信息是没啥问题的,但是如果不想Headers中的一些敏感信息随着HTTP转发泄露出去话,需要在路由配置中指定一个忽略Header的清单。默认情况下,Zuul在请求路由时,会过滤HTTP请求头信息中的一些敏感信息,默认的敏感头信息通过zuul.sensitiveHeaders定义,包括Co...原创 2019-03-25 16:57:49 · 1421 阅读 · 0 评论 -
Feign-使用HttpClient和OkHttp
在Feign中,Client是一个非常重要的组件,Feign最终发送Request请求以及接收Response响应都是由Client组件来完成的。Client在Feign源码中是一个接口,在默认情况下,Client的实现类是Client.Default。Client.Default是由HttpURLConnection来实现网络请求的。另外,Client还支持HttpClient和...原创 2019-03-22 15:14:12 · 35449 阅读 · 3 评论 -
Feign-日志设置
1.编写Feign配置类@Configurationpublic class FeignConfig { @Bean public Logger.Level feignLoggerLevel(){ return Logger.Level.FULL; }}NONE :不记录任何日志(默认) BASIC:仅记录请求方法、URL、响应状态代码以...原创 2019-03-22 18:10:06 · 2725 阅读 · 0 评论 -
Feign的继承特性
SpringCloudFeign提供了继承特性,将一些公共操作弄到父接口,可以进一步减少编码量,从而简化开发。编写hello-service-api1.创建一个基础的Maven工程,命名为hello-service-api2.编写pom.xml<?xml version="1.0" encoding="UTF-8"?><project x...原创 2019-03-22 17:47:13 · 782 阅读 · 0 评论 -
Zuul-@EnableZuulServer VS. @EnableZuulProxy
Zuul为我们提供了两个主应用注解: @EnableZuulServer和@EnableZuulProxy,其中@EnableZuulProxy包含@EnableZuulServer的功能,而且还加入了@EnableCircuitBreaker和@EnableDiscoveryClient。当我们需要运行一个没有代理功能的Zuul服务,或者有选择的开关部分代理功能时,那么需要使用 ...原创 2019-03-26 02:34:55 · 528 阅读 · 0 评论 -
Zuul-自定义Filter
自定义过滤器 实现过滤器很简单,只需要继承ZuulFilter,并实现ZuulFilter中的抽象方法。其中filterType()和filterOrder(),以及IZuulFilter的shouldFilter()和Object run()的两个方法。filterType():定义过滤器的类型,它有4种类型,分别是pre、post、routing和error filt...原创 2019-03-26 02:14:40 · 1586 阅读 · 0 评论 -
Zuul-Hystrix和Ribbon支持
在添加Zuul依赖的时候,它本身就包含了对Hystrix和Ribbon模块的依赖,所以Zuul天生就拥有线程隔离和断路器的自我保护功能,以及对服务调用的客户端负载均衡的功能。但是需要注意的是,当使用path和url的映射关系来配置路由规则的时候,对于路由转发的请求不会采用HystrixCommand来包装,所以这类路由请求没有线程隔离和断路器的保护,并且也不会有负载均衡的能力。因此,我们在使用Zu...原创 2019-03-25 23:09:37 · 1066 阅读 · 0 评论 -
Feign-负载均衡Ribbon配置
由于Spring Cloud Feign的客户端负载均衡是通过Spring Cloud Ribbon实现的,所以我们可以直接配置Ribbon客户端的方式来自定义各个服务客户端调用参数。那么我们如何使用Spring Cloud Feign的工程中使用Ribbon的配置呢?全局配置 全局配置的方法非常简单,我们可以直接使用ribbon.<key>=...原创 2019-03-22 16:39:47 · 4211 阅读 · 0 评论 -
Feign-负载均衡实现
FeignAutoConfiguration类配置了Client的类型(包括HttpURLConnection、HttpClient、OkHttp),最终向容器注入的是Client的实现类LoadBalancerFeignClient类中的execute()方法,即执行请求的方法,代码如下: public Response execute(Request request...原创 2019-03-22 15:55:19 · 1642 阅读 · 0 评论 -
Zuul-Http客户端选择
Zuul的Http客户端支持Apache Http、Ribbon的RestClient和OkHttpClient,默认使用Apache HTTP客户端。可以通过下面的方式启用相应的客户端:# 启用Ribbon的RestClientribbon.restclient.enabled=true# 启用OkHttpClientribbon.okhttp.enabled=true如果需要...原创 2019-03-25 21:43:42 · 565 阅读 · 0 评论