infinispan 9 '‹стратегия выселения = LRU /›' недопустимый элемент

Тег выселения Wildfly 18 не анализирует, что дает ошибку конфигурации «Не удалось проанализировать». это произойдет, когда я обновлю Wildfly 11 до 18. В wildfly 11 (infinispan 4) он работает нормально

    <subsystem xmlns="urn:jboss:domain:infinispan:4.0">
        <cache-container name="security" default-cache="auth-cache">
            <local-cache name="auth-cache">
                <locking acquire-timeout="${infinispan.cache-container.security.auth-cache.locking.acquire-timeout}"/>
                <eviction strategy="LRU" max-entries="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"/>
                <expiration max-idle="-1"/>
            </local-cache>
        </cache-container>
    </subsystem>

В Wildfly 18 с разделом ниже (НЕ РАБОТАЕТ)

    <subsystem xmlns="urn:jboss:domain:infinispan:9.0">
        <cache-container name="security" default-cache="auth-cache">
            <local-cache name="auth-cache">
                <locking acquire-timeout="${infinispan.cache-container.security.auth-cache.locking.acquire-timeout}"/>
                <eviction strategy="LRU" max-entries="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"/>
                <expiration max-idle="-1"/>
            </local-cache>
        </cache-container>
    </subsystem>

Его указание ^^^^ 'выселение' здесь недопустимо. infinispan: 9.4, в нем говорится, что выселение настраивается путем добавления, но даже это дает нераспознанную память тегов.

как добавить стратегию выселения = LRU или замену стратегии: "LRU" =?


person user1184777    schedule 28.02.2020    source источник


Ответы (2)


Согласно документам в infinispan 9.0 выселение настраивается путем добавления элемент <memory/> в ваши <*-cache/> разделы конфигурации. Выселение осуществляется Caffeine с использованием алгоритма TinyLFU с дополнительным окном допуска. Это было выбрано, так как оно обеспечивает высокую частоту совпадений, а также требует низких накладных расходов на память. Это обеспечивает лучшее соотношение попаданий, чем LRU, но при этом требует меньше памяти, чем LIRS. В целом есть два типа:

  • COUNT (Этот тип выселения удаляет записи в зависимости от того, сколько их находится в кеше. Как только количество записей станет больше, чем размер, запись будет удалена, чтобы освободить место.
  • ПАМЯТЬ - этот тип выселения оценивает, сколько каждая запись будет занимать в памяти, и удаляет запись, когда общий размер всех записей превышает настроенный размер. Этот тип работает только с примитивной оболочкой, типами String и byte [], поэтому, если требуются настраиваемые типы, вы должны включить storeAsBinary. Также выселение на основе MEMORY работает только с политикой LRU.

Я бы подумал, что вы определяете это так:

<cache-container name="security" default-cache="auth-cache">
    <local-cache name="auth-cache">
        <...your other options...>
        <object-memory/>
    </local-cache>
</cache-container>

OR

<binary-memory eviction-type="MEMORY/COUNT"/>

OR

off-heap-memory eviction-type="MEMORY/COUNT"/>

И вы всегда можете указать размер:

size="${infinispan.cache-container.security.auth-cache.eviction.max-entries}"

Типы складов:

  • object-memory (Сохраняет записи как объекты в куче Java. Это тип хранилища по умолчанию. Тип хранилища поддерживает только COUNT, поэтому вам не нужно явно указывать тип вытеснения. Политика = TinyLFU)
  • двоичная память (хранит записи как байты [] в куче Java. Тип исключения: COUNT OR MEMORY. Policy = TinyLFU)
  • off-heap-memory (Сохраняет записи как байты [] в собственной памяти вне Java. Тип вытеснения: COUNT OR MEMORY. Policy = LRU)
person Lonzak    schedule 03.03.2020

Ответ Лонзака верен. Кроме того, вы можете просто использовать конфигурацию urn: jboss: domain: infinispan: 4.0 из WildFly 9 в WildFly 19. WildFly автоматически обновит конфигурацию до эквивалента в текущей версии схемы.

person Paul Ferraro    schedule 04.03.2020