Я использую Ignite 2.5 и развернул пару таких серверов:
- Один компьютер работает как сервер БД с включенным постоянством.
- Три других компьютера являются вычислительными серверамис тем же кэшем, что и на сервере БД, но без постоянства.
У меня есть такие классы:
public class Address implements Serializable
{
String streetName;
String houseNumber;
String cityName;
String countryName;
}
public class Person implements Serializable
{
@QuerySqlField
String firstName;
@QuerySqlField
String lastName;
@QuerySqlField
Address homeAddress;
}
Кэш настроен на всех серверах с этим XML:
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="Persons" />
<property name="cacheMode" value="PARTITIONED" />
<property name="backups" value="0" />
<property name="storeKeepBinary" value="true" />
<property name="atomicityMode" value="TRANSACTIONAL"/>
<property name="writeSynchronizationMode" value="FULL_SYNC"/>
<property name="indexedTypes">
<list>
<value>java.lang.String</value>
<value>Person</value>
</list>
</property>
</bean>
Кроме того, на сервере БД поддерживается постоянство, например:
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<property name="storagePath" value="/data/Storage" />
<property name="walPath" value="/data/Wal" />
<property name="walArchivePath" value="/data/WalArchive" />
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="initialSize" value="536870912" />
<property name="maxSize" value="1073741824" />
<property name="persistenceEnabled" value="true" />
</bean>
</property>
</bean>
</property>
<property name="binaryConfiguration">
<bean class="org.apache.ignite.configuration.BinaryConfiguration">
<property name="compactFooter" value="false" />
</bean>
</property>
Кэш используется с put / get, но также с SqlQuery и SqlFieldsQuery.
From timeко времени я должен обновить определения классов, то есть добавить другое поле или около того.Я в порядке, чтобы отключить весь кластер для обновления классов, так как это все равно требует обновления приложения.
- Я полагаю, что вышеуказанная конфигурация в целом подходит для Ignite?
- Правильно ли я понимаю этот другой вопрос ( Apache Ignite для постоянного хранилища, рекомендуемый путь для версий классов ) правильно, что на сервере БД у меня не будет классов Person в пути к классам?Разве конфигурация XML не потерпит неудачу, потому что в ней отсутствуют классы индекса?
- На вычислительных серверах я также не буду использовать классы Person, а вместо этого буду читать данные из кэша в BinaryObject?Идея вручную заполнить мой класс Person из BinaryObject?
В настоящее время, когда я обновляю поле в классе Person, я получаю странные ошибки, такие как:
Неизвестная пара [platformId = 0, typeId = 1968448811]
Извините, если здесь есть несколько вопросов, я почему-то теряюсь с проблемами "Неизвестная пара" и теперь спрашиваю, верна ли моя полная настройка.
Спасибо за любые советы.