Я работаю над настройкой производительности моего воспламенительного кластера при горизонтальном масштабировании. Мой вариант использования - файлы, сохраненные в IGFS. Средний размер будет около 2 м, максимальный размер 120 г, с 95 процентилем около 1 г. Тяжелый перекос в сторону меньшего размера.
Моя модель заключается в том, что можно потерять данные, поскольку каждый фрагмент данных может быть восстановлен с помощью снижения производительности. Тем не менее, я не хочу, чтобы мой кластер зажигания был поврежден, если его участники вышли из строя, так как повторная загрузка всех данных была бы очень плохим днем для моих пользователей (и, соответственно, меня).
С другой стороны, я хочу, чтобы сохранения происходили как можно быстрее. Итак, я придерживаюсь подхода, что это нормально, чтобы исключить данные, и хорошо потерять некоторое количество данных, если несколько узлов выйдут из строя, если я не потеряю более 10% своих данных в случае сбоя.
У меня есть FileSystemConfiguration с именем "igfs", и я хочу, чтобы он сохранялся в отложенном режиме до DataStorageConfiguration, также называемой "igfs".
Чтобы иметь некоторую избыточность, я настроил ignite для использования 1 резервной копии с IgniteConfiguration.AtomicConfiguration.backup = 1. Я думаю, это означает, что каждая запись в ignite записывает в один дубликат. Однако я хочу, чтобы резервное копирование происходило АСИНХРОННО. Я не могу найти способ сделать это для записей IGFS. Есть ли способ?
Кроме того, есть ли способ настроить igfs для отложенной записи на уровень постоянства по умолчанию, который основан на диске? Я действительно хочу закончить свои записи от моего клиента и иметь данные только в памяти. Он может записывать на диск в свое время.
<?xml version = .....
<beans ....
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="marshaller">
<bean class="org.apache.ignite.internal.binary.BinaryMarshaller" />
</property>
<property name="failureDetectionTimeout" value="10000" />
<property name="clientFailureDetectionTimeout" value="10000" />
<property name="peerClassLoadingEnabled" value="true" />
<property name="metricsLogFrequency" value="#{120*1000}"/>
<property name="atomicConfiguration">
<bean class="org.apache.ignite.configuration.AtomicConfiguration">
<property name="backups" value="1" />
</bean>
</property>
<property name="fileSystemConfiguration" >
<list>
<bean class="org.apache.ignite.configuration.FileSystemConfiguration">
<property name="name" value="igfs" />
<property name="blockSize" value="262144" />
<property name="bufferSize" value="262144" />
<property name="defaultMode" value="DUAL_ASYNC" />
<property name="dataCacheConfiguration" >
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="onheapCacheEnabled" value="true" />
<property name="evictionPolicy">
<bean class="org.apache.ignite.cache.eviction.lru.LruEvictionPolicy">
<property name="maxMemorySize" value="#{10L * 1024 * 1024 * 1024}" />
</bean>
</property>
<property name="eagerTtl" value="true" />
<property name="expiryPolicyFactory">
<bean class="javax.cache.expiry.CreatedExpiryPolicy" factory-method="factoryOf"?
<constructor-arg>
<bean class="javax.cache.expiry.Duration">
<constructor-arg value="HOURS"/>
<constructor-arg value="15"/>
</bean>
</constructor-arg>
</bean>
</property>
<property name="atomicityMode" value="ATOMIC" />
<property name="statisticsEnabled" value="true" />
</bean>
</property>
</bean>
</list>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="messageQueueLimit" value="500"
</bean>
</property>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>IP:47500..47509</value>
<value>IP:47500..47509</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<property name="dataRegionConfigurations">
<list>
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="name" value="igfs" />
<property name="persistenceEnabled" value="true" />
<property name="metricsEnabled" value="true" />
<property name="maxSize" value="#{35: * 1024 * 1024 * 1024}" />
</bean>
</list>
</property>
<property name="defaultDataRegionConfiguration">
<property name="persistenceEnabled" value="true" />
<property name="metricsEnabled" value="true" />
<property name="maxSize" value="#{35: * 1024 * 1024 * 1024}" />
</property>
<property name="systemRegionMaxSize" value="#{6L * 1024 * 1024 * 1024}" />
</bean>
</property>
</bean>
Конец