TERRA-COTTA 之TCCONFIG配置问题 回顾
生活随笔
收集整理的這篇文章主要介紹了
TERRA-COTTA 之TCCONFIG配置问题 回顾
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問題描述:
配置完成TERRA-COTTA的config.xml之后,能夠正常啟動,并且通過其console,主從服務(wù)器均正常顯示。但是每當(dāng)運行時持久化時會出現(xiàn)主鍵沖突,tc—config.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?> <con:tc-config xmlns:con="http://www.terracotta.org/config"><servers><server host="192.168.7.73" name="73"><dso-port bind="192.168.7.73">9510</dso-port><jmx-port bind="192.168.7.73">9520</jmx-port><data>terracotta/server-data</data><logs>terracotta/server-logs</logs><statistics>terracotta/cluster-statistics</statistics></server><server host="192.168.7.39" name="39"><dso-port bind="192.168.7.39">9510</dso-port><jmx-port bind="192.168.7.39">9520</jmx-port><data>terracotta/server-data</data><logs>terracotta/server-logs</logs><statistics>terracotta/cluster-statistics</statistics></server></servers><clients><logs>terracotta/client-logs</logs></clients><application><dso><instrumented-classes>....................... <include><class-expression>cfca.xfraud.common.domain.Activity</class-expression></include>.......................</instrumented-classes><locks>....................... <autolock auto-synchronized="false"><method-expression>* cfca.xfraud.common.domain.Activity.*(..)</method-expression><lock-level>write</lock-level></autolock>........................</locks><roots>........................ <root><field-name>cfca.xfraud.common.domain.Activity.someFields</field-name></root>........................</roots></dso></application> </con:tc-config>?解決思路:
Activity的someFields,被共享后將會變成全局變量,因而升級為類變量,Terra-cotta在執(zhí)行時,判斷Activity的某個屬性(hasPersisted<boolean>)時,假定共享修改其為true,而實例變量為false,將會導(dǎo)致該分布式緩存場景下所有activity的hasPersisted的訪問值均被覆蓋為共享值,也就是說為true(即使其對象屬性為false)。
?
由此觀之:讀共享變量的優(yōu)先級大于每個JVM中實例變量的讀取優(yōu)先級。
?
經(jīng)驗:
一般來說在分布式緩存中的需要共享的變量往往是那些在本地JVM中就設(shè)置為static類型的變量
?
總結(jié)
以上是生活随笔為你收集整理的TERRA-COTTA 之TCCONFIG配置问题 回顾的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux c 内存elf,关于LINU
- 下一篇: Qt 设置父控件样式不影响子控件的解决方