|
8 | 8 |
|
9 | 9 | * Гарантиями at-least-once при чтении сообщений подписчиками.
|
10 | 10 | * Гарантиями exactly-once при публикации сообщений (дедупликация сообщений).
|
11 |
| -* Гарантиями последовательной обработки сообщений ([FIFO](https://en.wikipedia.org/wiki/Message_queue))), опубликованных с одинаковым [идентификатором источника](#producer-id). |
| 11 | +* Гарантиями последовательной обработки сообщений ([FIFO](https://en.wikipedia.org/wiki/Message_queue)), опубликованных с одинаковым [идентификатором источника](#producer-id). |
12 | 12 | * Масштабирование пропускной способности передачи сообщений, публикуемых с разными идентификаторами последовательности.
|
13 | 13 |
|
14 | 14 | ## Сообщения {#message}
|
|
27 | 27 |
|
28 | 28 | {% endnote %}
|
29 | 29 |
|
| 30 | +Партиции бывают двух видов: |
| 31 | + |
| 32 | +- **Активные.** Все партиции по умолчанию, в них возможны как запись, так и чтение. |
| 33 | +- **Неактивные.** Из них можно только читать. Неактивные партиции появляются после разделения партиции при включенном [автопартиционировании](#autopartitioning). Неактивные партиции удаляются автоматически, когда все сообщения из такой партиции удалены по истечении времени хранения. |
| 34 | + |
30 | 35 | ### Смещение (offset) {#offset}
|
31 | 36 |
|
32 | 37 | Все сообщения внутри партиции имеют уникальный порядковый номер, называемый `смещением` (offset). Смещение монотонно возрастает при записи новых сообщений.
|
33 | 38 |
|
| 39 | +## Автопартиционирование {#autopartitioning} |
| 40 | + |
| 41 | +Количество партиций топика и их пропускная способность задаются при создании топика и определяют общую пропускную способность топика на запись. Если максимальная требуемая скорость записи в топик неизвестна при его создании или будет меняться со временем, можно воспользоваться автопартиционированием для динамического масштабирования топика. Если на топике включено автопартиционирование вверх, то количество партиций в таком топике автоматически увеличивается при возрастании скорости записи (подробнее см. [Режимы автопартиционирования](#autopartitioning_modes)). |
| 42 | + |
| 43 | +### Гарантии {#autopartitioning_guarantee} |
| 44 | + |
| 45 | +1. SDK и сервер обеспечивают гарантии записи exactly-once в случае разделения партиций. Это означает, что любое сообщение будет записано либо в родительскую партицию, либо в одну из дочерних. Сообщение не может быть записано одновременно и в родительскую, и в дочернюю партиции. Более того, сообщение не может быть записано в одну партицию несколько раз. |
| 46 | +2. SDK и сервер обеспечивают порядок чтения. Сначала данные будут вычитаны из родительских партиций, и только затем — из дочерних. |
| 47 | +3. Таким образом, гарантии exactly-once записи и порядка чтения продолжают выполняться для конкретного [идентификатора источника (producer-id)](#producer-id). |
| 48 | + |
| 49 | +### Режимы автопартиционирования {#autopartitioning_modes} |
| 50 | + |
| 51 | +Для любого топика возможны следующие режимы автопартиционирования. |
| 52 | + |
| 53 | +#### Выключено (DISABLED) |
| 54 | + |
| 55 | +Автопартиционирование отключено. В этом случае число партиций остаётся неизменным, и автоматическое масштабирование не происходит. |
| 56 | + |
| 57 | +Исходное количество партиции указывается при создании топика. При ручном изменении числа партиций в этом режиме добавляются новые партиции. Все ранее существовавшие партиции остаются активными. |
| 58 | + |
| 59 | +#### Увеличение (UP) |
| 60 | + |
| 61 | +На топике включено автопартиционирование «вверх», то есть при увеличении скорости записи количество партиций увеличивается. При уменьшении скорости записи количество партиций остаётся неизменным. |
| 62 | + |
| 63 | +Алгоритм увеличения числа партиций: если в течение заданного времени скорость записи в какую-то партицию превышает указанный порог (в % от максимальной скорости записи в партицию), эта партиция делится на две. Исходная партиция становится неактивной, и из неё можно только читать данные. Когда истечёт срок хранения сообщений в этой партиции и все сообщения будут удалены, сама партиция также будет удалена. Две новые дочерние партиции становятся активными, и в них возможны как чтение, так и запись. |
| 64 | + |
| 65 | +#### Пауза (PAUSED) |
| 66 | + |
| 67 | +Автопартиционирование на топике приостановлено. Автоматическое увеличение числа партиций не происходит. При необходимости можно снова включить режим увеличения числа партиций. |
| 68 | + |
| 69 | +Примеры YQL-запросов для перевода топика в различные режимы автопартиционирования можно посмотреть [здесь](../yql/reference/syntax/alter-topic.md#autopartitioning). |
| 70 | + |
| 71 | +### Ограничения {#autopartitioning_constraints} |
| 72 | + |
| 73 | +При использовании автопартиционирования действуют следующие ограничения: |
| 74 | + |
| 75 | +1. Если на топике включено автопартиционирование, его нельзя отключить, можно только приостановить. |
| 76 | +2. Если на топике включено автопартиционирование, то запись или чтение в такой топик по [протоколу Kafka API](../reference/kafka-api/index.md) невозможны. |
| 77 | +3. Автопартиционирование не может быть включено на топике с режимом хранения по месту. |
| 78 | + |
34 | 79 | ## Источники и группы сообщений {#producer-id}
|
35 | 80 |
|
36 |
| -Идентификатор источника, `producer_id`, и идентификатор группы сообщений, `message_group_id`, — это способ упорядочить набор сообщений. Порядок записанных сообщений сохраняется в пределах пар: <идентификатор источника, идентификатор группы сообщений>. |
| 81 | +Идентификатор источника, `producer_id`, и идентификатор группы сообщений, `message_group_id`, — это способ упорядочить набор сообщений. Порядок записанных сообщений сохраняется в пределах пар: `<producer_id, message_group_id>`. |
37 | 82 |
|
38 | 83 | При первом использовании пара <идентификатор источника, группа сообщений> привязывается к [партиции](#partitioning) топика по алгоритму round-robin и все сообщения с этой парой попадают в одну и ту же партицию. Привязка удаляется при отсутствии новых сообщений, использующих этот идентификатор источника, в течение 14 дней.
|
39 | 84 |
|
40 | 85 | {% note warning %}
|
41 | 86 |
|
42 |
| -Рекомендуемое максимальное количество пар <идентификатор источника, идентификатор группы сообщений> - до 100'000 на одну партицию за последние 14 дней. |
| 87 | +Рекомендуемое максимальное количество пар `<producer_id, message_group_id>` - до 100'000 на одну партицию за последние 14 дней. |
43 | 88 |
|
44 | 89 | {% endnote %}
|
45 | 90 |
|
|
0 commit comments