分布式系統中客戶端與伺服器通訊時需要每次攜帶一此附屬資訊,比如:語種(支援多國語言系統),資料庫連線字串(支援多賬套系統),客戶端ip等。在每個應用服務的介面中增加乙個這種附屬引數物件在大型系統中是不現實的。.net remoting中的system.runtime.remoting.messaging.ilogicalthreadaffinative 為我們解決了上面的困難,當然也要可以通過自定義sink來達到效果,但需要多寫很多**,且要熟悉增加自定義sink的功能。先從簡單的學起吧。
在common.dll中我們定義乙個附屬資訊的實體,為了演示我們只為它加了乙個屬性。最重要的是實現了system.runtime.remoting.messaging.ilogicalthreadaffinative介面,該介面是乙個空介面,沒有行為。
[serializable]
public class contentdata : system.runtime.remoting.messaging.ilogicalthreadaffinative
public string ip}}
在客戶端
class client
}在伺服器端
static class server
}這樣我們就可以在伺服器端的任意地方呼叫server.getclientip()方法獲得當前請求的客戶端ip。
Remoting實現分布式應用簡單例項
廢話不多說,直接上例子 先上乙個自己寫的乙個用remoting實現的分布式應用小例子 這裡面沒有考慮通道加密等等的什麼高技術,只是基礎 本例子有 乙個解決方案 remotesampleproject 4個專案分別是 格式說明 專案名稱 專案型別 輸出型別 具體 iremotesample 介面 類庫...
基於redis的分布式鎖
public class redislock 加鎖 取到鎖加鎖,並返回值用於解鎖 取不到鎖則立即返回 1 param millitimeout 最長鎖定時間,超時後自動刪除鎖,避免死鎖 return public synchronized long lock long millitimeout lo...
基於twemproxy的redis分布式應用
根據以往的測試結論,單個redis的例項的記憶體總量最好控制在8g以內 最大不能超過20g 而實際上應用對redis的記憶體的需求可能會遠遠大於8g,因此需要乙個保持redis server效能不下降,但可以有效擴充redis server的容量的方案。twemproxy是乙個恰當的選擇。b 簡介 ...