HTTP學(xué)習(xí)

分布式計算的第一準(zhǔn)則——不要分布你的對象

減少訪問遠(yuǎn)程服務(wù)所花費的時間,比如可以通過更粗粒度地劃分接口。遠(yuǎn)程還是本地是明確的設(shè)計決策休蟹,不能隨意來回更動沸枯,這一點應(yīng)當(dāng)牢記。還要考慮分布式計算的第一準(zhǔn)則——不要分布你的對象赂弓。

軟件開發(fā)人員總愛在不需要的地方引入抽象和層绑榴。是的,這些概念對軟件組件之間的解耦來說是很好的工具盈魁,但它們可能會增加復(fù)雜性翔怎、影響性能,尤其是在每層的數(shù)據(jù)表示之間都需要轉(zhuǎn)換的情況下杨耙。因此赤套,減少處理時間還要注意保證抽象不要過于抽象化,并且沒有過多的分層珊膜。另外容握,對于我們視為理所當(dāng)然的運行時服務(wù),有必要理解其成本车柠,因為除非它們提供了特定的服務(wù)水平協(xié)議剔氏,否則很有可能最終會成為應(yīng)用中的瓶頸。

分布式必然帶來復(fù)雜性的上升, 網(wǎng)絡(luò)是不可靠的. 跨越網(wǎng)絡(luò)帶來的復(fù)雜性如果不能通過分層協(xié)議在網(wǎng)絡(luò)兩端取得同步和一致的結(jié)果, 對于應(yīng)用就會造成數(shù)據(jù)不一致的后果.

現(xiàn)狀:
HTTP作為最通用的應(yīng)用層協(xié)議, 承擔(dān)了互聯(lián)網(wǎng)上多數(shù)的數(shù)據(jù)傳輸任務(wù).


image.png

image.png

image.png

TCP/IP和OSI模型相比, 精簡掉了會話和表示層, 把這些功能合并在應(yīng)用層處理. 雖然簡化了網(wǎng)絡(luò)的設(shè)計和實現(xiàn), 卻給上層的應(yīng)用帶來了更多的維護(hù)負(fù)擔(dān).

最好把數(shù)據(jù)協(xié)議和傳輸協(xié)議分開, 雖然現(xiàn)在HTTP是Web標(biāo)準(zhǔn), 但是面向未來, 最好不要捆綁在特定的傳輸協(xié)議上, 只做好Web可用的數(shù)據(jù)訪問接口, 底層使用websocket, 或者HTTP2, HTTP3, 或者別的什么協(xié)議都可以. 這個問題其實是由于TCP/IP協(xié)議簡化的應(yīng)用層造成的, OSI模型中的會話層和表示層是有必要的, 而且并不需要特殊硬件, 應(yīng)該是在軟件中分層. 把所有功能都簡化到應(yīng)用層的后果就是HTTP承擔(dān)了太多角色, 沒有一個清晰的層次, 導(dǎo)致了Web開發(fā)需要后端寫很多難以復(fù)用的接口. 所以REST和GraphQL都在填這個坑, 我覺得最根本的方式還是重視OSI模型, 在軟件架構(gòu)中分離出會話和表示層, 建立起通用規(guī)范的實現(xiàn)和接口調(diào)用方式, 這樣不僅對于Web, 對于更底層直接基于socket的調(diào)用都是大有好處的, 現(xiàn)在的情況下是這些功能分布于通訊框架和業(yè)務(wù)代碼中, 沒有一個清晰的結(jié)構(gòu), 增加了復(fù)雜性. 當(dāng)然, 這是從長遠(yuǎn)和理想角度考慮, 目前HTTP接口還是夠用的, 前端通過對應(yīng)的客戶端庫轉(zhuǎn)接相應(yīng)格式的接口, 后續(xù)切換應(yīng)該也問題不大.

Web技術(shù)出現(xiàn)的較晚(約1990年), 而市場對于互聯(lián)網(wǎng)應(yīng)用的需求卻很強烈, 導(dǎo)致Web在底層技術(shù)還沒有準(zhǔn)備好的情況下就要開始承擔(dān)復(fù)雜的業(yè)務(wù)場景. 這是網(wǎng)絡(luò)應(yīng)用開發(fā)中的根本問題.

近些年Web標(biāo)準(zhǔn)作了一些升級和調(diào)整, 諸如HTML5, CSS3, ES6之類的標(biāo)準(zhǔn), 為web應(yīng)用提供了更多的可能, 但是作為傳輸主力的HTTP卻調(diào)整緩慢.
HTTP/0.9 1990
HTTPS 1994
HTTP1.0 1996
HTTP1.1 1997
|
|
WebSocket 2011
SPDY 2012
HTTP/2 2015

HTTP為了實現(xiàn)的簡單, 處于當(dāng)時網(wǎng)絡(luò)的實際情況和應(yīng)用場景, 采取了一問一答, 無狀態(tài)的純文本格式傳輸模式. 相當(dāng)于在不關(guān)心會話層實現(xiàn), 表示層采用text/html或text/plain這樣的簡單文本格式. 在當(dāng)時傳輸簡單圖文的場景下是夠用且合適的, 但是當(dāng)需求和應(yīng)用越來越復(fù)雜, 簡單的文本和html格式無法承擔(dān). 當(dāng)時的W3C委員會制定的標(biāo)準(zhǔn)是XML, 建立一套基于XML的體系, 希望以此統(tǒng)一Web數(shù)據(jù)的承載格式. 但是之后業(yè)界更傾向于輕量級的JSON格式.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末堪遂,一起剝皮案震驚了整個濱河市介蛉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌溶褪,老刑警劉巖币旧,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異猿妈,居然都是意外死亡吹菱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門彭则,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳍刷,“玉大人,你說我怎么就攤上這事俯抖∈涔希” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵芬萍,是天一觀的道長尤揣。 經(jīng)常有香客問我,道長柬祠,這世上最難降的妖魔是什么北戏? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮漫蛔,結(jié)果婚禮上嗜愈,老公的妹妹穿的比我還像新娘旧蛾。我一直安慰自己,他們只是感情好蠕嫁,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布锨天。 她就那樣靜靜地躺著,像睡著了一般拌阴。 火紅的嫁衣襯著肌膚如雪绍绘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天迟赃,我揣著相機與錄音陪拘,去河邊找鬼。 笑死纤壁,一個胖子當(dāng)著我的面吹牛左刽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酌媒,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼欠痴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秒咨?” 一聲冷哼從身側(cè)響起喇辽,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雨席,沒想到半個月后菩咨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡陡厘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年抽米,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糙置。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡云茸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谤饭,到底是詐尸還是另有隱情标捺,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布揉抵,位于F島的核電站亡容,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏功舀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一身弊、第九天 我趴在偏房一處隱蔽的房頂上張望辟汰。 院中可真熱鬧列敲,春花似錦、人聲如沸帖汞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翩蘸。三九已至所意,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間催首,已是汗流浹背扶踊。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留郎任,地道東北人秧耗。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像舶治,于是被迫代替她去往敵國和親分井。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容