項目細(xì)節(jié)

Django項目細(xì)節(jié)

跨域CORS

我們?yōu)榍岸撕秃蠖朔謩e設(shè)置了兩個不同的域名

JWT認(rèn)證機(jī)制

JWT協(xié)議似乎已經(jīng)應(yīng)用十分廣泛,JSON Web Token——一種基于token的json格式web認(rèn)證方法。基本的原理是,第一次認(rèn)證通過用戶名密碼,服務(wù)端簽發(fā)一個json格式的token。后續(xù)客戶端的請求都攜帶這個token,服務(wù)端僅需要解析這個token,來判別客戶端的身份和合法性。

Celery異步任務(wù)

Celery是基于Python開發(fā)的一個分布式任務(wù)隊列框架,支持使用任務(wù)隊列的方式在分布的機(jī)器/進(jìn)程/線程上執(zhí)行任務(wù)調(diào)度。

選擇中間人

RabbitMQ

RabbitMQ 功能完備、穩(wěn)定、耐用,并且安裝簡便,是生產(chǎn)環(huán)境的絕佳選擇。 配合 Celery 使用 RabbitMQ 的詳情見

FastDFS分布式文件系統(tǒng)

通過獨立文件服務(wù)器可以解決一些問題,如果某天存儲文件的那臺服務(wù)突然down了怎么辦?可能你會說,定時將文件系統(tǒng)備份,這臺down機(jī)的時候,迅速切換到另一臺就OK了,但是這樣處理需要人工來干預(yù)。另外,當(dāng)存儲的文件超過100T的時候怎么辦?單臺服務(wù)器的性能問題?這個時候我們就應(yīng)該考慮分布式文件系統(tǒng)了。

業(yè)務(wù)繼續(xù)發(fā)展,單臺服務(wù)器存儲和響應(yīng)也很快到達(dá)了瓶頸,新的業(yè)務(wù)需要文件訪問具有高響應(yīng)性、高可用性來支持系統(tǒng)。分布式文件系統(tǒng),一般分為三塊內(nèi)容來配合,服務(wù)的存儲、訪問的仲裁系統(tǒng),文件存儲系統(tǒng),文件的容災(zāi)系統(tǒng)來構(gòu)成,仲裁系統(tǒng)相當(dāng)于文件服務(wù)器的大腦,根據(jù)一定的算法來決定文件存儲的位置,文件存儲系統(tǒng)負(fù)責(zé)保存文件,容災(zāi)系統(tǒng)負(fù)責(zé)文件系統(tǒng)和自己的相互備份。

優(yōu)點:擴(kuò)展能力: 毫無疑問,擴(kuò)展能力是一個分布式文件系統(tǒng)最重要的特點;高可用性: 在分布式文件系統(tǒng)中,高可用性包含兩層,一是整個文件系統(tǒng)的可用性,二是數(shù)據(jù)的完整和一致性;彈性存儲: 可以根據(jù)業(yè)務(wù)需要靈活地增加或縮減數(shù)據(jù)存儲以及增刪存儲池中的資源,而不需要中斷系統(tǒng)運(yùn)行

缺點:系統(tǒng)復(fù)雜度稍高,需要更多服務(wù)器

Docker

Docker是一個開發(fā),運(yùn)輸和運(yùn)行應(yīng)用程序的開放平臺。Docker使您可以將應(yīng)用程序與基礎(chǔ)架構(gòu)分離,以便快速交付軟件。使用Docker,您可以像管理應(yīng)用程序一樣管理基礎(chǔ)架構(gòu)。通過利用Docker的方法快速發(fā)送,測試和部署代碼,您可以顯著減少編寫代碼和在生產(chǎn)中運(yùn)行代碼之間的延遲。

頁面靜態(tài)化等技術(shù)

傳統(tǒng)的django頁面渲染:

數(shù)據(jù)庫查詢-->數(shù)據(jù)+Templates--> 前端

使用頁面靜態(tài)化技術(shù):

腳本實現(xiàn)數(shù)據(jù)庫查詢--> 數(shù)據(jù)+Templates--> 靜態(tài)頁面-->前端

頁面靜態(tài)化即將動態(tài)渲染生成的頁面結(jié)果保存成html文件,放到靜態(tài)文件服務(wù)器中。用戶訪問的時候訪問的直接是處理好之后的html靜態(tài)文件。

captcha

captcha 是用 python 寫的生成驗證碼的庫,它支持圖片驗證碼和語音驗證碼,我們使用的是它生成圖片驗證碼的功能。

Django REST framework

Web應(yīng)用編程接口(API)自動請求網(wǎng)站的特定信息而不是整個網(wǎng)頁。因此即便數(shù)據(jù)瞬息萬變,它呈現(xiàn)的信息也都是最新的

QQ登錄

QQ登錄,亦即我們所說的第三方登錄,是指用戶可以不在本項目中輸入密碼,而直接通過第三方的驗證,成功登錄本項目。

若想實現(xiàn)QQ登錄,需要成為QQ互聯(lián)的開發(fā)者,審核通過才可實現(xiàn)。注冊方法可參考鏈接http://wiki.connect.qq.com/%E6%88%90%E4%B8%BA%E5%BC%80%E5%8F%91%E8%80%85

成為QQ互聯(lián)開發(fā)者后,還需創(chuàng)建應(yīng)用,即獲取本項目對應(yīng)與QQ互聯(lián)的應(yīng)用ID,創(chuàng)建應(yīng)用的方法參考鏈接http://wiki.connect.qq.com/__trashed-2

QQ登錄開發(fā)文檔連接http://wiki.connect.qq.com/%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C_oauth2-0

樂觀鎖和悲觀鎖

悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿數(shù)據(jù)的時候都認(rèn)為別人會修改,所以每次在拿數(shù)據(jù)的時候都會上鎖,這樣別人想拿這個數(shù)據(jù)就會block直到它拿到鎖。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫里邊就用到了很多這種鎖機(jī)制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。

樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀,每次去拿數(shù)據(jù)的時候都認(rèn)為別人不會修改,所以不會上鎖,但是在更新的時候會判斷一下在此期間別人有沒有去更新這個數(shù)據(jù),可以使用版本號等機(jī)制。樂觀鎖適用于多讀的應(yīng)用類型,這樣可以提高吞吐量,像數(shù)據(jù)庫如果提供類似于write_condition機(jī)制的其實都是提供的樂觀鎖。

Django與Flask的區(qū)別

(1)Flask

Flask確實很“輕”,不愧是Micro Framework,從Django轉(zhuǎn)向Flask的開發(fā)者一定會如此感慨,除非二者均為深入使用過
Flask自由、靈活,可擴(kuò)展性強(qiáng),第三方庫的選擇面廣,開發(fā)時可以結(jié)合自己最喜歡用的輪子,也能結(jié)合最流行最強(qiáng)大的Python庫
入門簡單,即便沒有多少web開發(fā)經(jīng)驗,也能很快做出網(wǎng)站
非常適用于小型網(wǎng)站
非常適用于開發(fā)web服務(wù)的API
開發(fā)大型網(wǎng)站無壓力,但代碼架構(gòu)需要自己設(shè)計,開發(fā)成本取決于開發(fā)者的能力和經(jīng)驗
各方面性能均等于或優(yōu)于Django
Django自帶的或第三方的好評如潮的功能,F(xiàn)lask上總會找到與之類似第三方庫
Flask靈活開發(fā),Python高手基本都會喜歡Flask,但對Django卻可能褒貶不一
Flask與關(guān)系型數(shù)據(jù)庫的配合使用不弱于Django,而其與NoSQL數(shù)據(jù)庫的配合遠(yuǎn)遠(yuǎn)優(yōu)于Django
Flask比Django更加Pythonic,與Python的philosophy更加吻合
(2)Django

Django太重了,除了web框架,自帶ORM和模板引擎,靈活和自由度不夠高
Django能開發(fā)小應(yīng)用,但總會有“殺雞焉用牛刀”的感覺
Django的自帶ORM非常優(yōu)秀,綜合評價略高于SQLAlchemy
Django自帶的模板引擎簡單好用,但其強(qiáng)大程度和綜合評價略低于Jinja
Django自帶ORM也使Django與關(guān)系型數(shù)據(jù)庫耦合度過高,如果想使用MongoDB等NoSQL數(shù)據(jù),需要選取合適的第三方庫,且總感覺Django+SQL才是天生一對的搭配,Django+NoSQL砍掉了Django的半壁江山
Django目前支持Jinja等非官方模板引擎
Django自帶的數(shù)據(jù)庫管理app好評如潮
Django非常適合企業(yè)級網(wǎng)站的開發(fā):快速、靠譜、穩(wěn)定
Django成熟、穩(wěn)定、完善,但相比于Flask,Django的整體生態(tài)相對封閉
Django是Python web框架的先驅(qū),用戶多,第三方庫最豐富,最好的Python庫,如果不能直接用到Django中,也一定能找到與之對應(yīng)的移植
Django上手也比較容易,開發(fā)文檔詳細(xì)、完善,相關(guān)資料豐富

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,279評論 2 89
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,172評論 3 119
  • 每次聽張震岳那首《再見》,就會想起畢業(yè)的情景。我們拍照留念,怎么拍也拍不完點點滴滴。我們想好好道別,但有太多人沒有...
    居里夫人的眼珠子閱讀 845評論 2 3
  • 我今天,大概會死在這個地方吧。 “朝南去,只要跑出了國界線你就安全了!一定要活下去!” 楊希最后把我送出去的時候,...
    禍蒼生教教主閱讀 244評論 0 1
  • 林海峰作品 要用怎樣的文字與口才,才能夠教會世人尊重疾病,才能夠讓病人學(xué)會,在生病的時候,充滿幸福的、享受的感覺呢...
    may_L閱讀 225評論 0 0

友情鏈接更多精彩內(nèi)容