![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringCloud
Java全栈研发大联盟
好记性不如烂笔头,好好学
展开
-
拜托!面试请不要再问我Spring Cloud底层原理
概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析...转载 2019-10-17 11:32:07 · 499 阅读 · 0 评论 -
SpringCloud之服务的注册与发现Eureka(Finchley版本)
服务治理在简单介绍了Spring Cloud和微服务架构之后,下面回归本文的主旨内容,如何使用Spring Cloud来实现服务治理。由于Spring Cloud为服务治理做了一层抽象接口,所以在Spring Cloud应用中可以支持多种不同的服务治理框架,比如:Netflix Eureka、Consul、Zookeeper。在Spring Cloud服务治理抽象层的作用下,我们可以无缝地切换...转载 2019-07-06 21:27:22 · 610 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务消费(基础)【Dalston版】
使用LoadBalancerClient在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient、这里我们即将介绍的LoadBalancerClient等。对于这些接口的定义我们在上一篇介绍服务注册与发现时已经说过,Spring Cloud做这一层抽象,很好的解耦了服务治理体系,使得我们可以轻易的替换不同的服务治理设施。从LoadBa...转载 2019-07-06 22:08:55 · 450 阅读 · 0 评论 -
Spring Cloud Sleuth与Zipkin整合时遇到的问题记录
在《spring cloud 微服务实战》第402页-----将spring cloud sleuth的跟踪信息通过消息中间件收集发送到zipkin这一部分,在之前你已经按照第一种方式(http方式)将跟踪信息收集到了zipkin上,现在又跟着书上用消息中间件来收集。紧接着书上说只要对之前的trace-1和trace-2以及zipkin-server这三个项目做一些改造就可以实现,书上分两步来完成...转载 2019-07-18 12:39:10 · 851 阅读 · 0 评论 -
Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】
通过上一篇《分布式服务跟踪(整合logstash)》,我们虽然已经能够利用ELK平台提供的收集、存储、搜索等强大功能,对跟踪信息的管理和使用已经变得非常便利。但是,在ELK平台中的数据分析维度缺少对请求链路中各阶段时间延迟的关注,很多时候我们追溯请求链路的一个原因是为了找出整个调用链路中出现延迟过高的瓶颈源,亦或是为了实现对分布式系统做延迟监控等与时间消耗相关的需求,这时候类似ELK这样的日志分析...转载 2019-07-18 12:40:13 · 590 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务消费(Ribbon)【Dalston版】
我们已经学会如何通过LoadBalancerClient接口来获取某个服务的具体实例,并根据实例信息来发起服务接口消费请求。但是这样的做法需要我们手工的去编写服务选取、链接拼接等繁琐的工作,对于开发人员来说非常的不友好。所以,下来我们看看Spring Cloud中针对客户端负载均衡的工具包:Spring Cloud Ribbon。Spring Cloud RibbonSpring Cloud ...转载 2019-07-07 08:41:28 · 500 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务消费(Feign)【Dalston版】
Spring Cloud FeignSpring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端。它使得编写Web服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定。它具备可插拔的注解支持,包括Feign注解、JAX-RS注解。它也支持可插拔的编码器和解码器。Spring Cloud Feign还扩展了对Spring...转载 2019-07-07 09:07:38 · 535 阅读 · 0 评论 -
Spring Cloud构建微服务架构:分布式服务跟踪(收集原理)【Dalston版】
在本节内容之前,我们已经对如何引入Sleuth跟踪信息和搭建Zipkin服务端分析跟踪延迟的过程做了详细的介绍,相信大家对于Sleuth和Zipkin已经有了一定的感性认识。接下来,我们介绍一下关于Zipkin收集跟踪信息的过程细节,以帮助我们更好地理解Sleuth生产跟踪信息以及输出跟踪信息的整体过程和工作原理。数据模型我们先来看看Zipkin中关于跟踪信息的一些基础概念。由于Zipkin的...转载 2019-07-19 13:38:20 · 437 阅读 · 0 评论 -
Spring Cloud构建微服务架构:消息驱动的微服务(核心概念)【Dalston版】
通过《Spring Cloud构建微服务架构:消息驱动的微服务(入门)》一文,相信大家对Spring Cloud Stream的工作模式已经有了一些基础概念,比如:输入、输出通道的绑定,通道消息事件的监听等。下面在本文中,我们将详细介绍一下Spring Cloud Stream中是如何通过定义一些基础概念来对各种不同的消息中间件做抽象的。下图是官方文档中对于Spring Cloud Stream...转载 2019-07-17 10:41:16 · 505 阅读 · 0 评论 -
Spring Cloud构建微服务架构:消息驱动的微服务(消费组)【Dalston版】
通过之前的《消息驱动的微服务(入门)》一文,相信很多朋友已经对Spring Cloud Stream有了一个初步的认识。但是,对于《消息驱动的微服务(核心概念)》一文中提到的一些核心概念可能还有些迷糊,下面我们将详细的来学习一下这些概念。本文我们就来学习和使用一下“消费组”这一概念。使用消费组实现消息消费的负载均衡通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启...转载 2019-07-17 13:03:29 · 475 阅读 · 0 评论 -
Spring Cloud构建微服务架构:消息驱动的微服务(消费分区)【Dalston版】
通过上一篇《消息驱动的微服务(消费组)》的学习,我们已经能够在多实例环境下,保证同一消息只被一个消费者实例进行接收和处理。但是,对于一些特殊场景,除了要保证单一实例消费之外,还希望那些具备相同特征的消息都能够被同一个实例进行消费。这时候我们就需要对消息进行分区处理。使用消息分区在Spring Cloud Stream中实现消息分区非常简单,我们可以根据消费组示例做一些配置修改就能实现,具体如下...转载 2019-07-17 14:12:22 · 579 阅读 · 0 评论 -
Spring Cloud构建微服务架构:分布式服务跟踪(入门)【Dalston版】
通过之前的N篇博文介绍,实际上我们已经能够通过使用它们搭建起一个基础的微服务架构系统来实现我们的业务需求了。但是,随着业务的发展,我们的系统规模也会变得越来越大,各微服务间的调用关系也变得越来越错综复杂。通常一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一条复杂的分布式服务调用链路,在每条链路中任何一个依赖...转载 2019-07-17 16:17:38 · 483 阅读 · 0 评论 -
Spring Cloud构建微服务架构:分布式服务跟踪(跟踪原理)【Dalston版】
通过上一篇《分布式服务跟踪(入门)》的例子,我们已经通过Spring Cloud Sleuth往微服务应用中添加了实现分布式跟踪具备的基本要素。下面通过本文来详细说说实现分布式服务跟踪的一些要点。分布式系统中的服务跟踪在理论上并不复杂,它主要包括下面两个关键点:为了实现请求跟踪,当请求发送到分布式系统的入口端点时,只需要服务跟踪框架为该请求创建一个唯一的跟踪标识,同时在分布式系统内部流转的时...转载 2019-07-17 16:44:57 · 452 阅读 · 0 评论 -
Spring Cloud Finchley版中Consul多实例注册的问题处理【Finchley版】
由于Spring Cloud对Etcd的支持一直没能从孵化器中出来,所以目前来说大多用户还在使用Eureka和Consul,之前又因为Eureka 2.0不再开源的消息,外加一些博眼球的标题党媒体使得Eureka的用户有所减少,所以,相信在选择Spring Cloud的用户群体中,应该有不少用户会选择Consul来做服务注册与发现。本文就来说一下,当我们使用Spring Cloud最新的Fi...转载 2019-09-11 12:44:01 · 467 阅读 · 0 评论 -
SpringCloud学习系列之四-----配置中心(Config)使用详解
前言本篇主要介绍的是SpringCloud中的分布式配置中心(SpringCloud Config)的相关使用教程。SpringCloud ConfigConfig 介绍Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据...转载 2019-10-08 10:19:02 · 547 阅读 · 0 评论 -
Spring Cloud构建微服务架构:分布式服务跟踪(整合logstash)【Dalston版】
通过之前的入门示例,我们已经为trace-1和trace-2引入了Spring Cloud Sleuth的基础模块spring-cloud-starter-sleuth,实现了为各微服务的日志信息中添加跟踪信息的功能。但是,由于日志文件都离散的存储在各个服务实例的文件系统之上,仅仅通过查看日志文件来分析我们的请求链路依然是一件相当麻烦的差事,所以我们还需要一些工具来帮助我们集中的收集、存储和搜索这...转载 2019-07-18 08:55:34 · 490 阅读 · 0 评论 -
springcloud学习(3)
声明式服务调用SpringCloud Feignfeign介绍Feign客户端是一个web声明式http远程调用工具,提供了接口和注解方式进行调用。环境搭建Maven依赖信息<dependency> <groupId>org.springframework.cloud</groupId> <artifactId&原创 2018-11-30 19:50:37 · 446 阅读 · 0 评论 -
springcloud之Hystrix
1.首先了解一下什么是服务雪崩效应2.看Hystrix能为我们做哪些事情。3.Hystrix是如何解决服务雪崩的呢?答:利用“服务降级”来解决的,在高并发的情况下,防止用户一直等待,使用服务降级方式(返回一个友好的提示直接给客户端,不会去处理请求,调用服务降级之后的fallBack本地方法),目的是为了用户体验。服务熔断:理解成我们家庭的“保险丝”一样,在高并发情况下,如果请求达到一定...原创 2018-12-07 21:19:30 · 436 阅读 · 0 评论 -
springcloud学习(一)
1.搭建euraka注册中心首先新建一个maven projectMaven依赖信息<parent> <groupId>org.springframework.boot</groupI原创 2018-11-27 19:54:53 · 448 阅读 · 0 评论 -
Spring Cloud Feign的文件上传实现
在Spring Cloud封装的Feign中并不直接支持传文件,但可以通过引入Feign的扩展包来实现,本来就来具体说说如何实现。服务提供方(接收文件)服务提供方的实现比较简单,就按Spring MVC的正常实现方式即可,比如:详情参考地址:http://blog.didispace.com/spring-cloud-starter-dalston-2-4/...转载 2019-07-07 20:02:11 · 864 阅读 · 0 评论 -
Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】
在上一篇《服务容错保护(hystrix断路器)》的介绍中,我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的。而这些请求情况的指标信息都是由HystrixCommand和HystrixObservableCommand实例在执行过程中记录的重要度量信息,它们除了Hystrix断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以“滚动时间窗”与“桶”结合的...转载 2019-07-08 14:15:04 · 494 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)【Dalston版】
前言在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元应用间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身问题出现调用故障或延迟,而这些问题会直接导致调用方的对外服务也出现延迟,若此时调用方的请求不断增加,最后就会出现因等待出现故障的依赖方响应而形成任务积压,线程资源无法释放,最终导致自身服务的瘫痪...转载 2019-07-08 11:36:55 · 511 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】
前言在上一篇《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》中,我们已经体验了如何使用@HystrixCommand来为一个依赖资源定义服务降级逻辑。实现方式非常简单,同时对于降级逻辑还能实现一些更加复杂的级联降级等策略。之前对于使用Hystrix来实现服务容错保护时,除了服务降级之外,我们还提到过线程隔离、断路器等功能。那么在本篇中我们就来具体说说线程隔离。...转载 2019-07-08 12:27:18 · 444 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)【Dalston版】
前言在前两篇《Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)》和《Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)》中,我们对Hystrix提供的服务降级和依赖隔离有了基本的认识。下面我们将继续说说Hystrix的另外一个重要元件:断路器。断路器断路器模式源于Martin Fowler的Circuit Breaker一文。“断路器...转载 2019-07-08 12:57:08 · 598 阅读 · 0 评论 -
Spring Cloud构建微服务架构:Hystrix监控数据聚合【Dalston版】
上一篇我们介绍了使用Hystrix Dashboard来展示Hystrix用于熔断的各项度量指标。通过Hystrix Dashboard,我们可以方便的查看服务实例的综合情况,比如:服务调用次数、服务调用延迟等。但是仅通过Hystrix Dashboard我们只能实现对服务单个实例的数据展现,在生产环境我们的服务是肯定需要做高可用的,那么对于多实例的情况,我们就需要将这些度量指标数据进行聚合。下面...转载 2019-07-08 15:41:47 · 621 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务网关(基础)【Dalston版】
通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了。比如下图所示:我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载;通过Spring Cloud Config实现了应用多环境的外部化配置以及版本管理。为了使得服务集群更为健...转载 2019-07-09 14:35:09 · 511 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】
在上一篇《Spring Cloud构建微服务架构:服务网关(基础)》一文中,我们通过使用Spring Cloud Zuul构建了一个基础的API网关服务,同时也演示了Spring Cloud Zuul基于服务的自动路由功能。在本文中,我们将进一步详细地介绍关于Spring Cloud Zuul的路由功能,以帮助读者可以更好的理解和使用它,以完成更复杂的路由配置。传统路由配置所谓的传统路由配置方...转载 2019-07-09 15:19:56 · 537 阅读 · 0 评论 -
Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】
在前两篇文章:服务网关(基础)、服务网关(路由配置)中,我们了解了Spring Cloud Zuul作为网关所具备的最基本功能:路由。本文我们将具体介绍一下Spring Cloud Zuul的另一项核心功能:过滤器。过滤器的作用通过上面所述的两篇我们,我们已经能够实现请求的路由功能,所以我们的微服务应用提供的接口就可以通过统一的API网关入口被客户端访问到了。但是,每个客户端用户请求微服务应用...转载 2019-07-09 16:05:05 · 441 阅读 · 0 评论 -
Spring Cloud Zuul中使用Swagger汇总API接口文档
虽然使用Swagger可以为Spring MVC编写的接口生成了API文档,但是在微服务化之后,这些API文档都离散在各个微服务中,是否有办法将这些接口都整合到一个文档中?之前给大家的回复都只是简单的说了个思路,昨天正好又有人问起,索性就举个例子写成博文供大家参考吧。...转载 2019-07-10 13:35:01 · 983 阅读 · 0 评论 -
Spring Cloud构建微服务架构:消息驱动的微服务(入门)【Dalston版】
之前在写Spring Boot基础教程的时候写过一篇《Spring Boot中使用RabbitMQ》。在该文中,我们通过简单的配置和注解就能实现向RabbitMQ中生产和消费消息。实际上我们使用的对RabbitMQ的starter就是通过Spring Cloud Stream中对RabbitMQ的支持来实现的。下面我们就通过本文来了解一下Spring Cloud Stream。Spring Cl...转载 2019-07-10 16:36:55 · 521 阅读 · 0 评论 -
springcloud学习(2)
1.首先在本地启动zookeeper,然后在打算注册信息到zookeeper上的服务提供者上配置下面的配置信息在zookeeper上注册的服务名与上述服务提供者的application.yml里面配置的有关...原创 2018-11-29 19:00:19 · 439 阅读 · 0 评论