一级全黄少妇免费录像片,亚洲国产一区在线,日日操夜夜摸,都市激情久久,日日夜夜操av,国产视频在线一区二区,国产777777线观看视频

增量會話對象——DeltaSession -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.hsanran.com - 電腦資料】

    在集群環(huán)境中為了使集群中各個(gè)節(jié)點(diǎn)的會話狀態(tài)都同步,同步操作是集群重點(diǎn)解決的問題,一般來說有兩種同步策略,其一是每次同步都把整個(gè)會話對象傳給集群中其他節(jié)點(diǎn),其他節(jié)點(diǎn)更新整個(gè)會話對象;其二是對會話中增量修改的屬性進(jìn)行同步,

增量會話對象——DeltaSession

。這兩種同步方案各有優(yōu)缺點(diǎn),整個(gè)會話對象同步策略實(shí)現(xiàn)過程比較簡單方便,但會造成大量無效信息的傳輸。增量同步方式則不會傳遞無效的信息,但在實(shí)現(xiàn)上會比較復(fù)雜因?yàn)樯婕暗綄拰傩圆僮鬟^程的管理。

    這節(jié)討論的正是增量同步方式中涉及的會話對象DeltaSession,這個(gè)對象其實(shí)是對標(biāo)準(zhǔn)會話對象的擴(kuò)展使之具備在整個(gè)請求過程記錄會話所有的增量更改。DeltaSession的類圖如下,除了繼承StandardSession類外還實(shí)現(xiàn)了Externalizable、ClusterSession、ReplicatedMapEntry三個(gè)接口,Externalizable接口主要提供對外部的對象讀寫操作,ClusterSession接口主要提供判斷集群會話是否為原始的會話操作,只有原始會話才有資格使會話過期,ReplicatedMapEntry接口提供差異復(fù)制的操作。對于DeltaSession其實(shí)就是除了繼承StandardSession特性外還要額外實(shí)現(xiàn)這三個(gè)接口。

   

    當(dāng)客戶端發(fā)起一個(gè)請求時(shí),服務(wù)端對請求的處理可能涉及會話相關(guān)的操作,例如獲取客戶端某些屬性再根據(jù)屬性值進(jìn)行邏輯處理,而且在整個(gè)請求過程中可能涉及多次的會話操作,為了將這些改變能同步到集群的其他節(jié)點(diǎn)上,必須要有一個(gè)機(jī)制來實(shí)現(xiàn),實(shí)際上同步的顆粒度大小是很重要,顆粒度太大會導(dǎo)致同步不及時(shí),而顆粒度太小則可能導(dǎo)致傳輸及性能問題,考慮到性能及可行性,tomcat同步的顆粒度是以一個(gè)完整的請求為單位的,即從客戶端發(fā)起請求到服務(wù)器完成邏輯處理返回結(jié)果之前這段時(shí)間為同步顆粒度,

電腦資料

增量會話對象——DeltaSession》(http://www.hsanran.com)。這個(gè)過程中對某會話的所有操作(對同一個(gè)屬性的操作只記錄最新的操作)都會被記錄下來,如下圖,綠色箭頭表示一個(gè)完整的請求過程,期間包括了四個(gè)修改屬性操作,分別修改了屬性a、b、c、d,這四個(gè)操作會被抽象成四個(gè)動作放進(jìn)一個(gè)列表中,集群其他節(jié)點(diǎn)獲取列表后根據(jù)這些動作就可以對自己本地對應(yīng)的會話進(jìn)行同步。

   

    集群成員接收到某節(jié)點(diǎn)發(fā)送過來的同步消息后,將會逐一執(zhí)行動作集里面的每個(gè)動作,下圖大箭頭表示同步的整個(gè)過程,最下面的為動作集列表,一共有4個(gè)動作,按順序首先取出第一個(gè)update1動作,動作對象里面包含了指定修改哪個(gè)會話的會話id,根據(jù)此id去修改會話集對應(yīng)的會話的屬性。接著把剩下的其余3個(gè)動作執(zhí)行完畢,于是完成了會話同步。

   

    在tomcat中會話增量的具體由DeltaSession類實(shí)現(xiàn),DeltaSession繼承了StandardSession標(biāo)準(zhǔn)會話的所有特性且增加了會話增量記錄的功能,增量記錄功能即通過動作集實(shí)現(xiàn),動作集被封裝在DeltaRequest類,所以DeltaSession主要通過DeltaRequest實(shí)現(xiàn)動作集的管理,動作集由一個(gè)LinkedList結(jié)構(gòu)保存,AttributeInfo描述了動作的一些消息,所以一個(gè)動作就被抽象成了一個(gè)AttributeInfo對象,它主要包含四個(gè)屬性 name(String)、value(Object)、action(int)、type(int),name表示會話的屬性名,即哪個(gè)屬性被改;value表示會話屬性名對應(yīng)的值;action表示動作類型,可能是設(shè)置屬性也可能是刪除屬性;type表示會話哪種類別的屬性將被修改。

   

    整個(gè)增量會話的實(shí)現(xiàn)機(jī)制就是上面所說的,會話的增量拷貝比起全量拷貝有很多好處,即使實(shí)現(xiàn)相對比較復(fù)雜。

最新文章