Firefly的Gevent重要迭代版本alpha0.1.2推出!

 

firefly-gevent 是firefly的gevent版本。相比如今的firefly版本使用的twisted,gevent更加的精简。gevent就是一个基于coroutine的python网络开发框架。协程是一种并发模型,但不一样于thread和callback,它的全部task都是能够在一个线程里面执行,而后能够经过在一个task里面主动放弃执行来切换到另外一个task执行,它的调度是程序级的,不像thread是系统级的调度。Gevent最明显的特征就是它惊人的性能,尤为是当与传统线程解决方案对比的时候。在这一点上,当负载超过必定程度的时候,异步I/O的性能会大大的优于基于独立线程的同步I/O这几乎是常识了。同时Gevent提供了看上去很是像传统的基于线程模型编程的接口,可是在隐藏在下面作的是异步I/O。更妙的是,它使得这一切透明。(此处意思是你能够不用关心其如何实现,Gevent会自动帮你转换)忽略其余因素,Gevent性能是线程方案的4倍左右(在这个测试中对比的是Paste,译者注:这是Python另外一个基于线程的网络库)与单进程多线程模型相比,多进程和协程是更加Scalable的模型。在高并发场景下,采用多进程模型编制的程序更加容易Scale Out,而协程模型可使单机的并发性能大幅提高,达到Scale Up的目的。因此,将来服务器端并发模型的标配估计会是:每一个核一个进程,每一个进程是用协程实现的微线程。在编码方面,多线程模型带来的共享资源加解锁的问题一直是程序员的梦魇。而用多进程模型编程时,会天然鼓励程序员写出避免共享资源的程序,从而提升鲁棒性。而Python目前的协程实现都为非抢占式调度,程序员自行控制协程切换时机,所以也能够避免绝大多数使人头疼的加解锁问题。这些都利于写出更稳定的代码。另外,和一样具备很好并发性能的事件驱动模型相比,用协程实现的微线程,在逻辑表达上很是友好和直白,无须在不知道何时会发生的event和一层套一层的callback中纠结和扭曲(正如Twisted其名)。对于写过多线程程序的程序员而言,协程带来的微线程模型几乎能够实现无痛提升并发性能。
firefly-gevent结合了gevent的性能,封装了网络IO处理、数据库IO读写缓存、分布式进程间接口调用。这样使得游戏服务端的开发变得更加的轻松简单,开发者没必要在面对这些的技术难题,专心致力于游戏玩法逻辑的开发。

<ignore_js_op>
<ignore_js_op>
<ignore_js_op>


github地址:https://github.com/9miao/gfirefly
oschina地址:http://git.oschina.net/9maio/gfirefly
pypi地址:https://pypi.python.org/pypi/gfirefly/0.1.2alpha
相关文章
相关标签/搜索