close

HTTP的三種儲存資料的層級(Request、Session、Application)

資料儲存的意思並不是指資料儲存在資料庫,而是指儲存在記憶體中的資料;因為資料儲存在記憶體中,所以資料不會永久保存,而是經過一段特定的時間後不見,所以下方我們要來討論Request、Session、Application這三種層級的不同。除這這個部份外,大架構因為有一個運作方式中,是:

處理第一次發送的Request,與處理第二次發送的Request,二台是不同的Server,這個機制在下方會談到。

我們也會在這個章節討論,如果是這種情形下,資料儲放的層級不同會不會有什麼影響。

Request層級

儲存的資料在Request層級的情況下,代表資料是由使用者端送入,Server處理完後即消失。而它的生命週期如下:

開始:由使用者發送一筆Request開始。

結束:從Server回傳一筆Reponse後結束。

處理的機器不同時:因為資料的生命週期關係,第二次傳送的資料本來就不會跟第一次傳送的資料有關係,以在不同的機器運行上,不會有什麼問題。

Session層級

儲存的資料在Session層級的情況下,代表資料是儲存在Server機器的記憶體(或檔案)上;主要的功能是當同一個使用者,接二連三的操作網頁時,將需要跨Request的資料保存在Session中,例如:登入的使用者資料、使用者加入購物車的資料等。而Session的生命週期如下:

開始:當Request未帶Session ID時,Server端則建立一個Session ID,讓使用者下次也帶入Session ID給Server,這樣Server才知道,這是同一個使用者帶來的。

結束:Session過期後結束;Server端通常會預設20分鐘~30分鐘後,Session會過期,或者是使用者登出時,程式會強制Session過期。

處理的機器不同時:因為資料存放在單台機器上,所以在不同的機器上,會有讀取到不同的資料或讀取不到資料的問題。

Application層級

儲存的資料在Application層級的情況下,通常這類的資料是不太會變動的,大部份是為了加快程式運行的速度,所以將比較複雜的運算後結果,或者常用的不會更動資料,儲存在Application層級上。而Aplication的儲存位置是跟伺服器的程式有關,伺服器程式指的是像Apacha之類的程式,而非我們自己寫的程式,而它的生命週期如下:

開始:當伺服器程式啟動時。

結束:當伺服器程式停止時。

處理的機器不同時:因為資料儲放在不同的服伺器上,所以會讀到不同的資料;不過大部份會儲在Application層級的資料,通常是以不會變動的資料為主,所以通常各個機器上儲放的資料內容是一樣的。

大概瞭解了這三個資料存放層級後,我們下方可以來討論大架構的設計概念,與我們程式之間的關係了。

arrow
arrow
    創作者介紹
    創作者 JAVA Programmer 的頭像
    JAVA Programmer

    台灣的Web工程師

    JAVA Programmer 發表在 痞客邦 留言(0) 人氣()