【问题标题】:How to use Distributed Object Cache in WebSphere 9 clustered environment如何在 WebSphere 9 集群环境中使用分布式对象缓存
【发布时间】:2019-07-15 23:16:45
【问题描述】:

我们有一个带有 2 台服务器的 WAS9 集群。我们的应用程序依赖于维护一个对象列表。在服务器 A 上运行的应用程序创建了一个对象,并且该对象不在服务器 B 上的应用程序实例的范围内。为了复制对象状态,我们尝试在资源 -> 缓存实例 -> 对象缓存实例下启用分布式缓存(范围是集群,提供者是默认动态缓存,启用缓存复制)

地图的状态不在服务器之间共享。服务器 A 上的应用程序将对象放入地图中,一旦重新加载并负载平衡到服务器 B 上,该对象在地图中不可用。 DistributedMap 的行为类似于 HashMap,根本不进行分布式。

这是一个简单的代码示例,展示了我们如何尝试使用分布式缓存功能:

@RequestMapping("/test_object_map")
    @Async
    public String testObjectMap(@RequestParam(value="input", defaultValue="") String input) throws InterruptedException, NamingException, UnknownHostException {

        InitialContext ic = new InitialContext();
        DistributedObjectCache wasCashe = (DistributedObjectCache)ic.lookup(DIST_MAP_NAME);

        String testKey = "test_key";
        UseCase object = null;

        if(wasCashe.containsKey(testKey)) {
            object = (UseCase) wasCashe.get(testKey);

        } else {
            object = new UseCase();
            object.setSignature(" UC launched on " + InetAddress.getLocalHost().getHostName());
            wasCashe.put(testKey, object);

        }

        String status = "";

        if(object != null) {
            status = "host: " + InetAddress.getLocalHost().getHostName() + "; object state: " + object.getSignature() ;
        }

        return "[{\"message\": \"" + status + "\"}]";
    }

我们观察到的行为是对象在“server_1”上实例化,当请求平衡到“server_2”时,该对象不存在,“server_2”创建了一个新的对象实例。相反,我们希望能够在两个服务器之间共享地图的状态。

如何做到这一点?

【问题讨论】:

    标签: spring-boot websphere distributed


    【解决方案1】:

    为了跨 WebSphere 集群成员复制内容,必须为复制设置 DynaCache 缓存实例,与复制域相关联,并在 JVM 中实际创建。定义缓存实例并不等同于在 JVM 中创建缓存实例。调用 ic.lookup() 时会创建缓存实例。

    我的猜测是,server_1 将内容放入缓存实例时,server_2 尚未创建缓存实例,因此不会复制内容。我假设您已将共享策略设置为 PUSH。

    要在服务器启动时强制创建缓存实例,请添加定制属性 com.ibm.ws.cache.CacheConfig.createCacheAtServerStartup 并设置为 true。您可以将此添加为 JVM 自定义属性(影响所有缓存实例)或缓存实例上的自定义属性(仅影响此缓存实例)。

    【讨论】:

      猜你喜欢
      • 2014-02-28
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2014-12-17
      相关资源
      最近更新 更多