CAS 架构解析

本文深入解析CAS架构,涵盖CAS服务端的职责,如发行ticket进行SSO验证;CAS客户端的角色,如集成CAS协议的应用程序;支持的协议,包括CAS、OAuth 2.0等;以及软件分层结构,强调Web层、ticket子系统和认证子系统。CAS广泛采用Spring框架,尤其是Spring MVC和Webflow,便于扩展和定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CAS 架构解析

下面引用了cas官方的架构图:
在这里插入图片描述
可以看到,主要分为两部分:CAS 客户端,CAS 服务端。通过不同的协议来通信,支持不同的业务场景。

CAS 服务端

CAS 服务端,主要职责是生产发行 ticket,并使用 ticket 来进行认证授权。当用户登录成功时,会创建一个 SSO 的 session ,并向用户颁发 TGT (ticket-granting ticket ,从名字我们就可以看出来,这是一种用来给 ticket 授权的 ticket。)。使用 TGT 作为 token ,通过浏览器重定向,将 ST(service ticket)传递给目标服务。目标服务所在的客户端接收到 ST 后,通过后端通道与 CAS 服务器通信,以验证 ST 有效性。

CAS 客户端

任何集成了 CAS 客户端程序,通过使用 CAS 支持的协议与 CAS 服务器通信的应用程序或平台,都可以称为 CAS 客户端。比如常见的:Confluence,JIRA 。当然不只是这些,你也可以集成到你的应用,是你的应用成为一个客户端。

支持的协议

### Disruptor 架构详解及工作原理 #### 1. 概述 Disruptor 是一个用于线程间通信的高性能异步消息处理框架,旨在提供高效的低延迟消息传递机制。该框架利用环形缓冲区(Ring Buffer)作为核心数据结构来实现高吞吐量的消息交换。 #### 2. 核心概念 ##### 环形缓冲区 (Ring Buffer) 环形缓冲区是 Disruptor 的主要组成部分之一。它由固定大小的槽位组成,这些槽位存储待处理的数据项。当所有可用位置都被填满时,新进入的数据将会覆盖最早插入的那个条目[^3]。 ```java // 创建 RingBuffer 实例 final RingBuffer<MyEvent> ringBuffer = RingBuffer.createSingleProducer( MyEvent::new, bufferSize); ``` ##### 生产者屏障 (ProducerBarrier) 为了确保多生产者的安全性和效率,Disruptor 使用了 ProducerBarrier 来协调各个生产者之间的协作。每个生产者都持有自己的序列号,并尝试通过 CAS 操作获取下一个可写的索引位置。如果成功,则表示获得了对该位置独占访问权;否则继续重试直到成功为止[^4]。 ##### 序列化器 (Sequencer) 负责管理整个事件流顺序的是 Sequencer 组件。它的职责包括跟踪当前已发布但尚未被消费者消费的最大序号、维护等待队列中的最小未完成序号等重要信息。这有助于保持严格的 FIFO 订单并支持多种类型的消费者模式。 #### 3. 工作流程 - **初始化**: 首先创建 RingBuffer 和相应的 Sequence 对象集合。 - **发布事件**: 当有新的事件到来时,调用 `next()` 方法请求一个新的 slot 编号,在此之后可以填充实际的内容到对应的 Event 中去。完成后调用`publish()`提交更改通知给下游处理器。 - **消费事件**: ConsumerGroup 或独立 Consumers 负责监听特定范围内的 Events 更新情况。一旦发现感兴趣的 Entry 出现变化就会触发回调函数执行业务逻辑运算。 #### 4. 性能优化策略 - **无锁算法**: 利用了硬件级别的原子指令如 Compare-and-Swap(CAS),从而减少了传统互斥锁定带来的开销。 - **批量处理**: 尽可能多地一次性读取连续区域上的多个 Entries 数据,减少频繁跨 CPU Cache Line 导致的性能损失。 - **预分配内存池**: 提前准备好足够的空闲对象实例供后续快速复用,避免动态申请释放资源所带来的不确定性影响整体表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值