Spring Cloud(十五):消息总线之Spring Cloud Bus

在微服务分布式架构中,通常多个服务需要订阅同一个消息主题来做一些相同的操作,例如配置更新等。对于这类需求,通常会使用轻量级的消息代理来构建一个共用的消息主题,让微服务实例连接上来,该主题中的消息会被所有订阅的实例消费,所以称之为 消息总线

Spring Cloud Bus 使用轻量级消息代理连接分布式系统的节点。 此代理也可用于广播状态更改(例如:配置更改)或其它和管理指令,也可以用作应用程序之间的通信通道。Spring Cloud Bus 为 AMQP 或 Kafka 作为消息代理提供了 starter 支持。

Spring Cloud Bus 官方文档GitHub > Spring Cloud Bus

阅读更多

Spring Cloud(十四):Sleuth 分布式跟踪原理分析

Sleuth 通过 traceId 实现了对分布式系统调用链路的跟踪。在一次服务请求链路中,会保持并传递一个 traceId,从而将不同服务的请求跟踪信息串联起来,不同服务的 traceId 相同表示处在同一请求链中。

基于 HTTP 请求的数据传递有两种方式:一种是做为参数传递,另一种是做为头信息传递。而 Sleuth 的 traceId 属于附加信息,不参与实际的业务,所以做为参数传递并不合适,实际也是作为头信息来传递的。

阅读更多

Spring Boot 2系列(四十二):源码分析自动配置之编码过滤器

  在 SSM 框架中,通常会在 web.xml 中配置编码过滤器 CharacterEncodingFilter,但在 Spring Boot 应用中却没有要求人为配置编码过滤器,是因为 Spring Boot 基于 习惯优于配置 的原则,默认情况下自动配置了编码过滤器,采用的 UTF-8 编码。

  本篇分析 Spring Boot 的编码过滤器的自动配置,也更详细的理解和体会 Spring Boot 自动配置的使用。

阅读更多

Spring Boot 2系列(四十一):源码分析自动配置实现及手写自动配置

  Spring Boot 的一大特性是基于 习惯优与配置 原则为很多组件提供了 自动配置 ,这个强大的特性可以快速将其它功能整合,个人认为这是促成该框架流行的主要原因,特别适合互联网项目的分布式开发(基于业务的单一职责原则),开发可以将更多精力集中在业务上,而不是配置上。

阅读更多

Spring Boot 2系列(四十):源码分析启动类上 @SpringBootApplication 注解

  Spring Boot 都会有一个名为 xxxApplication 的启动类,里面有一个标准的 java 应用的入口 main 方法,用于启动 Spring Boot 应用项目。

  @SpringBootApplication 是 Spring Boot 的核心注解,作用在 xxxApplication 的启动类上,SpringBoot 会自动扫描 @SpringBootApplication 所在类的同级包及下级包里的所有 Bean 。

  通过 Spring Initializr 或 IDE 支持创建的 Spring Boot 应用的在 groupId + arctifactID 组合的包名下会创建一个 xxxApplication 启动类。

阅读更多