Spring Cloud
文章平均质量分 91
青藤光年
这个作者很懒,什么都没留下…
展开
-
Spring Cloud系列(二) 应用监控与管理Actuator
前言:要想使用Spring Cloud ,Spring Boot 提供的spring-boot-starter-actuator模块是必须了解的,这篇文章就先介绍一下actuator的使用。 由于我们把一个复杂高耦合的单体系统拆分成了多个小型服务,所以部署应用的数量在不断增长,造成维护复杂度大大提升。所以我们需要一套自动化的监控运维机制,这套运维机制可以不间断的获取每个服务应用的各...原创 2018-06-02 18:21:11 · 18590 阅读 · 3 评论 -
Spring Cloud系列(二十五) Zuul配置Hystrix和Ribbon(Finchley.RC2版本)
Hystrix和Ribbon配置由于Spring Cloud Zuul包含了对Hystrix和Ribbon的依赖,所以Zuul拥有线程隔离和断路器的自我保护功能,以及对客户端的负载均衡能力。但是,需要注意在使用path和url的映射关系来配置路由规则时,对于路由转发的请求不会采用HystrixCommand来包装,所以这类路由请求没有线程隔离和断路器的保护以及负载均衡的能力。所以使用Zuu...原创 2018-09-19 19:17:01 · 6876 阅读 · 0 评论 -
@EnableDiscoveryClient和@EnableEurekaClient的区别
如果你在网上查找Spring Cloud 的资料,会发现有的客户端注解使用@EnableDiscoveryClient注解有的使用@EnableEurekaClient注解,现在来看看二者有什么区别:看一下@EnableEurekaClient的源码/** * Convenience annotation for clients to enable Eureka discovery c...原创 2018-09-19 14:39:59 · 4813 阅读 · 0 评论 -
Spring Cloud系列(二十二) Spring Cloud Feign配置详解(Finchley.RC2版本)
版本说明<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <r原创 2018-09-12 16:17:14 · 6653 阅读 · 1 评论 -
Spring Cloud系列(二十一) Spring Cloud Feign快速入门(Finchley.RC2版本)
前面已经相信介绍了Spring Cloud Ribbon 和 Spring Cloud Hystrix,了解了如何在微服务架构中实现客户端负载均衡的服务调用以及如何通过断路器来保护微服务应用。这两者将被作为基础工具类框架广泛地应用在各个微服务实现中,不仅包括我们自身的业务类微服务,也包括一些基础设施类微服务(比如网关)。而且这两个组件几乎都是同时出现的,那么我们是否可以有更高层次的封装来整合这两个...原创 2018-09-11 15:01:25 · 860 阅读 · 2 评论 -
Spring Cloud系列(二十) Turbine集群监控(Finchley.RC2版本)
通过Turbine可以汇集监控信息,并将聚合后的信息提供给Hystrix Dashboard来集中展示和监控。这里盗个图,当我们使用Turbine和Hystrix Dashboard整合时,系统架构是这样的:Turbine集群监控第一步,创建标准的Spring Boot过程,命名turbine-vFinchley.RC2,勾选如下依赖:此时的pom文件<de...原创 2018-09-10 13:13:12 · 754 阅读 · 0 评论 -
Spring Cloud系列(十九) Hystrix仪表盘(Finchley.RC2版本)
在之前关于Hystrix的介绍中,多次提到了关于请求命令的度量指标的判断。这些度量指标都是HystrixCommand和HystrixObservableCommand实例在执行过程中记录的重要信息,它们除了在Hystrix断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以“滚动时间窗”和“桶”结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix...原创 2018-09-05 13:58:13 · 2615 阅读 · 1 评论 -
Spring Cloud系列(十八) Hystrix配置详解(Finchley.RC2版本)
在之前介绍Hystrix的使用方法时,已经涉及过一下Hystrix属性的配置,我们可以根据实现HystrixCommand的不同方式将配制方法分为如下两类。①通过继承的方式实现,可用Setter对象来对请求命令的属性进行设置,比如下面的例子:public UserCommand() { super(Setter.withGroupKey(HystrixCommandGroupKey.F...原创 2018-09-04 21:28:09 · 4202 阅读 · 0 评论 -
Spring Cloud系列(十七) Hystrix请求合并(Finchley.RC2版本)
微服务架构中的依赖通常通过远程调用实现,而远程调用最常见的问题就是通信消耗与连接数占用。在高并发情况下,因通信次数增多,将出现排队等待与响应延迟的情况。为了优化这两个问题,Hystrix提供了HystrixCollapser来实现请求的合并,以减少通信消耗的线程数的占用。HystrixCollapser实现了在HystrixCommand之前放置一个合并处理器,将处于一个很短的时间窗(默认10...原创 2018-09-04 21:16:36 · 611 阅读 · 0 评论 -
Spring Cloud系列(二十六) Zuul过滤器详解(Finchley.RC2版本)
Zuul核心过滤器通过前两篇对Zuul的介绍,我们对于Zuul的有了一个大概的印象:它包含了对请求的路由和过滤两个功能,其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础;而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。然而实际上,路由功能在真正运行时,它的路由映射和请求转发都是由几个不同的过滤器完成的。其中,路由映射主要通过...转载 2018-09-20 18:29:22 · 1217 阅读 · 0 评论 -
Spring Cloud系列(二十八) Config服务端详解—Finchley版本
在上一篇文章实现了基本结构的配置管理服务端和客户端,同时讲解了一些配置的基本原理。现在总结一下它是如何运作起来的。其中主要包含下面几个要素。远程Git仓库:用来存储配置文件,上一篇文章我存储了应用名为repo的多环境配置文件:repo-{profile}.properties。 Config Server:这是一个分布式配置中心,即config-server-vFinchley.RC2工程,...转载 2018-09-29 15:56:39 · 1247 阅读 · 0 评论 -
集群,分布式,微服务概念和区别理解
转载自:集群,分布式,微服务概念和区别理解概念:集群是个物理形态,分布式是个工作方式。分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上1:分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。举例:就比如新浪网,访问的人多了,他可以做...转载 2019-01-23 11:22:27 · 975 阅读 · 1 评论 -
SpringCloud+SpringBoot+OAuth2+Spring Security+Redis实现的微服务统一认证授权
因为目前做了一个基于Spring Cloud的微服务项目,所以了解到了OAuth2,打算整合一下OAuth2来实现统一授权。关于OAuth是一个关于授权的开放网络标准,目前的版本是2.0,这里我就不多做介绍了。下面贴一下我学习过程中参考的资料。理解OAuth 2.0——阮一峰Spring Security OAuth2 开发指南Spring Security Oauth2 自定义 OA...原创 2018-12-17 16:52:34 · 61572 阅读 · 104 评论 -
Spring Cloud系列(三十三)Zuul网关报错 Load balancer does not have available server for client
1.是否导入了Eureka依赖2.是否添加了上图标注的注解原创 2018-11-20 16:18:40 · 3323 阅读 · 0 评论 -
Spring Cloud系列(三十二)Feign丢失Cookie和Header信息的问题(Finchley.RC2版本)
转载自:feign调用session丢失解决方案当通过Feign调用其他的服务时,Feign是不会带上当前请求的Cookie信息和头信息的,而我们一般都会在Cookie或者请求头里带着一些重要的信息,如cookieid,token等。那么我们怎么将这些信息传递到其他的服务里呢?方式一最傻的办法,在程序中获取,调用其他服务的时候通过参数的方式注入。@RequestMapping(v...原创 2018-11-20 16:14:16 · 10250 阅读 · 9 评论 -
Spring Cloud系列(三十)Config客户端—Finchley版本
URI指定配置中心Spring Cloud Config客户端在启动的时候,默认会从工程的classpath中加载配置信息并启动应用。只有当我们配置spring.cloud.config.uri的时候,客户端才会尝试连接Spring Cloud Config 的服务端来获取远程配置信息并初始化Spring 环境配置。同时,我们必须将该参数配置在bootstrap.properties或者boo...原创 2018-09-30 11:15:36 · 2103 阅读 · 0 评论 -
Spring Cloud系列(二十九)高可用配置中心—Finchley版本
本文转载自:Spring Cloud构建微服务架构(四)分布式配置中心(续)--翟永超传统作法通常在生产环境,Config Server与服务注册中心一样,我们也需要将其扩展为高可用的集群。在之前实现的config-server基础上来实现高可用非常简单,不需要我们为这些服务端做任何额外的配置,只需要遵守一个配置规则:将所有的Config Server都指向同一个Git仓库,这样所有的配置...原创 2018-09-29 16:40:22 · 629 阅读 · 0 评论 -
Spring Cloud系列(三十一) Zuul动态加载—Finchley版本
本文摘自:《Spring Cloud 微服务实战》——翟永超在微服务架构中,由于API网关服务担负着外部访问统一入口的重任,它同其他应用不同,任何关闭和重启应用的操作都会是系统对外停止服务,对于很多7*24小时服务的系统来说,这种请求是不允许的。所以作为最外部的网关,它必须具备动态更新内部逻辑的能力,比如动态修改路由规则、动态添加、删除过滤器等。通过Zuul实现的API网关服务具备了动态路...转载 2018-10-09 15:18:08 · 1092 阅读 · 0 评论 -
通过Zuul网关实现文件上传
在Spring Cloud系列(二十六) Zuul过滤器详解(Finchley.RC2版本)提到了Zuul上传文件的问题。这里整理一下:上传文件含有中文名,需要为上传路径添加 /zuul 前缀(当前版本貌似已经修复,不需要添加 /zuul 前缀也可以) 对于小文件(1M以内)上传无需任何处理,对于大文件(10M以上)上传,需要为上传路径添加 /zuul 前缀,也可以使用 zuul.servl...原创 2018-09-21 13:02:41 · 6165 阅读 · 5 评论 -
Spring Cloud系列(十六) Hystrix请求缓存(Finchley.RC2版本)
Hystrix提供了请求缓存的功能,在高并发的场景下,我们可以方便的开启和使用请求缓存来优化系统,达到减轻高并发时的请求线程消耗、降低请求响应时间的效果。开启请求缓存功能通过继承的方式实现Hystrix请求缓存很简单,只需要在实现HystrixCommand或者HystrixObservableCommand时,重写getCacheKey()方法来开启请求缓存。比如public cl...原创 2018-09-04 21:12:32 · 610 阅读 · 0 评论 -
Spring Cloud系列(十五) Hystrix服务降级、异常处理、线程池划分(Finchley.RC2版本)
服务降级在继承HystrixCommand时,通过重写getFallback()方法来实现服务的降级处理逻辑,当run()执行过程中出现错误、超时、线程池拒绝、断路器熔断等情况时会执行此方法内的逻辑。具体代码在上面可以找到。在继承HystrixObservableCommand时,通过重写resumeWithFallback()方法来实现服务降级逻辑,该方法会返回Observable对...原创 2018-09-01 13:27:26 · 862 阅读 · 0 评论 -
Spring Cloud系列(二十四) 路由详解(Finchley.RC2版本)
传统路由配置传统路由配置就是不需要依赖服务发现机制,通过在配置文件中具体指定每个路由表达式与服务实例的映射关系来实现API网关对外请求的路由。单实例配置通过zuul.routes.<route>.path与zuul.routes.<route>.url的方式进行配置,比如:zuul.routes.api-a.path= /api-a/**zuul.rou...转载 2018-09-18 19:38:06 · 1155 阅读 · 0 评论 -
Spring Cloud系列(五) 修改服务的实例名为ip+端口(Finchley.RC2版本)
在我的这篇文章Eureka配置详解说过,Spring Cloud Eureka 将服务的instanceId默认设置为 ${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}这种默认的方式在实际开发时不是我们想要的,我们需要改成ip...原创 2018-07-11 15:52:18 · 2234 阅读 · 2 评论 -
Spring Cloud系列(四) Eureka配置详解(Finchley.RC2版本)
在Eureka的服务治理体系中,主要分为服务端和客户端两个不同的角色,服务端为服务注册中心,客户端为提供各个接口的微服务应用,这里介绍一下Eureka的配置。Eureka服务端配置在实际应用中,我们所做的配置内容都是对客户端进行的操作,而Eureka服务端更像一个现成的产品,大多数情况下我们不需要修改它的配置。如果你想了解的话,可以去这个类中查看org.springframewor...原创 2018-09-01 16:57:16 · 1138 阅读 · 0 评论 -
Spring Cloud系列(三) 服务注册与发现Spring Cloud Eureka(Finchley.RC2版本)
Spring Cloud Netflix 该项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)...原创 2018-06-14 16:17:19 · 1994 阅读 · 2 评论 -
Spring Cloud系列(一) 介绍
什么是Spring Cloud?Spring Cloud是基于Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式回话和集群状态管理等操作提供了一种简单的开发方式。Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品,以后可能会新增)。这是目前Spr...原创 2018-06-01 17:21:02 · 2620 阅读 · 2 评论 -
微服务架构
什么是微服务?微服务实际上是一种系统架构上的设计风格,它的主旨是将一个复杂独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过RESTFul API进行通信协作。被拆分的各个小型服务都是围绕某一个耦合度较高的功能或者业务中的一个模块来进行构建的。每一个小型服务都维护自身的数据存储,业务开发,测试以及可以独立部署运行。因为微服务之间使用轻量级通信机制,所以各个小型...原创 2018-05-31 15:37:54 · 1091 阅读 · 0 评论 -
Spring Cloud系列(二十三) API网关服务Spring Cloud Zuul(Finchley.RC2版本)
为什么使用Spring Cloud Zuul?通过前几章的介绍,我们对于Spring Cloud Netflix 下的核心组件已经了解了大半,利用这些组件我们已经可以构建一个简单的微服务架构系统,比如通过使用Spring Cloud Eureka实现高可用的服务注册中心以及实现微服务的注册与发现;通过Spring Cloud Ribbon或Feign实现服务间负载均衡的接口调用;同时,为了...转载 2018-09-15 19:14:44 · 849 阅读 · 0 评论 -
Spring Cloud系列(六) 改变Eureka server中注册服务的健康检测方式(Finchley.RC2版本)
默认情况下,Eureka的健康检测并不是通过actuator的health端点来实现的,而是依靠客户端心跳的方式来保持服务实例的存活。在Eureka的服务续约和剔除机制下,客户端的健康状态从注册到注册中心开始会一直处于UP状态,除非心跳终止一段时间后,服务注册中心将其剔除。默认的心跳的方式可以有效检查客户端进程是否正常运行,但无法有效检查客户端是否可以正常提供服务,比如大多数微服务应用都会有一些其...原创 2018-07-17 17:59:46 · 1247 阅读 · 0 评论 -
Spring Cloud系列(七) RestTemplate详解(Finchley.RC2版本)
GET请求在RestTemplate中对GET请求可以通过如下两种方式实现。第一种,getForEntity方法。该方法返回的是ResponseEntity,该对象是Spring对Http请求响应的封装。其中主要存储了HTTP的几个重要元素,比如HTTP请求状态码的枚举对象HttpStatus(我们常说的404,500)、在他的父类HttpEntity中还存储着HTTP请求的头信息对象...原创 2018-08-08 20:33:04 · 1361 阅读 · 2 评论 -
Spring Cloud系列(二十七) 分布式配置中心Spring Cloud Config—Finchley版本
Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源...转载 2018-09-25 18:33:44 · 678 阅读 · 0 评论 -
Spring Cloud系列(十四) Hystrix命令执行方式使用详解(Finchley.RC2版本)
Hystrix命令就是我们之前说的HystrixCommand,它用来封装具体的依赖服务调用逻辑。看一下@HystrixCommand注解的源码/** * 用于标记使用Hystrix命令模式执行的方法 */@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documented...原创 2018-08-29 18:05:54 · 1003 阅读 · 0 评论 -
Spring Cloud系列(十三) Hystrix实现原理(Finchley.RC2版本)
摘要: 原创出处 http://www.iocoder.cn/Hystrix/circuit-breaker/ 「芋道源码」欢迎转载,保留摘要,谢谢!断路器概述HystrixCircuitBreaker存在三种状态:CLOSED :关闭OPEN :打开HALF_OPEN :半开当断路器处于OPEN状态时,链路处于非健康状态,命令执行时,直接调用回退逻辑,跳过正常逻辑。Hys...转载 2018-08-29 11:41:28 · 815 阅读 · 0 评论 -
Spring Cloud系列(十二) Hystrix工作流程分析(Finchley.RC2版本)
通过Netflix Hystrix官方公布的流程图,我们来了解一下Hystrix的工作流程。1.创建HystrixCommand对象或者HystrixObservableCommand对象首先创建一个HystrixCommand对象或者HystrixObservableCommand对象用来表示对依赖服务的操作请求,同时传递所有需要的参数,它采用了命令模式来实现对服务调用操作的封装,这...原创 2018-08-28 19:36:06 · 618 阅读 · 0 评论 -
Spring Cloud系列(十一) Hystrix快速入门 (Finchley.RC2版本)
为什么要用断路器?在微服务架构中,我们将系统拆分成了很多个服务单元,这些单元通过在服务注册中心注册与订阅互相依赖。这就可能造成一个问题,如果出现网络延迟或者依赖的服务出现问题,会直接导致调用方的对外服务也出现延迟,最终会导致调用任务不断积压导致系统崩溃。为了解决这个问题,产生了断路器等一系列的的服务保护机制。断路器的作用就是在分布式系统中,当某个服务单元出现故障时,通过断路器的故障监控...原创 2018-08-28 18:27:53 · 501 阅读 · 0 评论 -
Spring Cloud系列(十) Spring Cloud Ribbon配置 (Finchley.RC2版本)
再引入Spring Cloud Ribbon组件的时候会自动化构建下面这些接口的实现。针对一些个性化设置需求,我们可以方便替换上述实现。只需要在Spring Boot应用中创建对应的实现就能覆盖默认的配置实现。如下:根据属性文件配置Ribbon配置属性的格式如下:<clientName>.<nameSpace>.<propertyName&g...转载 2018-08-20 19:30:36 · 1298 阅读 · 0 评论 -
Spring Cloud系列(九) Spring Cloud Ribbon负载均衡器和负载均衡策略(Finchley.RC2版本)
上一篇我们了解了虽然在Spring Cloud 中定义了LoadBalancerClient作为负载均衡器的通用接口,并且针对Ribbon实现了RibbonLoadBalancerClient,但是它在具体实现客户端负载均衡的时候还是通过Ribbon的ILoadBalancer接口实现的,现在我们逐个了解ILoadBalancer接口的实现类。负载均衡器AbstractLoadBala...原创 2018-08-20 18:43:01 · 913 阅读 · 0 评论 -
Spring Cloud系列(八) 客户端负载均衡Spring Cloud Ribbon原理解析(Finchley.RC2版本)
Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过 Spring Cloud的封装,可以让我们轻松的将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,它几乎存在于每一个Spring Clo...原创 2018-08-10 18:37:22 · 815 阅读 · 0 评论 -
springcloud上传文件报错
Spring Cloud上传文件报如下错误:The temporary upload location [/tmp/tomcat.5260880110861696164.8090/work/Tomcat/localhost/ROOT] is not valid解决办法:在Zuul网关添加如下配置:spring.servlet.multipart.max-file-size=2MB...原创 2019-05-13 12:43:19 · 1077 阅读 · 0 评论