傳統 Java 應用叢集採用 Share-Nothing Architecture (SNA),對象無法跨 JVM 共享。Terracotta 通過中央式 Cache 服務器 + 字節碼注入,讓 POJO 在叢集間透明共享,號稱「POJO 開發模型最後一塊拼圖」。
tc-config.xml 以 AOP 方式修改目標類字節碼。autolock 將 synchronized 擴展為叢集鎖,以鎖為邊界批量更新屬性形成分布式事務。tc-config.xml,實時觀察共享對象值變化,自動提示配置缺漏錯誤。tc-config.xml,降低配置門檻。單機代碼遷移叢集,必須先確保共享對象線程安全:用 ConcurrentHashMap、AtomicInteger 或 synchronized 保護字段訪問,再通過 autolock 擴展到叢集。鎖設計不當是性能殺手。
文件句柄、Socket、ThreadLocal 等無法跨 JVM 共享,需在配置中標記為 Transient。其他節點該字段將被強制置 null。推薦寫 init() 方法重新初始化,在 tc-config.xml 配置調用;或用 BeanShell 腳本內聯初始化(較難寫)。
Terracotta Server 單點風險大,生產必須叢集模式:
國內已可購買技術支援服務。遺憾:需等 12 月 TC 2.7 版才支援 GlassFish v2。
Terracotta 以「最小侵入、字段級同步、分布式鎖、HA 架構」解決 POJO 跨 JVM 共享難題,是將單機應用平滑遷移為叢集應用的關鍵基礎設施。