`
highriver
  • 浏览: 71734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Summary of Terracotta Locks

    博客分类:
  • java
阅读更多
Summary of Terracotta Locks
cluster lock失效的情况:
1.if the object is shared after it is locked. Instead, an error occurs. See an example in the following gotcha.

share object应该在锁定(不管是local lock还是cluster lock)它之前操作。clsuter lock块中只操作cluster object.


    private static void lockBeforeShared() {
        Map<String, Object> map = new HashMap<String, Object>();
        Object obj = new Object();
        synchronized (obj) {
            synchronized (map) {
                map.put("obj", obj);

            }
            //tried to unlock the foo object which is now shared, but a cluster lock was never acquired
        }
    }


    private static void shareBeforeLock() {
        Map<String, Object> map = new HashMap<String, Object>();
        Object obj = new Object();
        synchronized (map) {
            map.put("obj", obj);
        }
        synchronized (obj) {// obtain cluster lock
            //other obj operation
        }
        //release cluster lock
    }


2.in methods that have no synchronization, unless you configure auto-synchronize to be true.

如果方法没有sync,那么即使在tc-config.xml中配置了auto-lock。这个cluster lock也不会起作用。auto-lock针对没有sync的方法,必须使用auto-synchronize= true.
另外注意,如果方法有sync,但是没有配置tc-config.xml的auto-lock部分,肯定连cluster-lock都不会生成。

3.if you aren't synchronizing on a clustered object.
如果sync不是针对cluster object,那么即使配置了也不会起作用。

4.if you synchronize on an object that isn't clustered yet, even if it becomes clustered within the scope of your synchronization. The object must be clustered before you synchronize on it or no cluster behavior will occur.
如果sync块内才将object变成cluster object,那么已经晚了。所以sync只能针对sync块之前就已经是cluster object的对象,才起作用。

5.in methods that do not match a lock configuration stanza. Of course, you do not need to configure locking for code that is already addressed in the configuration of a Terracotta Integration Module that you are using.
方法不满足通配符,肯定不会起作用。



操作一个cluster object时出现的情况:

1.outside the scope of a clustered lock, you will get an error.
如果在一个cluster lock范围之外操作,肯定会报错。所以结合上面的3,4可以确认,cluster object的操作与cluster lock肯定是结伴同行的。

2.in code that is not instrumented by Terracotta, the changes to that object will be invisible to Terracotta. As a result, the clustered object may be in an inconsistent state. Therefore, you MUST ensure that you instrument all classes that manipulate clustered objects. See Gotchas: Uninstrumented Access for more details.

类没有声明为instrument-class,那么该类针对clustered object的修改比如重新赋值这样的操作不会提交到TC,进而导致clustered object的状态不连续。
解决的办法有二种,一种是通过方法去访问cluster object而不是直接访问;另一种方法就是将直接访问clustered object的类定义为instrumented class
分享到:
评论

相关推荐

    Terracotta

    ### Terracotta:分布式内存管理解决方案 #### 一、Terracotta概述 Terracotta是一种分布式内存管理和数据共享平台,其核心产品BigMemory Max旨在帮助应用程序实现数据在内存中的高效管理,尤其适用于分布式服务器...

    terracotta

    在本文中,我们将深入探讨Terracotta的技术细节、其在集群负载中的优势,以及如何利用terracotta-3.6.0版本来优化应用性能。 **一、Terracotta简介** Terracotta是一款开源软件,它的核心功能在于提供了一个分布式...

    terracotta集群tomcat步骤

    Terracotta集群Tomcat的配置是一项复杂而关键的任务,它涉及到分布式系统中的高可用性和负载均衡。以下将详细解释这个过程中的各个步骤和相关知识点。 首先,安装Terracotta 3.2.1版本是非常基础的一步。需要注意的...

    使用terracotta进行web session 同步

    【标题】:“使用Terracotta进行Web Session同步” 在分布式Web应用环境中,用户会话(Session)的共享和同步是一个重要的挑战。Terracotta是一款开源软件,它提供了一种高效且可靠的解决方案,允许在集群环境中...

    通过_Terracotta实现基于Tomcat的Web应用集群

    ### 通过Terracotta实现基于Tomcat的Web应用集群 #### 概述 本文主要介绍了如何利用Terracotta与Tomcat构建高效的Web应用集群。在实际应用中,通过集群技术可以显著提升系统的可用性和伸缩性,特别是对于高流量、...

    Terracotta+tomcat集群配置详细说明(写了一晚上。。)

    【 Terracotta + Tomcat 集群配置详解】 在分布式计算环境中,集群技术是提升系统可用性和性能的重要手段。本文将深入探讨 Terracotta 与 Tomcat 集群的配置,以及如何利用 Terracotta 实现高效、可靠的 session ...

    terracotta-3.7.7.tar.gz

    《Terracotta 3.7.7:分布式内存管理与集群解决方案》 Terracotta 3.7.7 是一款强大的分布式内存管理工具,它允许Java应用程序在多台服务器之间共享内存,从而实现数据的实时同步和高可用性。这款软件在2014年2月17...

    terracotta-ee-4.1.2.jar,terracotta-license.key

    Terracotta是一款强大的分布式内存管理工具,主要用于Java应用程序的集群化和数据共享。在这个场景中,我们关注的是Terracotta企业版(terracotta-ee)的4.1.2版本,以及与其配套的许可证文件(terracotta-license....

    Terracotta 3.2.1 英文文档(CHM)

    Terracotta 3.2.1 英文文档

    ehcache-terracotta代码配置

    当与Terracotta结合使用时,Ehcache可以实现分布式缓存,使得多台服务器上的应用可以共享同一份缓存数据,从而构建高可用的集群环境。在本篇中,我们将深入探讨如何在Java项目中配置Ehcache与Terracotta来实现这一...

    terracotta-ee-3.5.2

    terracotta-ee-3.5.2破解版

    terracotta license.key

    terracotta license.key ,

    使用terracotta实现session共享的证实实验

    ### 使用Terracotta实现Session共享的关键知识点 #### Terracotta简介 Terracotta是一种开源的分布式内存技术,它提供了一种简单有效的方式来管理和共享应用程序的数据。对于Java应用程序而言,Terracotta可以实现...

    terracotta 集群设置说明(中文)

    记载了terracotta如何与tomcat、jetty等服务器的集群,解释了tc-config.xml中各个配置的作用

    terracotta-eclipse-plugin-3.7.7(terracotta的Eclipse插件)

    terracotta-eclipse-plugin-3.7.7-2013-08-19_16-03-48.tar(terracotta的Eclipse插件) 发现官网挺卡的,有时候下不了,先传上来吧,供国内用户下载,这个算最新的吧。2014-02-17下载的。

    terracotta-toolkit-1.3-runtime-3.2.0.jar

    terracotta-toolkit-1.3-runtime-3.2.0.jar 集群实现JAR

    http://www.terracotta.org/

    暗示我们关注的是Terracotta公司,这是一个专注于提供分布式数据管理解决方案的公司,特别是以其开源产品Ehcache和分布式内存计算平台Quintessa闻名。 Terracotta的技术使应用程序能够利用集群硬件的资源来提高性能...

Global site tag (gtag.js) - Google Analytics