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
相關文章
相關標籤/搜索