基于Disruptor游戏服务器消息总线的设计

简介: 基于Disruptor游戏服务器消息总线的设计

LMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单,用1微秒的延迟获得吞吐量为100K+. 业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(event sourcing). 业务逻辑处理器的核心是Disruptors。Disruptor是一个高性能低延迟的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disruptor模式。

 

一款ARPG游戏,它的服务器设计是按照多线程处理业务,分为个人初始化业务(init bus),个人常用业务(cache bus),场景(stage),公共业务(public)等,根据投递到业务线程的消息来源不同,可以分为 客户端触发(nioEventLoopGroup-X-Y),异步事件触发(async-event-X),别的业务线程触发(内部指令和事件分发),定时调度触发(gameScheduler-X),线程之间会无时无刻频繁地进行消息的生产和消费,JMS消息总线的效率对服务器的性能影响是全方位的,一款高性能低延迟的框架是我们游戏业务的基础保障。

 

我们原先的设计是基于LinkedBlockingQueue进行投递的,生产和消费都用到了锁,生产用的是putLock(ReentrantLock),消费是takeLock(ReentrantLock)。替换成Disruptor后,生产时锁消失(实际情况是

目录
相关文章
|
5月前
|
消息中间件 Dubbo Java
Spring全家桶 、Dubbo、分布式、消息队列后端必备全套开源项目
基于 Spring Boot 2.X 版本的深度入门教程。 市面上的 Spring Boot 基础入门文章很多,但是深度入门文章却很少。对于很多开发者来说,入门即是其对某个技术栈的最终理解,一方面是开发者“比较懒”,另一方面是文章作者把 Spring Boot 入门写的太浅,又或者不够全面。
|
消息中间件 存储 缓存
RocketMQ工作原理详解及开发实例
RocketMQ工作原理详解及开发实例
667 0
|
5月前
|
消息中间件 人工智能 Java
Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动
Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动
130 1
|
5月前
|
消息中间件 存储 Cloud Native
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
【Spring云原生系列】Spring RabbitMQ:异步处理机制的基础--消息队列 原理讲解+使用教程
|
消息中间件 微服务
《微服务实战》 第十五章 RabbitMQ 延迟队列
《微服务实战》 第十五章 RabbitMQ 延迟队列
156 0
|
消息中间件 Java 中间件
【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析
【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析
279 0
【Alibaba中间件技术系列】「RocketMQ技术专题」带你一起去探索RocketMQ服务架构的线程模型分析
|
消息中间件 存储 缓存
【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析
【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析
191 2
【Alibaba中间件技术系列】「RocketMQ技术专题」系统服务底层原理以及高性能存储设计分析
|
消息中间件 存储 网络协议
【事件驱动架构】 全面了解Kafka和RabbitMQ选型(1) -两种不同的消息传递方式
【事件驱动架构】 全面了解Kafka和RabbitMQ选型(1) -两种不同的消息传递方式
下一篇
无影云桌面