SpringCloud
文章平均质量分 95
老周聊架构
微信公众号:老周聊架构
展开
-
Spring Cloud Gateway 源码剖析之Filter Chain过滤器链
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言前几篇我们讲了 Gateway 相应的初始化、路由相关模型以及 Predicate 谓词详解,这一篇我们再来讲一下 Filter Chain 过滤器链,讲完这一篇,相信你对 Gateway 源码整体设计思想有个深刻的体会了,后续你想去抠细节也不是什么难事了。前几篇可以回顾下:Spring Cloud Gateway 源码剖析之配置初始化Spring Clo.原创 2021-04-06 00:10:20 · 5348 阅读 · 12 评论 -
Spring Cloud Gateway 源码剖析之Predicate谓词详解
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言我们上一篇Spring Cloud Gateway 源码剖析之Route数据模型中讲到了 Route 数据模型,其中有 Predicate 属性。这一篇我们就来讲一讲 Predicate 谓词相关源码。Predicate 对象是由 RoutePredicateFactory 工厂类创建,那我们就来看下 RoutePredicateFactory 是如何创建.原创 2021-04-03 23:58:58 · 2661 阅读 · 21 评论 -
Spring Cloud Gateway 源码剖析之Route数据模型
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言我们上一篇讲了:Spring Cloud Gateway 源码剖析之配置初始化,通过自动加载初始化六个配置实例,Spring Cloud Gateway 就完成自身的加载和初始化工作。我们知道 Gateway 的核心是路由加过滤,既然网关相关初始化工作做好了,那得开始路由相关的工作了。接下来我们就来分析下平时在 properties 或者 yml 中配置的有.原创 2021-04-02 01:06:02 · 1956 阅读 · 11 评论 -
Spring Cloud Gateway 源码剖析之配置初始化
欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言相信大多数公司都会有自己公司的专有网关服务,虽说是自研,但很少会有从零开始开发一个网关服务,基本上是基于市面上比较流行的网关组件像 Zuul、Gateway、Soul 等进行二次封装的。那如果自己公司有相应的网关业务需求的话,这就要对网关产品的底层原理要比较熟悉了,这样做起来也比较顺手。本系列只针对 Gateway 组件进行源码剖析,我在想第一篇如何说会比较好.原创 2021-03-31 00:50:08 · 1102 阅读 · 2 评论 -
Spring Cloud 学习系列:(十五)微服务跟踪链——Spring Cloud Sleuth
一、简介Spring Cloud Sleuth 为 Spring Cloud 提供了分布式跟踪的解决方案,它大量借用了 Google Dapper、Twitter Zipkin 和 Apache HTrace 的设计。先来了解一下 Sleuth的术语,Sleuth借用了 Dapper的术语。Span:基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,...原创 2019-12-13 00:13:04 · 311 阅读 · 0 评论 -
Spring Cloud 学习系列:(十四)消息总线自动刷新配置——Spring Cloud Bus
一、前言我们在 Git仓库上改了配置,重新访问http://localhost:8889/hi,发现还是 foo dev version 27,说明配置尚未刷新。发送 POST 请求到 http://localhost:8889/refresh,例如: curl -X POST http://localhost:8889/refresh,再次请求 http://localhost:8889/...原创 2019-12-09 22:36:20 · 312 阅读 · 0 评论 -
Spring Cloud 学习系列:(十三)高可用的分布式配置中心——Spring Cloud Config
一、前言上一篇文章讲了一个服务如何去配置中心读取文件,配置中心如何去远端 git 读取配置文件,构建了是单节点的 Config Server。当服务实例很多时,都从配置中心读取文件,这时可以考虑配置中心集群,从而达到高可用。Spring Cloud Config 高可用的架构图如下:二、准备工作1、将上一篇的代码复制一份修改一下,创建一个 microservice-eureka-serv...原创 2019-11-05 22:53:58 · 265 阅读 · 0 评论 -
Spring Cloud 学习系列:(十二)分布式配置中心——Spring Cloud Config
一、前言对于我们传统的单体应用,常使用配置文件管理所有配置。例如,一个 Spring Boot 开发的单体应用。可将配置内容放在 application.yml 文件中。如果需要切换环境,可设置多个 Profile,并在启动应用时指定 spring.profiles.active={profile}。然而,在微服务架构中,微服务的配置管理一般有以下需求:集中管理配置。一个微服务架构的应用系...原创 2019-11-05 00:26:13 · 255 阅读 · 0 评论 -
Spring Cloud 学习系列:(十一)微服务网关——Zuul
一、Zuul 简介Zuul 是 Netflix 开源的微服务网关,它可以和 Eureka、Ribbon、Hystrix 等组件配合使用。Zuul 的核心是一系列的过滤器,这些过滤器都可以完成以下功能。身份认证与安全:识别每个资源的验证请求,并拒绝那些与要求不符的请求。审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。动态路由:动态地将请求路由到不同的后端集群。压...原创 2019-10-19 17:23:57 · 424 阅读 · 0 评论 -
Spring Cloud 学习系列:(十)使用 Turbine 聚合监控数据
一、前言上一篇我们使用到 /hystrix.stream 端点监控单个微服务实例。然而,使用微服架构的应用系统一般会包含若干个微服务,每个微服务通常都会部署多个实例。如果每次只能查看单个实例的监控数据,就必须在 Hystrix Dashboard 上切换想要监控的地址,这显然不方便,那如何解决呢?二、Turbine 简介Turbine 是一个聚合 Hystrix 监控数据的工具,它可将所有相...原创 2019-10-17 23:46:30 · 494 阅读 · 0 评论 -
Spring Cloud 学习系列:(九)使用 Hystrix Dashboard 可视化监控数据
一、前言除了上一篇我们讲的 Hystrix 实现容错处理外,Hystrix 还提供了近乎实时的监控——Hystrix Dashboard 。我们可以直观的看出 Hystrix Command 的请求响应时间, 请求成功率等数据,这些监控数据对分析应用系统的状态很有用。二、案例演示我们在上一篇的项目 microservice-eureka-feign-hystrix 的基础上修改,重新命名为:...原创 2019-10-14 23:48:30 · 640 阅读 · 0 评论 -
Spring Cloud 学习系列:(八)断路器——Hystrix
一、前言到目前为止,我们前面已用 Eureka 实现了微服务的注册与发现,Ribbon 实现了客户端侧的负载均衡,Feign 实现了声明式 RESTful 风格的服务调用。本章我们来讲述使用 Hystrix 实现微服务的断路器,即微服务的容错处理。首先,我们来考虑下这个问题:如果服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到提供者响应或超时,在高负载的情况下,如果不做任...原创 2019-10-08 18:46:06 · 337 阅读 · 0 评论 -
Spring Cloud 学习系列:(七)实现声明式 RESTful 风格服务调用——Feign
一、前言上一篇文章我们讲到了RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign 去消费服务。前文的 RestTemplate 实现 REST API 调用,大致代码如下:public String hiService(String name) { return restTemplate.getForObject("http://microservice...原创 2019-10-07 16:37:50 · 656 阅读 · 0 评论 -
Spring Cloud 学习系列:(六)自定义 Ribbon 配置实现负载均衡
一、前言上一篇我们讲到 Ribbon 实现负载均衡,请求会均匀分布到两个微服务节点上;现在我们要实现其它的算法来实现负载均衡怎么办呢?接下来我们就来讲下自定义 Ribbon 配置实现负载均衡。二、两种不同方式实现1、Java 代码自定义 Ribbon 配置在 Spring Cloud 中,Ribbon 的默认配置如下(格式是BeanType beanName: ClassName):I...原创 2019-10-06 16:40:11 · 475 阅读 · 0 评论 -
Spring Cloud 学习系列:(五)实现客户端侧负载均衡——Ribbon
一、前言经过前几篇的讲解,我们实现了微服务的注册与发现。启动各个微服务时,Eureka Client 会把自己的网络信息注册到 Eureka Server上。然而,这样的架构依然会有些问题,比如负载均衡。一般来说,在生产环境中,各个微服务都会部署多个实例。那么服务消费者要如何将请求分摊到各个服务提供者实例上呢?下面我们就来介绍实现客户端侧负载均衡——Ribbon。二、Ribbon 简介Rib...原创 2019-10-06 00:13:35 · 339 阅读 · 0 评论 -
Spring Cloud 学习系列:(四)为 Eureka Server 添加用户认证
在前面的示例中,Eureka Server 是允许匿名访问的,这篇我们来构建一个需要登录才能访问的 Eureka Server。1、复制上一篇的项目 microservice-eureka,将 artifactId 修改为 microservice-eureka-authenticating。2、在 pom.xml 中添加 spring-boot-starter-security 的依赖,该依...原创 2019-10-04 03:10:24 · 355 阅读 · 0 评论 -
Spring Cloud 学习系列:(三)Eureka Server 的高可用
一、前言相信大家有分布式开发经验的小伙伴应该能够看出,上一篇讲的单节点 Eureka Server 并不适合线上的生产环境。Eureka Client 会定时连接 Eureka Server,获取服务注册中的信息并缓存在本地。微服务在消费远程API时总是使用本地缓存的数据。因此一般来说,即使 Eureka Server 发生宕机,也不会影响服务之间的调用。但如果 Eureka Server 宕机...原创 2019-10-04 01:32:13 · 315 阅读 · 0 评论 -
Spring Cloud 学习系列:(二)微服务的注册与发现——Eureka
一、Eureka 简介Eureka 是 Netflix 开源的服务发现组件,本身是一个基于 REST 的服务。它包含 Server 和 Client 两部分。Spring Cloud 将它集成在子项目 Spring Cloud Netflix 中,从而实现微服务的注册与发现。二、Eureka 原理在分析 Eureka 的原理之前,先来看下架构图,如下图所示:(由于图片上传失败,后续补)图...原创 2019-10-01 21:20:25 · 389 阅读 · 0 评论 -
Spring Cloud 学习系列:(一)微服务开发框架——Spring Cloud
一、Spring Cloud 简介Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成。Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由...原创 2019-09-26 23:52:15 · 584 阅读 · 0 评论