atbus是我按之前的思路写得服务器消息通信中间件,目标是简化服务器通信的流程,能够自动选择最优路线,自动的断线重连和通信通道维护。能够跨平台并且高效

近期优化底层库,完成atapp库的基本功能,顺带优化了一下atbus的一些功能,也是对高效的大幅优化。这次的优化起源于某一次的压力测试,先介绍下压力测试的结果吧。

接上文关于bus通信系统的一些思考(二)

之前的文章内容应该要有修订,但是并没有更新到blog里,而是直接写在了libatbus的文档里

目录

前言

好久没写总结啦,最近一段时间比较忙,抽出的空闲时间都在不断完善之前提到的一个进程间通信lib的想法和实现(libatbus)。

因为这个想法从提出来后实现了共享内存通信的实现后,一直没抽出空来继续后面的内容。而且做得过程中发现,这比之前想象的还是要复杂一些,一个人的空闲时间很难做到非常的完善,只能先有个实现,以后再一点点地改善。毕竟人家TX两个人全职做了两年才能做到一个比较完整的解决方案,而且还不跨平台。我这个虽然有一些非核心的部分使用开源组件,能少很多工作量,但是要做到跨平台并且只是业余时间搞的话还是得慢慢来。

接上文

目录

BUS系统的设计思路

虽然我很不愿意再设计一套BUS系统,但是现有的一些确实都没有特别符合我的口味的。所以还是尝试设计一个出来。

结构设计

简单来说,我希望BUS系统可以简单、高效、稳定。

节点标识

首先,在节点标识方面,类似ZeroMQ的用字符串来标识端点的做法我认为是不必要的。这点上可以参照前面两种的设计,但某些情况下32位作类型分割的可能会不够,所以可以使用64位标识。其实还有一个重要的原因是64位数字可以整个存放在CPU寄存器里,可以通过一个汇编指令进行比较操作,无论性能还是可以表示的节点个数都很足够。

目录

概述

如何保证一个进程或线程能安全稳定地把一段消息发送到另一个进程和线程,甚至是另一台机器的进程或线程,再或是要通过代理转发到另一个进程或线程,一直是一个比较麻烦的问题。

最近看了一些和BUS系统有关的东西。对于游戏服务器集群所使用的BUS通信系统有一些想法和思路,但是由于我对其他类型的业务和框架不是很熟悉,有些想法可能仅是站在游戏服务端的立场上,所以可能有些地方还有一些局限性。