游戏服务端架构:SEDA(有序而高效的流水线架构)

•SEDA(流水线架构)

关于SEDA(Staged Event-Driven Achitecture)阶段事件架构请参阅后文附录。
image

图1
图1是本人入行做游戏之前设计的单线程服务端架构:流水线架构(写本文时了解方知是SEDA)。

通过消息队列(流水线)把接收的所有消息顺序传输到每个阶段的业务线程手里,每个阶段的业务线程仅处理自己关注的消息并把要发送给客户端或发送给下游业务线程的消息压入队列顺流而下,接收的客户端消息会在末段的业务线程中被丢弃,发送的客户端消息则通过末段的业务线程进入发送线程。

最终达到“有序而高效”的高性能目的。

•用SEDA架构游戏服务器

image

图2
众所周知原因,多数游戏的业务线程使用单线程模式是业界首选。

游戏服务器的流水线架构实现如图2:前置线程分摊验证2D/3D移动消息的物理算法等的压力、后置线程分摊分组管理和消息组播等的压力(AOI视野组播、行会队伍组播等),充分释放主业务线程的CPU空间以处理更多的业务逻辑(如技能释放、背包操作等)。

这样即能保证游戏业务原有的有序性和一致性,又能提高单线程模式的业务处理能力。

注:本人暂未将SEDA应用于实战,但SEDA可行性是没有问题的,欢迎一起探讨。

•附录:参考资料

1、Staged Event Driven Architecture (SEDA) 介绍
https://blog.csdn.net/ajian005/article/details/7689589
2、Web Server 架构浅谈-Staged Event-Driven Achitecture(SEDA)
https://blog.csdn.net/pennyliang/article/details/5943534

posted @ 2026-03-01 18:08  码客-ygluu  阅读(17)  评论(0)    收藏  举报