摘要:前言項目中開發(fā)的幾個服務一直使用作為服務器,本人也曾提出過疑問,為什么是,得到的答案是比較,,,的并發(fā)性能最好,而且最為輕量級。的賣點是超高的開發(fā)效率,其性能擴展有限的性能表現(xiàn)前兩天有寫一篇的帖子傳送門使用對鑒權(quán)接口加壓,看的性能表現(xiàn)。
前言
項目中開發(fā)的幾個服務一直使用tornado作為http服務器,本人也曾提出過疑問,為什么是tornado,得到的答案是比較tornado,flask,django,tornado的并發(fā)性能最好,而且最為輕量級。今天好不容易有點空余時間,突然強迫癥發(fā)作,想搞清楚tornado真的并發(fā)比django強嗎?為什么django的中間件的優(yōu)勢就被忽略了呢?
整體思路就是列舉收集到的框架優(yōu)缺點,然后進行驗證,從其他帖子收集到的優(yōu)缺點匯總?cè)缦拢?/p>
Tornado:
優(yōu)點:輕量、異步非阻塞IO處理方式、出色的抗負載能力、協(xié)程帶來優(yōu)異的處理性能
缺點:沒有ORM,提供的支持和模板少,缺少后臺支持,對小型項目來說開發(fā)速度沒有django快
分析:tornado所謂的“缺點”是由它的設計理念決定的,設計上就決定它是一個小而精的http服務器+輕量級web框架,高并發(fā)處理才是它真正擅長的
Django:
優(yōu)點:大而全的框架,全自動化的管理后臺帶來超高的開發(fā)效率,豐富的組件
缺點:厚重,與他自己的ORM高耦合
分析:Django提供的方便,也意味著Django內(nèi)置的ORM跟框架內(nèi)的其他模塊耦合程度高。應用程序必須使用Django內(nèi)置的ORM,否則就不能享受到框架內(nèi)提供的種種基于其ORM的便利;理論上可以切換掉其ORM模塊,但這就相當于要把裝修完畢的房子拆除重新裝修,倒不如一開始就去毛胚房做全新的裝修。Django的賣點是超高的開發(fā)效率,其性能擴展有限
前兩天有寫一篇django的帖子:傳送門
使用jmeter對鑒權(quán)接口加壓,看django的性能表現(xiàn)。
使用的是雙核,8G內(nèi)存的centos機器,200并發(fā)的測試結(jié)果:
tps只有2.6,最大時延到了77s
詳情見我另外一個帖子:傳送門
當然,被測環(huán)境資源完全一致,這里只貼結(jié)果:
最大時延484ms,TPS達到了126
并發(fā)性能差距這么多,當然與django使用默認的sqlite也有關(guān)系,但也一定程度上反應django的orm+模板的機制,在提供豐富功能模板的同時,在性能上也做出了犧牲.不過有帖子貼出的性能對比,django的并發(fā)數(shù)量居然超過了tornado,不知道數(shù)據(jù)是否靠譜.
5. 寫在最后本來還想引入sanic的性能表現(xiàn),但sanic只支持python3.5+版本,手頭的環(huán)境不滿足要求,升級起來比較麻煩,這里先留一個坑,后續(xù)有環(huán)境再測試對比.
看其他帖子的數(shù)據(jù),sanic的 并發(fā)性能可能會超過tornado,待后續(xù)驗證
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42774.html
摘要:百萬量級的產(chǎn)品,扛起來并不費力。當你的網(wǎng)站或者接口有一個用戶訪問時,能在短時間內(nèi)返回,那么,當用戶量達到時,是否能在同樣的時間內(nèi)返回呢這是個問題。對于后端來說,把響應時間控制在合理的范圍之內(nèi)是很重要的。其他的也是類似。 分幾點來答: 1. 首先,這其實是個技術(shù)選型題。 做技術(shù)選型的時候不能單純的考慮性能,應該優(yōu)先考慮業(yè)務類型,以及團隊水平。另外的話,框架只是其中一環(huán),還有配套呢。 如果...
摘要:百萬量級的產(chǎn)品,扛起來并不費力。當你的網(wǎng)站或者接口有一個用戶訪問時,能在短時間內(nèi)返回,那么,當用戶量達到時,是否能在同樣的時間內(nèi)返回呢這是個問題。對于后端來說,把響應時間控制在合理的范圍之內(nèi)是很重要的。其他的也是類似。 分幾點來答: 1. 首先,這其實是個技術(shù)選型題。 做技術(shù)選型的時候不能單純的考慮性能,應該優(yōu)先考慮業(yè)務類型,以及團隊水平。另外的話,框架只是其中一環(huán),還有配套呢。 如果...
摘要:要使用協(xié)議我們不可能自己實現(xiàn)一個,現(xiàn)在比較流行的解決方案就是使用套接字編程,已經(jīng)幫我們實現(xiàn)了協(xié)議的細節(jié),我們可以直接拿來使用不用關(guān)心細節(jié)。 前幾天寫了 淺談cgi、wsgi、uwsgi 與 uWSGI 等一些 python web 開發(fā)中遇到的一些名詞的理解,今天博主就根據(jù) wsgi 標準實現(xiàn)一個 web server,并嘗試用它來跑 Django、tornado 框架的 app。 編...
摘要:數(shù)據(jù)科學項目的完整流程通常是這樣的五步驟需求定義數(shù)據(jù)獲取數(shù)據(jù)治理數(shù)據(jù)分析數(shù)據(jù)可視化一需求定義需求定義是數(shù)據(jù)科學項目和數(shù)據(jù)科學比賽的最大不同之處,在真實情景下,我們往往對目標函數(shù)自變量約束條件都并不清晰。 概述 和那些數(shù)據(jù)科學比賽不同,在真實的數(shù)據(jù)科學中,我們可能更多的時間不是在做算法的開發(fā),而是對需求的定義和數(shù)據(jù)的治理。所以,如何更好的結(jié)合現(xiàn)實業(yè)務,讓數(shù)據(jù)真正產(chǎn)生價值成了一個更有意義的...
閱讀 2480·2021-11-22 15:35
閱讀 3773·2021-11-04 16:14
閱讀 2699·2021-10-20 13:47
閱讀 2510·2021-10-13 09:49
閱讀 2079·2019-08-30 14:09
閱讀 2380·2019-08-26 13:49
閱讀 893·2019-08-26 10:45
閱讀 2785·2019-08-23 17:54