antframe

An asynchronous non-block TCP server frame.

--- Make service easy !

· View On GitHub

· Download ZIP File

· Download TAR Ball

antframe是asynchronous non-block TCP server frame的缩写,是一款使用C++实现的异步非阻塞式TCP服务端框架。

这里的“异步”有三层含义:其一,从I/O的角度看,antframe应使用异步I/O来减少线程花费在I/O上的时间;其二,从I/O完成结果(事件)通知的方式来看,应采用异步通知以减少线程在主动查询I/O结果上耗费的时间;最后,对于I/O完成结果(事件)的处理,应使用类似Proactor的模式,将事件的处理与通知解耦。

“非阻塞”是指包括I/O在内的,有可能引发阻塞的操作,都要处理成非阻塞。


特性


基本结构


antframe的核心部件是netio,与client的通信工作由它全权负责。netio不关注业务,它会将自己感知到的网络事件,再次打包成业务处理者能理解的“事件”形式,通过队列投递给业务处理者处理。从业务处理者的角度来看,netio就是事件发生器。

这个事件处理者,在antframe中被实现为一个进程(默认为单线程)s,s与netio通过基于共享内存构建的队列进行互通。

下图展示了基于antframe搭建的服务的基本形式。使用者只需对netio和proxy做配置性的改动。对于业务处理,可在插件(动态库)中实现,令s加载。也可推翻s的基本结构,重新实现。不过,沿用s设定的结构,通过override方法来实现定制化开发的方式,可以节省更多的时间。

图中,带颜色的为antframe的原生部件。s及蓝色部件的外部都包裹了一层浅色部分,其用于表示共享内存,这说明它们都是构建于共享内存之上的。三个logic插件为框架使用者实现的业务逻辑。a、b、c三个svr是框架使用者实现的与s分工协作的其它服务进程,这三者可直接沿用s的结构来实现。当然,如果需要对外通信的话,也可以为它们添加netio部件。

当前状态


不断完善中 ... ...

Questions?


任何问题请在此处提交Open an Issue,或联系xushuai@xus.io .