并发

disruptor

1.概述

LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。

Disruptor它是一个开源的并发框架,并获得2011 Duke's 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。

Disruptor主要还是作用于单个进程中的队列解决方案,不适用于分布式系统中的消息队列方案

disruptor对于处理并发任务很擅长,曾有人测过,一个线程里1s内可以处理六百万个订单,性能相当感人。

这个框架的结构大概是:数据生产端 –> 缓存 –> 消费端

缓存中的数据是主动发给消费端的,而不是像一般的生产者消费者模式那样,消费端去缓存中取数据。

可以将disruptor理解为,基于事件驱动的高效队列、轻量级的JMS

disruptor学习网站:http://ifeve.com/disruptor-getting-started

2.开发流程

  1. 建Event类(数据对象)
  2. 建立一个生产数据的工厂类,EventFactory,用于生产数据;
  3. 监听事件类(处理Event数据)
  4. 实例化Disruptor,配置参数,绑定事件;
  5. 建存放数据的核心 RingBuffer,生产的数据放入 RungBuffer。

kilim

源码:https://github.com/kilim/kilim

Kilim 是一个Java 协程和消息传递框架,核心特性包括:

  1. 基于字节码增强的轻量级协程(Task)。
  2. 支持无阻塞 I/O与Mailbox消息传递。
  3. 单线程即可管理数十万协程,避免了线程上下文切换开销。
  4. 与现有 Java 生态兼容(可嵌入 Spring Boot)。

相比传统线程,Kilim 的任务切换几乎无损耗,适合构建高并发服务。

Kilim 是一个强大的 Java 协程框架,通过字节码操纵技术实现了轻量级的用户态协程。 在高并发、低延迟的应用场景下,Kilim 提供了一种优雅的编程模型,使得开发者能够更加方便地编写高效且可读性强的异步代码。 尽管 Kilim 在一些特定场景下表现出色,但在选择使用之前,仍需根据实际应用需求和团队经验权衡其优劣。

  1. Kilim 协程相比 Java 原生线程更轻量,适合高并发应用。
  2. 与 Spring Boot 集成非常自然,只需配置字节码增强和依赖即可。
  3. 通过Task和Mailbox,可以构建轻量级并发和消息驱动系统。

如果你正面临高并发压力,Kilim 或许是比 Reactor / RxJava 更加简洁的选择。

事件驱动-Spring Integration

在复杂的企业应用中,系统往往需要处理各种 消息交互、异步任务、事件驱动流程。如果直接使用 MQ 或手写线程池,代码会变得复杂且难以维护。

Spring Integration 提供了一套基于 企业集成模式(EIP, Enterprise Integration Patterns) 的框架,能够帮助我们快速实现 消息驱动的架构,并且与 Spring Boot 无缝集成。

Integration是一个轻量级 ESB(企业服务总线),但完全基于 Spring IoC 容器和注解配置。

  • 消息路由(Message Routing)
  • 消息转换(Message Transformation)
  • 消息过滤(Message Filtering)
  • 异步任务处理(Task Executors)
  • 外部系统集成(MQ、HTTP、FTP、Email 等)

Akka

在 Java 生态中,Akka 是一个非常成熟的 Actor 模型并发框架,它天然支持消息驱动、并行计算、容错和分布式集群。

Akka 是一个基于 Actor 模型 的并发框架。

  • Actor 是最小的并发单元;
  • 每个 Actor 只负责自己的任务;
  • 通过异步消息通信,而不是共享内存;
  • 框架负责调度、容错、并行、负载均衡。

可以理解为: "每个 Actor 就像一个独立的微服务,只处理它收到的消息"。

特性

  • Actor 模型: Akka 基于 Actor 模型,每个 Actor 是一个独立的计算单元,通过消息传递进行通信。
  • 高并发: Akka 提供了高效的并发处理机制,能够轻松处理大量并发请求。
  • 分布式: Akka 支持分布式计算,可以在多个节点上运行 Actor,并且提供了透明的远程通信机制。
  • 容错: Akka 提供了监督机制,能够监控和恢复失败的 Actor,确保系统的稳定性。
  • 事件驱动: Akka 是事件驱动的,能够高效地处理异步事件。
  • 持久化: Akka 提供了持久化机制,能够将 Actor 的状态持久化到磁盘,确保在系统崩溃后能够恢复状态。

架构:Akka 的核心架构基于 Actor 模型,主要包括以下组件:

  • ActorSystem: ActorSystem 是 Akka 的核心组件,负责创建和管理 Actor。每个 Akka 应用程序都有一个或多个 ActorSystem。
  • Actor: Actor 是 Akka 的基本计算单元,每个 Actor 都有一个邮箱,用于接收消息。Actor 之间通过消息传递进行通信。
  • Dispatcher: Dispatcher 负责调度 Actor 的执行,决定哪个 Actor 在哪个线程上运行。
  • Supervisor: Supervisor 负责监控 Actor 的状态,并在 Actor 失败时采取相应的恢复措施。
  • Router: Router 用于将消息路由到多个 Actor,支持多种路由策略,如轮询、随机等。

应用场景

  • 高并发应用: 如实时数据处理、消息队列、聊天系统等。
  • 分布式系统: 如微服务架构、分布式计算、集群管理等。
  • 容错系统: 如金融交易系统、电信系统等需要高可靠性的系统。

文章信息

张雪随笔
master
Homepage
Issues
Download

This Software is under the terms of The Unlicense.