Python開發後端的速度很快,但是總有一天會為直譯語言的效能付出代價? 淺談Django高並發處理

閱讀時間約 4 分鐘
你知道IG是用Django開發的嗎?
raw-image

正在學習或使用Django、Flask框架開發後端的你,是否也常在享受Python語法的舒適之餘,仍然煩惱著是否該學習效率更好的Go或Laravel。


Django基本部署架構圖

Django基本部署架構圖

由於 Django 是同步阻塞型框架,在基本部署架構下,同一時間只能處理一個請求。隨著使用者增加,系統確實必須考慮如何確保能夠有效處理同時到來的大量請求。

然而,解決高並發問題並不一定需要更換開發語言或框架作為首要方案。

提升高並發處理能力

  • 充分利用CPU與Memory - 增加Process/Thread
raw-image

透過uwsgi的workers參數,增加UWSGI的process數目。

uwsgi --workers 3 --socket :$UWSGI_PORT --module $UWSGI_MODULE_FILE --daemonize=/dev/null

除了增加process數目之外,還可以進一步增加thread數目,例如使用gevent。

uwsgi --workers 3 --gevent 100 --socket :$UWSGI_PORT --module $UWSGI_MODULE_FILE --daemonize /dev/null


  • 減少直接讀取資料庫 - 使用Cache
raw-image
# 安裝django redis
pip install django-redis
# 修改setting.py
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PASSWORD": "your_redis_password", # 如果Redis服务器有設定密碼
}
}
}


  • 水平擴展 - WEB APP Server
raw-image

以部署在AWS為例,假如高並發的數量繼續增加,我們可以開始將NGINX、WEB APP Server(UWSGI+Django)、DB Server(Redis+Posgres or MySql)拆分至不同的EC2,並根據需求擴展WEB APP Server的數量。


  • 水平擴展 - DB Server

在一些需要同時處理大量用戶請求的場景下,如電商搶購疫苗預約,大量用戶可能會同時讀取和更新商品或疫苗庫存。為了保證不會發生超量銷售或預約,不僅需要資料庫的水平擴展來提升處理能力,同時還必須設計有效的庫存同步機制以確保數據的一致性。通常,只有資源充足的大公司才有能力完成這一設計。


語言成為效能瓶頸 - 密集運算

當服務需要進行密集的數據運算時,使用Go lang或是PHP雖然處理速度上優於Python,但是仍然難以跟C++或Java等語言相比,因此這類型的服務通常會選擇另外撰寫專門處理數據運算的外部程式。


結論

Instagram 是最著名的 Django 專案之一。儘管 Instagram 的開發團隊對 Django 的原生程式碼進行了多項修改,比如不使用 ORM 並引入了 GraphQL 來處理圖像和影片數據,但不可否認的是,Instagram 仍然基於 Django 框架處理了大量的業務邏輯。

通常來說,通過充分利用 CPU 和記憶體資源、減少對資料庫的直接讀取,就能顯著提高系統處理高並發的能力。如果系統不涉及到計算密集型的需求,大膽放心的使用自己喜歡的框架進行開發吧!

66會員
19Content count
探索自我實現的小角落。沒有高高在上的教條,只有真實的分享和心得。
留言0
查看全部
發表第一個留言支持創作者!
再寫5分鐘 的其他內容
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
策略模式將多種演算法封裝於獨立的策略類別中,每個策略類別都實現了一個共同的介面。這種設計允許使用者在系統運行時動態選擇和切換演算法,以達成相同的目的。
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
代理模式通過封裝原始對象來實現對該對象的控制和管理,同時不改變原始對象的行為或客戶端與該對象互動的方式,以此介入或增強對該對象的訪問和操作。
策略模式將多種演算法封裝於獨立的策略類別中,每個策略類別都實現了一個共同的介面。這種設計允許使用者在系統運行時動態選擇和切換演算法,以達成相同的目的。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
「如果不能有邏輯地以清楚的文章組織說明一個觀念,包括設計觀念,即代表著不能清楚地構思自己的設計作品;也因為國外的建築碩士同樣如此要求」。5年前如此回答,至今也仍如此相信著。
Thumbnail
我們對富豪的認識少之又少。他們怎麼看待自己,看待別人,看待倫敦?他們錢打哪來?又是怎麼花錢? 身為倫敦大學金匠學院社會學者的作者卡若琳.諾斯用「腳」探究了這些問題。 她走入倫敦街道四處踏查,並匿名訪談富人、富人家屬,以及為這群人效命的服侍者階層等數十名人士, 藉此揭開倫敦富豪生活的簾幕。
Thumbnail
雖然我對科技很有興趣,但最喜歡閱讀的卻是歷史書,從春秋戰國一直到滿清末年和民國史,來來回回的幾千年已經神遊了不知多少遍,在無盡的滄桑和人性中,總是能咀嚼出難忘的滋味 我們能把書中的情節和角色,透過 ChatGPT 重現這歷史場景嗎?那麼,就讓秦始皇和荊軻盡棄前嫌,相互對飲,暢談人生....
Thumbnail
每一層主管發展都需要能力標準與評鑑工具。評鑑中最難的是評鑑中心。 我見過一家公司很自豪的建立一個給總經理候選人評鑑的模擬。在決策部分,他引用了招聘的人才選擇個案。列出工作的標準,以及五個候選人的基本資料,在當中選擇一位候選人。個案設計得還不錯。 問題在於太簡單。多重方案中篩選是中階主管的決策技巧,到
Thumbnail
矩陣式 LED 頭燈光源技術:矩陣頭燈的燈組由數個高亮度LED單體所組成,通過排列組合以及燈組前的透鏡和反光鏡等部件, 讓系統控制每個LED單體調整照明角度與範圍,不需要傳統的機械旋轉結構就能實現調節照明範圍的效果。工程師更易於掌控每個燈組內的LED數量,造型的自由度變得更大。
Thumbnail
有臉書的朋友看到我特別訂製的瘦金體筆,說「有專門的瘦金筆,真的長知識了」。 寫字是「工欲善其事,必先利其器」的事(當然那種隨意塗抹、粗獷書寫的除外),每一種經典風格,必有嚴格的筆紙組合,甚至連墨和硯台也要講究,不講究的,也就只能將就。
Thumbnail
※本專欄之文章僅供參考之用,並不構成要約、招攬或邀請、誘使、任何不論種類或形式之申述或訂立任何建議及推薦,請讀者運用個人獨立思考能力,自行作出投資決定,如因相關建議招致損失,概與《麥斯產業前瞻分析》及作者無涉。
Thumbnail
今天要介紹國內統包界之首,中鼎(9933)  也是一級國際工程公司   中鼎,2020年受到影響,營收是遞延認列  不過在新簽約金額與在建工程金額,都是近幾年的新高   財報上的合約負債也都高達將近20%,可視為在手訂單  未來都將變成營收來認列  
Thumbnail
文/陳亭妘 圖/MMDC關鍵數位行銷提供   12月21日,由MMDC關鍵數位行銷、資策會主辦、dcplus數位行銷實戰家協辦的「第四屆高階經理人數位策略高峰會」,在張榮發基金會國際會議廳舉辦,邀請8位講師以馬拉松式分享,探討大數據採集及如何精準應用,發揮行銷效益。 How digit
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
「如果不能有邏輯地以清楚的文章組織說明一個觀念,包括設計觀念,即代表著不能清楚地構思自己的設計作品;也因為國外的建築碩士同樣如此要求」。5年前如此回答,至今也仍如此相信著。
Thumbnail
我們對富豪的認識少之又少。他們怎麼看待自己,看待別人,看待倫敦?他們錢打哪來?又是怎麼花錢? 身為倫敦大學金匠學院社會學者的作者卡若琳.諾斯用「腳」探究了這些問題。 她走入倫敦街道四處踏查,並匿名訪談富人、富人家屬,以及為這群人效命的服侍者階層等數十名人士, 藉此揭開倫敦富豪生活的簾幕。
Thumbnail
雖然我對科技很有興趣,但最喜歡閱讀的卻是歷史書,從春秋戰國一直到滿清末年和民國史,來來回回的幾千年已經神遊了不知多少遍,在無盡的滄桑和人性中,總是能咀嚼出難忘的滋味 我們能把書中的情節和角色,透過 ChatGPT 重現這歷史場景嗎?那麼,就讓秦始皇和荊軻盡棄前嫌,相互對飲,暢談人生....
Thumbnail
每一層主管發展都需要能力標準與評鑑工具。評鑑中最難的是評鑑中心。 我見過一家公司很自豪的建立一個給總經理候選人評鑑的模擬。在決策部分,他引用了招聘的人才選擇個案。列出工作的標準,以及五個候選人的基本資料,在當中選擇一位候選人。個案設計得還不錯。 問題在於太簡單。多重方案中篩選是中階主管的決策技巧,到
Thumbnail
矩陣式 LED 頭燈光源技術:矩陣頭燈的燈組由數個高亮度LED單體所組成,通過排列組合以及燈組前的透鏡和反光鏡等部件, 讓系統控制每個LED單體調整照明角度與範圍,不需要傳統的機械旋轉結構就能實現調節照明範圍的效果。工程師更易於掌控每個燈組內的LED數量,造型的自由度變得更大。
Thumbnail
有臉書的朋友看到我特別訂製的瘦金體筆,說「有專門的瘦金筆,真的長知識了」。 寫字是「工欲善其事,必先利其器」的事(當然那種隨意塗抹、粗獷書寫的除外),每一種經典風格,必有嚴格的筆紙組合,甚至連墨和硯台也要講究,不講究的,也就只能將就。
Thumbnail
※本專欄之文章僅供參考之用,並不構成要約、招攬或邀請、誘使、任何不論種類或形式之申述或訂立任何建議及推薦,請讀者運用個人獨立思考能力,自行作出投資決定,如因相關建議招致損失,概與《麥斯產業前瞻分析》及作者無涉。
Thumbnail
今天要介紹國內統包界之首,中鼎(9933)  也是一級國際工程公司   中鼎,2020年受到影響,營收是遞延認列  不過在新簽約金額與在建工程金額,都是近幾年的新高   財報上的合約負債也都高達將近20%,可視為在手訂單  未來都將變成營收來認列  
Thumbnail
文/陳亭妘 圖/MMDC關鍵數位行銷提供   12月21日,由MMDC關鍵數位行銷、資策會主辦、dcplus數位行銷實戰家協辦的「第四屆高階經理人數位策略高峰會」,在張榮發基金會國際會議廳舉辦,邀請8位講師以馬拉松式分享,探討大數據採集及如何精準應用,發揮行銷效益。 How digit