Ncache совместно используется несколькими процессорами на одном сервере

Я работаю над требованием кэшировать некоторые значения базы данных, которые можно использовать повторно. Но я хочу, чтобы кэш был доступен для всех процессоров на одном сервере.

Обзор:

Таким образом, в основном будет несколько процессоров, которые получают работу от API и обрабатывают запись в базе данных. Некоторые из этих значений базы данных будут кэшированы.

Процессоры будут несколькими службами Windows, и я хочу, чтобы они использовали один и тот же кеш. Как этого добиться с помощью Ncache? Я новичок в этом. Поэтому любые ссылки или направления приветствуются.


person alangilbi    schedule 20.08.2018    source источник


Ответы (1)


Самая большая ценность NCache заключается в том, что его можно использовать в качестве OutProc распределенного кэша в памяти, где кэш находится внутри самого процесса NCache; это отличается от кэша InProc, где доступ будет ограничен одним процессом.

Вам необходимо настроить OutProc кеш, работающий либо на отдельном выделенном сервере кэширования (или кластере), либо на том же сервере, что и ваши службы.

См. http://www.alachisoft.com/resources/docs/ncache/admin-guide/local-cache.html для получения дополнительной информации о кэшах OutProc и InProc.

После установки сервера NCache вы можете создать свою конфигурацию кэширования, изменив файл config.ncconf, который по умолчанию находится в C:\Program Files\NCache\config.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
    <cache-config cache-name="MyOutProcCacheName">
    <cache-settings inproc="False">
      <logging enable-logs="True" trace-errors="True" trace-debug="False" log-path=""/>
      <performance-counters enable-counters="True" snmp-port="0"/>
      <cache-notifications item-remove="False" item-add="False" item-update="False"/>
      <cleanup interval="15sec"/>
      <storage type="heap" cache-size="2024mb"/>
      <eviction-policy default-priority="normal" eviction-ratio="5%"/>
      <cache-topology topology="local-cache"/>
      <client-death-detection enable="False" grace-interval="60sec"/>
    </cache-settings>
  </cache-config>
 </configuration>

Приведенная выше конфигурация создаст кэш OutProc на локальном сервере (см. cache-topology). При необходимости его можно настроить как различные зеркальные, секционированные или реплицированные кэши в кластерной среде (см. topologies.html" rel="nofollow noreferrer">http://www.alachisoft.com/resources/docs/ncache/admin-guide/cache-topologies.html).

Затем вы можете запустить службу NCache и подключиться к службе из своего приложения, а также инициализировать подключение к именованному экземпляру кэша в приведенной выше конфигурации.

Cache outProcCache = NCache.InitializeCache("MyOutProcCacheName");

Вы также можете настроить подключение к серверу/службе NCache полностью в коде, а не в файле client.ncconf, отправив параметры конфигурации в метод InitializeCache выше.

CacheInitParams connectionParams = new CacheInitParams();
connectionParams.ServerList = new CacheServerInfo[]{ new CacheServerInfo("ncacheIp", ncachePort) };

Cache outProcCache = NCache.InitializeCache("MyOutProcCacheName", connectionParams);
person Sivart    schedule 25.01.2019