Hello Big Tiger with Terracotta

0

源起

看到這篇 Terracotta 介紹 後,想要試試,當我們同在一起,是否其快樂無比,做法是將兩隻老虎 (Java5) 變成一隻大老虎看看。

Terracotta 官方網站 以及這篇練習的 Hello 範例 參考。

DSO Server Node

先從 DSO 版本下手,下載 windows/linux 版約50MB 來用,這個安裝有自帶一個 JRE,所以不裝 JRE 也可以用,windows 裝完大約在 C:\Program Files\Terracotta\terracotta-2.2 可以找到。

因為要不同機器執行,和範例的本機執行有差別,要改一下東西才能跑。

先複製 \dso\config-sample\tc-config-dso.xml 為 tc-config-hello.xml。 改 /tc:tc-config/servers/server[@name and @host] 為 windows 機器的 ip。

start-tc-server.bat" -f ..\config-sample\tc-config-hello.xml

這個 tc-server 會啟動一個 HTTP 服務可以看輸出的訊息,例如啟動在 9510。

  1. http://192.168.111.194:9510/ 會對應到 C:\Program Files\Terracotta\terracotta-2.2 目錄。
  2. http://192.168.111.194:9510/config 輸出整個設定 XML,這個檔是關鍵。

JMX 的部份可以直接開 AdminConsole.exe 來看。

Tiger 1 DSO Client Node

這次要測的 HelloWorld 類似一張黑板,每個人(JVM)上去寫現在日期(執行一次)後, 大家都可以看到內容。

利用之前的 tiger1 當 Client Node 的環境,參閱 Hello Two Tigers

客戶端更簡單,不需要設定檔,直接在網路上抓 server node 的執行就可以。

/dso/bin/dso-java.sh -Dtc.config=http://192.168.1.9:9510/config tutorial.HelloWorld

tiger2 如法炮製,只要裝好 terracotta 後,將 java 換成 dso-java 並註明一下 server node 設定檔就可以多一台,接下部署要幾台有幾台。

保存

萬一 server node 關掉,狀態需要保存,就需要加個設定,將資料放在檔案中。

<persistence>
    <mode>permanent-store</mode>
 </persistence>

這樣可以不需要資料庫也可以保存狀態。只是兩種存放可能都是必須的,舉例來說,一張下午飲料訂購單上,傳來傳去,刪刪減減中,突然停電,這時狀態保留在 server node,開機後繼續傳閱填單子,最後負責人要保留這張單子並副本給飲料店。

這時候應該還是需要某種 ORM 將單子存到 DB 來保存,方便以後查詢。

飲料單可能是半天,員工旅行或是意見單前前後後也許要幾星期,不能保持狀態在 server node 實在太危險,這類延續數天數星期的事件,中間是否需要保留到 DB ,多久保留一次都是需要觀察的問題。

至於是否可以就讓這張單子一直躺在 server node ? 可能還需要時間檢視,完全不用 DB 來保存是否會有其他問題。

關於 一直躺著的問題 有人提到,雖說還不到某種 OODB 的實現,目前要做到的狀況跟現實差不多,現實需要一個 放在角落的櫃子來放這些單子,如果這個櫃子不是用 ORM 連結展示的 DB,就必須是某種櫃子物件,這樣才有連結 reference 可以找到其中放置的單子來取資料。

換句話說,保存搜尋的這個過程中,你要查閱某張單子,都需要先找到放的容器來找,暫時性的也許是承辦人的抽屜 (DSO) ,永久性也許是地下室架上的櫃子 (DB TABLE)。

不用 Terracotta

下面列舉想到的一些做法,可能需要考慮用資料庫或是某種保存程式來存放狀態,並提供同步所有點的即時物件狀態查詢。

  1. object-JDBC-DB-JDBC-object
  2. object-ORM-DB-ORM-object
  3. object-OXM-SOAP-WS-SOAP-OXM-object

觀察

  1. 在 windows 平台,一開起 start-tc-server.bat 會立刻吃掉近 250MB 記憶體,改一下 Xms64m Xmx128m 才能在小機器玩一下。
  2. 因為具有所謂的穿透性,說明程式不用改,可以直接在數十台直接部署,新增物件時,到 server node 改一下 tc-config.xml 就可以。
  3. server node 很像物件即時狀態交換中心,效率與同步衝突等等議題還有待練習觀察。
  4. JVM network 是個星狀網路,連結是採用 TCP/IP ,需要一直保持連線,如果斷掉連線 再回來,會回復到目前最新狀態。

Comments

(leave url/email »)

   Preview comment