1. 漸進的初始化
如果我們使用servant定位器,locate返回的servant只能用於當前請求,也就是說ice run time不會把這個servant增加到active servant map中。
一種常用的實現技術是,在locate中,把每個servant增加到asm中。這意味著,只有對ice物件的初次請求會觸發對locate的呼叫;自此之後,與ice物件對應的servant就可以在asm中找到,ice run time不必再呼叫servant定位器就可以立即分派針對同乙個ice物件的到來請求。
使用乙個把servant增加到asm中的定位器有一些優點:
1) servants是隨需例項化的,所以servant的初始化代價分散到了許多次呼叫中,而不是在伺服器啟動時同時產生。
2) 伺服器的記憶體需求降低了,因為只有當ice物件被客戶實際訪問時,servant才會例項化。
2. 預設servants
預設servants是—它針對每乙個請求,充當不同的ice物件的角色。換句話說,預設servant會在處理每個請求時,根據請求所訪問的物件標識改變其行為。通過這樣的方式,客戶可以訪問數量不限的ice物件,但卻只有乙個servant在記憶體中。
預設servants不僅可以節省記憶體,實現方式也很簡單:在本質上,它們就是資料庫中物件的持久狀態的façade。
要建立預設servant實現,我們需要的定位器的數量和系統中的非抽象介面的數量一樣多。而對於每乙個被呼叫的操作,預設servant都要進行一次資料庫訪問,因此它比在記憶體中快取狀態要慢。
3. 混合途徑及快取
如果我們的應用有一些經常訪問的物件,是效能的關鍵,那麼我們可以把針對這些物件的servant增加到asm中。其他不常被訪問的物件可以通過預設servant實現。
4. servant逐出器
逐出器是維護有servants快取的servant定位器:最近最少用的servant處在佇列的尾部,最近使用最多的servant處在佇列的頭部。(按照lru順序維護)。
佇列的長度可以配置,並決定會有多少servant存放在快取中:如果針對某個ice物件的請求在記憶體中沒有對應的servant,而且快取滿了,逐出器就會在隊尾移除最近最少用的servant,給要在對頭例項化的servant騰出空間。如:
逐出器在訪問了servant3之後的情況:
假定下乙個客戶請求時針對物件標識6的。逐出器中維護servants的快取已經滿了,那麼就會在隊尾逐出標誌位1的servant,如圖:
逐出器集合了asm與預設servants的優點:只要快取尺寸能在記憶體中容納servant工作集,大多數的請求都會由已經例項化的servant提供服務,而不用建立servant,並訪問資料庫來初始化servant狀態。
伺服器實現 如何實現session跨伺服器共享
session共享有多種解決方法,常用的有四種 客戶端cookie儲存 伺服器間session同步 使用集群管理session 把session持久化到資料庫。1.客戶端cookie儲存 以cookie加密的方式儲存在客戶端,每次session資訊被寫在客戶端,然後經瀏覽器再次提交到伺服器,即使兩次...
懟技術 維護伺服器
為了保證伺服器的資料安全,要每天對伺服器進行資料的備份。今天遇到機房停電,伺服器因停電而關機 備用電源也耗盡 的情況下出現關機。在重啟伺服器時面臨乙個問題,重啟後資料不能夠正常的備份。伺服器找尋不到要掛載的磁碟陣列。需要手動的進行磁碟陣列的掛載。首先介紹如何手動掛載 呼叫命令 mount 備份檔案夾...
jmeter 伺服器監控技術
效能測試屬於功能測試,可以看作是需要了解部分 的灰盒測試 測試流程 1 測試介面文件 2 根據介面文件編寫測試用例 3 執行測試 4 檢視介面返回的介面資料是否正確 jmeter 伺服器監控技術 監控原理 監控時需要獲取伺服器資源的狀況,如 cpu,記憶體,網路 io 原理 在伺服器上安裝間諜 se...