JDK 自带的线程类实现了 Runnable 接口,提供了很多方法来支持对线程的操作,可以获取线程ID,线程名,判断线程是否存活等。
JDK 自带的线程类实现了 Runnable 接口,提供了很多方法来支持对线程的操作,可以获取线程ID,线程名,判断线程是否存活等。
在分布式微服务架构中,特别是跨域访问的情况下,通常会使用 JWT 技术来实现安全认证。
JSON Web Tokens 是一种开放的、行业标准的 RFC7519 规范,用于安全地表示双方之间的声明。
创建多线程方式:继承 Thread 类 和 实现 Runnable 接口
JDK 中已提供了对多线程的支持,可以很方便 实现多线程编程,主要有两种方式:一种是继承 Thread 类,另一种是实现 Runnable 接口。
Spring Cloud(十八):消息驱动-Stream 绑定器实现之 RabbitMQ,Kafka
Spring Cloud Stream 提供了 Rabbit 和 Kafka 的绑定器实现,但 Rabbit 与 Kafka 的实现结构并不完全相同,这两者与 Spring Cloud Stream 提供的绑定器实现的关联概念需要了解清楚。
Spring Cloud Stream Kafka Binder 参考指南,Spring Cloud Stream RabbitMQ Binder 参考指南,Github > spring-cloud-stream-binder-rabbit,Github > spring-cloud-stream-binder-kafka。
Spring Cloud(十七):消息驱动之Spring Cloud Stream 编程模型
本篇主要描述 Spring Cloud Stream 编程模型的三个核心概念:Destination Binders(目标绑定器)、Destination Bindings(目标绑定)、Message(消息),还包含错误处理。
理解这些核心概念,了解具体使用及其背后一些运行机制,可以更好的理解 Spring Cloud Stream 这款组件。
Spring Cloud Stream 官方文档,Spring Cloud Stream Project,Github > Spring Cloud Stream,Github > Spring-Retry。
Spring Cloud(十六):消息驱动-Stream 概念、绑定器、属性
Spring Cloud Stream 是一个用于构建消息驱动的微服务应用的框架。Spring Cloud Stream 构建于Spring Boot之上,用于创建独立的生产级 Spring 应用程序,并使用 Spring Integration 提供与消息代理的连接。
Spring Cloud Stream 还为一些供应商的消息中间件提供了个性化的独立配置实现。还引入了持久化**发布 - 订阅,**消费者组 和 分区 的概念。
Spring Boot 2系列(四十四):集成 Kafka 消息中间件
spring-kafka 为支持 Apache Kafka 提供了自动配置。Spring Boot 集成 Kafka 的配置由 spring.kafka.*
属性控制。
Spring Cloud(十五):消息总线之Spring Cloud Bus
在微服务分布式架构中,通常多个服务需要订阅同一个消息主题来做一些相同的操作,例如配置更新等。对于这类需求,通常会使用轻量级的消息代理来构建一个共用的消息主题,让微服务实例连接上来,该主题中的消息会被所有订阅的实例消费,所以称之为 消息总线。
Spring Cloud Bus 使用轻量级消息代理连接分布式系统的节点。 此代理也可用于广播状态更改(例如:配置更改)或其它和管理指令,也可以用作应用程序之间的通信通道。Spring Cloud Bus 为 AMQP 或 Kafka 作为消息代理提供了 starter 支持。
Spring Boot 2系列(四十三):源码分析 SpringApplication 执行流程
源码分析 SpringApplication 执行流程,深入理解 Spring Boot 应用的启动流程。
本篇分析基于 Spring Boot 2.1.4.RELEASE 版本。
Spring Cloud(十四):Sleuth 分布式跟踪原理分析
Sleuth 通过 traceId 实现了对分布式系统调用链路的跟踪。在一次服务请求链路中,会保持并传递一个 traceId,从而将不同服务的请求跟踪信息串联起来,不同服务的 traceId 相同表示处在同一请求链中。
基于 HTTP 请求的数据传递有两种方式:一种是做为参数传递,另一种是做为头信息传递。而 Sleuth 的 traceId 属于附加信息,不参与实际的业务,所以做为参数传递并不合适,实际也是作为头信息来传递的。