Конфигурация кеша#
Коды операций#
После успешного подтверждения подключения к узлу сервера DataGrid клиент может выполнять операции по настройке кеша. Клиент отправляет запрос (подробнее о структуре запросов и ответов написано в разделах ниже) с конкретным кодом операции:
Операция |
Код операции |
|---|---|
|
1050 |
|
1051 |
|
1052 |
|
1053 |
|
1054 |
|
1055 |
|
1056 |
|
2000 |
|
2001 |
|
2002 |
|
2003 |
|
2004 |
|
2005 |
|
3000 |
|
3001 |
|
3002 |
|
3003 |
Указанные выше коды операций являются частью заголовка запроса — подробнее написано в подразделе «Стандартный заголовок сообщения» раздела «Обзор бинарного протокола клиента».
Пользовательские методы, которые используются при реализации примеров фрагментов кода ниже
В некоторых примерах кода ниже используются:
метод
readDataObject(), который описан в подразделе «Объекты данных» раздела «Обзор бинарного протокола клиента»;методы, которые используют порядок байтов little-endian для чтения и записи значений, состоящих из нескольких байтов — они включены в раздел «Формат данных».
OP_CACHE_CREATE_WITH_NAME#
Создает кеш с указанным именем. Можно применить шаблон кеша, если в его названии есть символ *. Если кеш с указанным именем уже существует, генерируется исключение.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Имя кеша |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
String cacheName = "myNewCache";
int nameLength = cacheName.getBytes("UTF-8").length;
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(5 + nameLength, OP_CACHE_CREATE_WITH_NAME, 1, out);
// Имя кеша.
writeString(cacheName, out);
// Отправить запрос.
out.flush();
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
readResponseHeader(in);
OP_CACHE_GET_OR_CREATE_WITH_NAME#
Создает кеш с указанным именем. Можно применить шаблон кеша, если в его названии есть символ *. Если кеш с указанным именем уже существует, никаких действий не выполняется.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Имя кеша |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
String cacheName = "myNewCache";
int nameLength = cacheName.getBytes("UTF-8").length;
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(5 + nameLength, OP_CACHE_GET_OR_CREATE_WITH_NAME, 1, out);
// Имя кеша.
writeString(cacheName, out);
// Отправить запрос.
out.flush();
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
readResponseHeader(in);
OP_CACHE_GET_NAMES#
Получает имена существующих кешей.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Количество кешей |
|
Имя кеша. |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(5, OP_CACHE_GET_NAMES, 1, out);
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
readResponseHeader(in);
// Количество кешей.
int cacheCount = readIntLittleEndian(in);
// Имена кешей.
for (int i = 0; i < cacheCount; i++) {
int type = readByteLittleEndian(in); // Код типа.
int strLen = readIntLittleEndian(in); // Длина.
byte[] buf = new byte[strLen];
readFully(in, buf, 0, strLen);
String s = new String(buf); // Имя кеша.
System.out.println(s);
}
OP_CACHE_GET_CONFIGURATION#
Получает конфигурацию для указанного кеша.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
|
Флаг |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
|
Длина конфигурации в байтах (все параметры конфигурации) |
|
Структура конфигурации кеша — подробнее написано в таблице ниже |
Конфигурация кеша:
Тип поля |
Описание |
|---|---|
|
Количество резервных копий (backups) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Название |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Количество полей |
|
Структура |
|
Количество свойств |
|
Структура |
QueryEntity:
Тип поля |
Описание |
|---|---|
|
Название типа ключа |
|
Название типа значения |
|
Название таблицы |
|
Название поля ключа |
|
Название поля значения |
|
Количество полей |
|
Структура |
|
Количество псевдонимов |
|
Псевдонимы названий полей |
|
Количество индексов |
|
Структура |
String cacheName = "myCache";
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(5, OP_CACHE_GET_CONFIGURATION, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Нет флагов.
writeByteLittleEndian(0, out);
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
readResponseHeader(in);
// Длина конфигурации.
int configLen = readIntLittleEndian(in);
// `CacheAtomicityMode`.
int cacheAtomicityMode = readIntLittleEndian(in);
// Резервные копии.
int backups = readIntLittleEndian(in);
// `CacheMode`.
int cacheMode = readIntLittleEndian(in);
// `CopyOnRead`.
boolean copyOnRead = readBooleanLittleEndian(in);
// Другие конфигурации.
OP_CACHE_CREATE_WITH_CONFIGURATION#
Создает кеш с предоставленной конфигурацией. Если кеш с указанным именем уже существует, генерируется исключение.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Длина конфигурации в байтах (все параметры конфигурации) |
|
Количество параметров конфигурации |
|
Данные о свойствах конфигурации. |
Можно указать любое количество параметров конфигурации. Поле Name обязательное. Данные конфигурации кеша задаются в форме «ключ-значение», где ключ — идентификатор свойства типа short, а значение — данные, которые относятся к конкретному свойству.
В таблице описаны все доступные параметры конфигурации:
Код свойства |
Тип свойства |
Описание |
|---|---|---|
2 |
|
|
3 |
|
Резервные копии (backups) |
1 |
|
|
5 |
|
|
100 |
|
|
405 |
|
|
406 |
|
|
400 |
|
|
402 |
|
|
403 |
|
|
206 |
|
|
0 |
|
Название |
101 |
|
|
404 |
|
|
202 |
|
|
201 |
|
|
6 |
|
|
303 |
|
|
304 |
|
|
301 |
|
|
300 |
|
|
305 |
|
|
306 |
|
|
302 |
|
|
205 |
|
|
204 |
|
|
203 |
|
|
4 |
|
|
401 |
|
Количество свойств |
200 |
|
Количество свойств |
QueryEntity:
Тип поля |
Описание |
|---|---|
|
Название типа ключа |
|
Название типа значения |
|
Название таблицы |
|
Название поля ключа |
|
Название поля значения |
|
Количество |
|
Структура |
|
Количество псевдонимов |
|
Псевдонимы названий полей. |
|
Количество |
|
Структура |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(30, OP_CACHE_CREATE_WITH_CONFIGURATION, 1, out);
// Длина конфигурации в байтах.
writeIntLittleEndian(16, out);
// Количество свойств.
writeShortLittleEndian(2, out);
// Код операции резервной копии.
writeShortLittleEndian(3, out);
// Количество резервных копий: 2.
writeIntLittleEndian(2, out);
// Название кода операции.
writeShortLittleEndian(0, out);
// Название.
writeString("myNewCache", out);
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_GET_OR_CREATE_WITH_CONFIGURATION#
Создает кеш с предоставленной конфигурацией. Если кеш с указанным именем уже существует, никаких действий не выполняется.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Конфигурация кеша — подробнее о формате написано в таблицах выше |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
writeRequestHeader(30, OP_CACHE_GET_OR_CREATE_WITH_CONFIGURATION, 1, out);
// Длина конфигурации в байтах.
writeIntLittleEndian(16, out);
// Количество свойств.
writeShortLittleEndian(2, out);
// Код операции резервной копии.
writeShortLittleEndian(3, out);
// Количество резервных копий: 2.
writeIntLittleEndian(2, out);
// Название кода операции.
writeShortLittleEndian(0, out);
// Название.
writeString("myNewCache", out);
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
// Заголовок ответа.
readResponseHeader(in);
OP_CACHE_DESTROY#
Уничтожает кеш с указанным именем.
Тип поля запроса |
Описание |
|---|---|
|
Заголовок запроса |
|
Идентификатор кеша; хеш-код имени кеша в Java-стиле |
Тип поля ответа |
Описание |
|---|---|
|
Заголовок ответа |
String cacheName = "myCache";
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
// Заголовок запроса.
writeRequestHeader(4, OP_CACHE_DESTROY, 1, out);
// Идентификатор кеша.
writeIntLittleEndian(cacheName.hashCode(), out);
// Отправить запрос.
out.flush();
// Прочитать результаты.
DataInputStream in = new DataInputStream(socket.getInputStream());
readResponseHeader(in);