0

バックグラウンド:

4 つの物理サーバー (4 つの IPS) があり、それぞれがポート 80 で実行されている JBOSS 6 EAP で実行されています。すべての要求は、ロード バランサーを介してこれらのサーバーのいずれかにリダイレクトされます。このような分散環境にJavaキャッシュシステムを実装して、各サーバーキャッシュでプロパティが更新されるようにしました。

POC: そのために、JCS v1.3 ラテラル キャッシングを実装するローカル システムで小規模な POC を行いました。Maven プロジェクトで有効にしました。次の構成は、.ccf ファイルで使用されます。

  jcs.default=
  jcs.default.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
  jcs.default.cacheattributes.MaxObjects=1000
  jcs.default.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
 # PRE-DEFINED CACHE REGION

##############################################################
##### AUXILIARY CACHES
# LTCP AUX CACHE
   jcs.auxiliary.LTCP=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.LateralTCPCacheFactory
   jcs.auxiliary.LTCP.attributes=org.apache.commons.jcs.auxiliary.lateral.socket.tcp.TCPLateralCacheAttributes
  #jcs.auxiliary.LTCP.attributes.TcpServers=152.144.219.209:8080
   jcs.auxiliary.LTCP.attributes.TcpListenerPort=1118
   jcs.auxiliary.LTCP.attributes.UdpDiscoveryAddr=228.5.6.8
   jcs.auxiliary.LTCP.attributes.UdpDiscoveryPort=6780
   jcs.auxiliary.LTCP.attributes.UdpDiscoveryEnabled=true
   jcs.auxiliary.LTCP.attributes.Receive=true
   jcs.auxiliary.LTCP.attributes.AllowGet=true
   jcs.auxiliary.LTCP.attributes.IssueRemoveOnPut=false
   jcs.auxiliary.LTCP.attributes.FilterRemoveByHashCode=false
   jcs.auxiliary.LTCP.attributes.SocketTimeoOt=1001
   jcs.auxiliary.LTCP.attributes.OpenTimeOut=2002
   jcs.auxiliary.LTCP.attributes.ZombieQueueMaxSize=2000

また、文字列属性をキャッシュに保存し、キャッシュから取得するためのゲッター メソッドとセッター メソッドを実装します。

public void addProp(String propId)
        throws PimsAppException {
    try {
        configMSCache.put(propId, propId);
    } catch (CacheException e) {
        e.printStackTrace();
    }       

}

@Override
public String testProp(String propId) throws PimsAppException {
    if(configMSCache!=null){
        return (String) configMSCache.get(propId);
    }else{
    return "It dint work";
    }
} 

アプリケーションは正常にデプロイされ、起動時にエラーは発生しません。

テスト方法: project.war をローカル サーバーと異なる IP を持つリモート サーバーにデプロイしました。両方のマシンが同じネットワーク内にあるため、互いの IP にアクセスする際にファイアウォールの問題はありません。サーバーにプロパティを保存して取得しました。(うまくいきました)リモートマシンでローカル経由で保存されたプロパティを取得しようとしました。(空白の応答を返します)。分散キャッシュ機能が実現されていないことを意味します。

疑問 : 1. 補助キャッシュは適切に設定されていますか? 構成2を意味します。適切にテストしていますか、または開発環境でどのようにテストできますか。3. JCS UDP Discovery では、複数のマシンで同じ構成をサポートできますが、なぜリモート マシンでは機能しないのですか? 4. または、キャッシング メカニズムはありますか。適切な例とドキュメントがあれば、アプリケーションのニーズを十分に満たすことができます (背景セクションで説明したように)。

前もって感謝します。

4

1 に答える 1