總結(jié)一補(bǔ)充-關(guān)于HTTP狀態(tài)等問題的探索

問題說明

在昨天的總結(jié)中云稚,對(duì)于6月10日的Workshop進(jìn)行了一定程度的歸納和總結(jié)暇唾,在后續(xù)與老師的討論中,發(fā)現(xiàn)部分未接觸過的內(nèi)容只是理解了字面上的意思悦污,并未進(jìn)行深入的思考,先對(duì)其中部分問題的解答做記錄钉蒲,以備日后查閱切端。

一、 HTTP請(qǐng)求的狀態(tài)問題

原文如下:

互聯(lián)網(wǎng)通信協(xié)議HTTP協(xié)議顷啼,是一個(gè)無狀態(tài)協(xié)議踏枣。這意味著,所有的狀態(tài)都保存在服務(wù)器端钙蒙。因此茵瀑,
如果客戶端想要操作服務(wù)器,必須通過某種手段躬厌,讓服務(wù)器端發(fā)生"狀態(tài)轉(zhuǎn)化"(State Transfer)除师。
而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的犁跪,所以就是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"炫加。
(引用自:阮一峰博客“理解restful構(gòu)架”)

原文中提到,互聯(lián)網(wǎng)通信協(xié)議HTTP協(xié)議屹篓,是一個(gè)無狀態(tài)的協(xié)議,在昨天的總結(jié)中匙奴,只是對(duì)這個(gè)概念做了單純的記憶堆巧,沒有去理解何為狀態(tài)。

協(xié)議的狀態(tài):

百度百科給出的解釋是:

協(xié)議的狀態(tài)是指下一次傳輸可以“記住”這次傳輸信息的能力.
——百度百科

  • 無狀態(tài)協(xié)議:[ HTTP協(xié)議 ]:
    前文中提到了饥脑,互聯(lián)網(wǎng)通信協(xié)議HTTP協(xié)議恳邀,是一個(gè)無狀態(tài)的協(xié)議。說明了HTTP協(xié)議中灶轰,為了保證服務(wù)器的內(nèi)存谣沸,HTTP不會(huì)為了下次連接而維護(hù)這次連接所傳輸?shù)男畔ⅰ?/p>

  • 有狀態(tài)協(xié)議:[網(wǎng)絡(luò)游戲通信協(xié)議(這里我沒有查到具體使用的協(xié)議,后續(xù)了解到會(huì)補(bǔ)充進(jìn)來)]
    眾所周知笋颤,網(wǎng)絡(luò)游戲在進(jìn)行過程中乳附,需要一次登錄,登錄過后服務(wù)器不會(huì)再去要求登錄才能訪問URI伴澄,這就說明了赋除,在用戶第一次登陸之后,用戶自身的請(qǐng)求會(huì)攜帶一個(gè)“已登陸”的狀態(tài)非凌。后續(xù)用戶跟服務(wù)器的交互過程中举农,服務(wù)器會(huì)自動(dòng)識(shí)別這個(gè)“已登錄”的狀態(tài),而不會(huì)再要求用戶去登陸才能訪問資源敞嗡。

無狀態(tài)協(xié)議在一些特定情況下的補(bǔ)充:

  • Q:已知HTTP協(xié)議是一個(gè)無狀態(tài)的協(xié)議颁糟,那用戶在訪問類似Baidu這樣的網(wǎng)站時(shí),已登錄的狀態(tài)該如何處理喉悴?

  • A:利用cookie棱貌。
    1、當(dāng)你發(fā)送第一個(gè)請(qǐng)求的時(shí)候箕肃,服務(wù)器會(huì)生成一個(gè)隨機(jī)的字符串婚脱,然后在服務(wù)器空間內(nèi)分配一段內(nèi)存空間,這個(gè)內(nèi)存段的索引就是這個(gè)字符串(為方便敘述勺像,這個(gè)字符串暫定為123)障贸;
    2、“123”會(huì)隨著HTTP的Response返回給瀏覽器吟宦,瀏覽器會(huì)將它存入Cookie中篮洁;
    3、此時(shí)我們輸入用戶名和密碼督函,會(huì)像服務(wù)器發(fā)送登錄請(qǐng)求,request中會(huì)包含“123”;
    4辰狡、服務(wù)器接受到請(qǐng)求后锋叨,驗(yàn)證用戶名密碼的正確性,驗(yàn)證后會(huì)根據(jù)索引“123”宛篇,找到之前分配的內(nèi)存空間(session)娃磺,在空間內(nèi)加入“已登陸”的標(biāo)志。
    5叫倍、再次之后偷卧,我們的每個(gè)請(qǐng)求都會(huì)帶有“123”這個(gè)索引,服務(wù)器會(huì)根據(jù)這個(gè)索引找到內(nèi)存段吆倦,如果有“已登陸”的標(biāo)志听诸,有則正常訪問,無則跳轉(zhuǎn)登陸界面蚕泽。

二晌梨、RestAPI的架構(gòu)問題

根據(jù)上述,我們可以獲得一個(gè)信息须妻,在所有http都會(huì)帶有cookie的先決條件下仔蝌,任何http請(qǐng)求都會(huì)由request帶來狀態(tài),也就是說service理論是能夠知道請(qǐng)求的狀態(tài)的荒吏。
但根據(jù)前文講述敛惊,服務(wù)器不應(yīng)該知道請(qǐng)求的狀態(tài),否則會(huì)造成過度的負(fù)載绰更,有悖于我們之前講述的RestAPI的架構(gòu)瞧挤。所以在可用性上,RestAPI的架構(gòu)風(fēng)格做了兩個(gè)方面的約束:

  • 狀態(tài)由客戶端提供动知;
  • Service不保存狀態(tài)皿伺。
    在這兩個(gè)方面的約束下,我們可以得知盒粮,狀態(tài)需要一個(gè)空間來存放鸵鸥,那么這時(shí)候有兩種選擇:
    1、 存放在數(shù)據(jù)庫中
    這種方法簡明有效丹皱,但同時(shí)也面臨一定的風(fēng)險(xiǎn)妒穴,數(shù)據(jù)庫本身的存儲(chǔ)就具有一定的風(fēng)險(xiǎn),所以這里我們不提倡
    2摊崭、存放在類似redis集群式的內(nèi)存存儲(chǔ)里
    這種方法具有速度快讼油、多個(gè)備份節(jié)點(diǎn)等優(yōu)點(diǎn)

綜上,現(xiàn)在的RestAPI構(gòu)架所提倡的組合:

客戶端——Service——State Storage ——數(shù)據(jù)庫呢簸。

ps:新名詞解釋:redis:

redis是一個(gè)key-value存儲(chǔ)系統(tǒng)矮台。和Memcached類似乏屯,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)瘦赫、list(鏈表)辰晕、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)确虱。這些數(shù)據(jù)類型都支持push/pop含友、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的校辩。在此基礎(chǔ)上窘问,redis支持各種不同方式的排序。與memcached一樣宜咒,為了保證效率惠赫,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件荧呐,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步汉形。
——來自百度百科

(于6月25日補(bǔ)充,未完待續(xù))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末倍阐,一起剝皮案震驚了整個(gè)濱河市概疆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峰搪,老刑警劉巖岔冀,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異概耻,居然都是意外死亡使套,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門鞠柄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侦高,“玉大人,你說我怎么就攤上這事厌杜》钋海” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵夯尽,是天一觀的道長瞧壮。 經(jīng)常有香客問我,道長匙握,這世上最難降的妖魔是什么咆槽? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮圈纺,結(jié)果婚禮上秦忿,老公的妹妹穿的比我還像新娘麦射。我一直安慰自己,他們只是感情好灯谣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布法褥。 她就那樣靜靜地躺著,像睡著了一般酬屉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上揍愁,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天呐萨,我揣著相機(jī)與錄音,去河邊找鬼莽囤。 笑死谬擦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朽缎。 我是一名探鬼主播惨远,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼话肖!你這毒婦竟也來了北秽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤最筒,失蹤者是張志新(化名)和其女友劉穎贺氓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體床蜘,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辙培,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了邢锯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扬蕊。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖丹擎,靈堂內(nèi)的尸體忽然破棺而出尾抑,到底是詐尸還是另有隱情,我是刑警寧澤鸥鹉,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布蛮穿,位于F島的核電站,受9級(jí)特大地震影響毁渗,放射性物質(zhì)發(fā)生泄漏践磅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一灸异、第九天 我趴在偏房一處隱蔽的房頂上張望府适。 院中可真熱鬧羔飞,春花似錦、人聲如沸檐春。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疟暖。三九已至卡儒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俐巴,已是汗流浹背骨望。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留欣舵,地道東北人擎鸠。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像缘圈,于是被迫代替她去往敵國和親劣光。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理糟把,服務(wù)發(fā)現(xiàn)绢涡,斷路器,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 從三月份找實(shí)習(xí)到現(xiàn)在遣疯,面了一些公司垂寥,掛了不少,但最終還是拿到小米另锋、百度滞项、阿里、京東夭坪、新浪文判、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,186評(píng)論 11 349
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,512評(píng)論 25 707
  • 文/粥小唯 一則53歲阿姨考上研究生的騰訊新聞?wù)ㄏ沽宋业难邸P睦镂逦峨s陳亡鼠,個(gè)中滋味無法言語赏殃。 《一》 早年,因?yàn)榧?..
    妖精的小尾巴閱讀 367評(píng)論 8 5
  • 今天上午先生說再休息一上午间涵,我們一家四囗去看冰雕展仁热,排隊(duì)時(shí)我怕沒有棉衣著急給工作人員去要,她依然很好的為我服務(wù)勾哩,給...
    王玉文ts閱讀 110評(píng)論 0 0