Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 10630|Відповідь: 1

Детальне пояснення параметрів конфігурації Кафки

[Копіювати посилання]
Опубліковано 24.06.2021 11:47:12 | | |
Конфігурації брокера

ВласністьЗа промовчаннямОпис
broker.id Кожен брокер можна ідентифікувати за унікальним невід'ємним цілочисельним ідентифікатором; Цей id може використовуватися як «ім'я» брокера, а його існування дозволяє брокеру мігрувати на інший хост/порт, не плутаючи споживачів. Ви можете обрати будь-яке число як ідентифікатор, якщо ID унікальний.
log.dirs/tmp/kafka-logsШлях, де Кафка зберігає дані. Цей шлях не є унікальним, він може бути кільком, і шляхи потрібно розділяти лише комами; Щоразу, коли створюється нова частина, вона обирається для проходження шляху, що містить найменшу кількість розділень.
Порт6667Сервер приймає порт, до якого підключається клієнт
zookeeper.connectнульФормат рядка з'єднання ZooKeeper: hostname:port, де hostname та port — це хост і порт вузла в кластері ZooKeeper відповідно. Щоб підключатися до інших вузлів ZooKeeper, коли хост виходить з ладу, ви можете створити кілька хостів наступним чином:
hostname1:port1, hostname2:port2, hostname3:port3.

ZooKeeper дозволяє додати шлях «chroot» для зберігання всіх даних Kafka у кластері під певним шляхом. Коли кілька кластерів Kafka або інших додатків використовують один і той самий кластер ZooKeeper, цей метод можна використати для встановлення шляху зберігання даних. Це можна реалізувати, відформатувавши рядок з'єднання таким чином:
hostname1:port1,hostname2:port2,hostname3:port3/chroot/path
Ця конфігурація зберігає всі дані кластера Kafka у шляху /chroot/path. Зверніть увагу, що перед запуском брокера потрібно створити цей шлях, а споживачі повинні використовувати той самий формат підключення.
message.max.bytes1000000Максимальний розмір повідомлень, який сервер може отримати. Важливо, щоб налаштування споживача і виробника щодо цієї властивості були синхронізовані, інакше повідомлення, опубліковане виробником, буде надто великим для споживача.
num.network.threads3Кількість мережевих потоків, які використовує сервер для обробки мережевих запитів; Зазвичай змінювати цю нерухомість не потрібно.
num.io.threads8Кількість потоків введення/виведення, які використовує сервер для обробки запитів; Кількість потоків має дорівнювати принаймні кількості жорстких дисків.
background.threads4Кількість потоків, що використовуються для фонової обробки, наприклад, видалення файлів; Вам не потрібно змінювати цю власність.
queued.max.requests500Максимальна кількість запитів, які можна поставити в чергу для обробки потоків введення/виведення до того, як мережевий потік припинить читати нові запити.
host.nameнульім'я брокера; Якщо ім'я хоста вже встановлене, брокер буде прив'язаний лише до цієї адреси; Якщо налаштування немає, він прив'язується до всіх інтерфейсів і публікує одну копію на ZK
advertised.host.nameнульЯкщо встановлено, він надсилається виробникам, споживачам та іншим брокерам як хост-ім'я брокера
реклама.портнульЦей порт надається виробникам, споживачам та іншим брокерам і використовується для встановлення зв'язку; Його потрібно встановити лише якщо фактичний порт і порт, який сервер має прив'язати, різні.
socket.send.buffer.bytes100 * 1024SO_SNDBUFF Розмір кешу, який сервер використовує для встановлення сокетних з'єднань
socket.receive.buffer.bytes100 * 1024SO_RCVBUFF розмір кешу, який використовується сервером для підключення до сокетів
socket.request.max.bytes100 * 1024 * 1024Максимальний розмір запиту, дозволений сервером;  Це допоможе уникнути переповнення серверів, які мають бути меншими за розмір купи Java
num.partitions1Якщо кількість розділів не вказана при створенні теми, це число буде стандартною кількістю розділів під цією темою.
log.segment.bytes1014*1024*1024Журнали розділу теми зберігаються у багатьох файлах у певній директорії, які розділяють журнали розділу на сегменти; Цей атрибут є максимальним розміром кожного файлу; Коли розміри досягають цього значення, створюється новий файл. Це налаштування можна замінити основою кожної теми.
Погляд  Вхід за гіперпосиланням видно.
log.roll.hours24 * 7Навіть якщо файл не досягає log.segment.bytes, новий файл створюється щоразу, коли час створення файлу досягає цієї властивості. Це налаштування також може бути перекрите налаштуваннями на рівні теми;
ВидВхід за гіперпосиланням видно.
log.cleanup.policyВидалити
log.retention.minutes та log.retention.hours7 днівЧас, коли кожен файл журналу зберігався перед його видаленням. Стандартний час збереження даних однаковий для всіх тем.
log.retention.minutes і log.retention.bytes використовуються для встановлення видалення файлів журналу, незалежно від того, яка властивість була переповнена.
Це налаштування властивостей можна переписати, коли тема фактично встановлена.
ВидВхід за гіперпосиланням видно.
log.retention.bytes-1Загальна кількість даних, збережених кожним розділом за кожною темою; Зверніть увагу, що це верхня межа для кожного розділу, тому це число, помножене на кількість розділів, дорівнює загальній кількості даних, збережених у кожній темі. Також зверніть увагу: якщо встановлені і log.retention.hours, і log.retention.bytes, перевищення будь-якого з лімітів призведе до видалення файлу сегмента.
Зверніть увагу, що це налаштування можна замінити кожною темою.
ВидВхід за гіперпосиланням видно.
log.retention.check.interval.ms5 хвилинПеревірте інтервал між сегментованими файлами в журналі, щоб визначити, чи відповідають атрибути файлу вимогам видалення.
log.cleaner.enablefalseКоли ця властивість встановлена як false, вона буде видалена після збереження журналу на максимальний час або розмір. Якщо встановлено true, це станеться, коли атрибут збереження досягне верхньої межіВхід за гіперпосиланням видно.
log.cleaner.threads1Кількість потоків, що виконують стиснення логарифма
log.cleaner.io.max.bytes.per.sНіхтоМаксимальна кількість введень/операцій, яку може мати прибиральник журналів під час ущільнення журналу. Це налаштування обмежує прибиральника, щоб не заважати активним сервісам запитів.
log.cleaner.io.buffer.size500*1024*1024Log Cleaner індексує журнали під час процесу очищення та зменшує розмір кешу, який використовується. Найкраще встановити його великим, щоб забезпечити достатньо пам'яті.
log.cleaner.io.buffer.load.factor512*1024Розмір шматка вводу/виводу, необхідного для очищення колод. Тобі не потрібно змінювати це налаштування.
log.cleaner.io.buffer.load.factor0.9коефіцієнт завантаження хеш-таблиці, що використовується для очищення журналів; Вам не потрібно змінювати цю опцію.
log.cleaner.backoff.ms15000Виконується інтервал часу, протягом якого прибирають журнал
log.cleaner.min.cleanable.ratio0.5Ця конфігурація контролює, як часто компактор колоди намагається очистити журнали (припускається)Вхід за гіперпосиланням видно.відкритий). За замовчуванням уникайте очищення понад 50% колод. Це співвідношення прив'язане до максимального простору, зайнятого резервним журналом (50% журналів стискаються при 50%). Вища ставка означає менше відходів і більше місця можна ефективніше очистити. Це налаштування можна перекреслити в кожному тематичному налаштуванні.
ВидВхід за гіперпосиланням видно.
log.cleaner.delete.retention.ms1 деньчас зберігання; Максимальний час для збереження стиснених журналів; Це також максимальний час для клієнта для споживання повідомлень, і різниця між log.retention.minutes полягає в тому, що один керує нестиснутими даними, а інший — стиснутими даними, які будуть перезаписані на заданий час створення теми.
log.index.size.max.байти10*1024*1024Максимальний розмір на сегмент колоди. Зверніть увагу, що якщо розмір log досягає цього значення, потрібно згенерувати новий сегмент log, навіть якщо розмір не перевищує ліміт log.segment.bytes.
log.index.interval.bytes4096Під час вилучення потрібно просканувати найближчий зсув із певним простором, чим більший настрій, тим краще, зазвичай використовуйте стандартне значення
log.flush.interval.messagesLong.MaxValueЛог-файл «синхронізується» з диском перед накопиченням повідомлень. Оскільки операції з виводом диска — це повільна операція, але також необхідний засіб «надійності даних», перевірте, чи потрібен інтервал часу для затвердіння на жорсткий диск. Якщо це значення занадто велике, це призведе до надто довгого часу «синхронізації» (блокування введення), якщо це значення занадто мало — до тривалого часу «fsync» (блокування введення), якщо це значення занадто мале — до великої кількості «синхронізації», що означає, що загальний запит клієнта має певну затримку, а відмова фізичного сервера призведе до втрати повідомлень без fsync.
log.flush.scheduler.interval.msLong.MaxValueПеревірте, чи потрібні fsync-інтервали
log.flush.interval.msLong.MaxValueЦе число використовується для контролю часового інтервалу «fsync»: якщо кількість повідомлень ніколи не досягає кількості, затверджених на диску, але інтервал часу від останньої синхронізації диска досягає порогу, синхронізація диска також запускається.
log.delete.delay.ms60000Час зберігання після очищення файлу в індексі зазвичай не потребує змін
auto.create.topics.enabletrueЧи дозволити автоматичне створення тем. Якщо це правда, це автоматично створить тему, якої не існує, якщо produce або fetch не існує. Інакше потрібно використовувати командний рядок для створення теми
controller.socket.timeout.ms30000Час тайм-ауту сокета, коли контролер керування розділами виконує резервне копіювання.
controller.message.queue.sizeInt.MaxValueController-to-broker-channles
default.replication.factor1За замовчуванням кількість резервних копій стосується лише автоматично створених тем
replica.lag.time.max.ms10000Якщо послідовник не надішле запит на доставку протягом цього часу, лідер видаляє його з ISR і визнає його підвішеним
replica.lag.max.повідомлення4000Якщо репліка має більше незахищених копій, лідер видаляє послідовника і вважає його підвішеним
replica.socket.timeout.ms30*1000Час тайм-ауту лідера для запитів мережі сокетів при резервному копіюванні даних
replica.socket.receive.buffer.bytes64*1024Буфер прийому сокета при надсилання мережевого запиту лідеру під час резервного копіювання
replica.fetch.max.байтів1024*1024Максимальне значення кожного завантаження на момент резервного копіювання
replica.fetch.min.bytes500Максимальний час очікування, поки дані досягнуть лідера, коли лідер робить резервний запит
replica.fetch.min.bytes1Найменший розмір відповіді після кожного завантаження при резервному копіюванні
num.replica.fetchers1Кількість потоків, які резервують дані лідера
replica.high.watermark.checkpoint.interval.ms5000Кожна репліка перевіряє, як часто найвищий рівень води затверджується
fetch.purgatory.purge.interval.requests1000Запит на отримання інтервалу очищення
producer.purgatory.purge.interval.requests1000Виробник запитує інтервал очищення
zookeeper.session.timeout.ms6000Тайм-аут сесії доглядача зоопарку.
zookeeper.connection.timeout.ms6000Максимальний час, протягом якого клієнт чекає, щоб встановити зв'язок із доглядачем зоопарку
zookeeper.sync.time.ms2000ZK Follower найдовше відстає від лідера ZK
controlled.shutdown.enabletrueЧи можливо контролювати закриття брокера. Якщо можливо, брокер зможе перевести всіх лідерів до інших брокерів перед закриттям. Це зменшує недоступність під час процесу вимкнення.
controlled.shutdown.max.повторює3Кількість команд, які можуть успішно виконати вимкнення перед виконанням неповного вимкнення.
controlled.shutdown.retry.backoff.ms5000Час відкладання між закриттями
auto.leader.rebalance.enabletrueЯкщо це правда, контролер автоматично збалансує керівництво брокерів через розділи
leader.imbalance.per.broker.percent10Максимальний коефіцієнт дисбалансу, дозволений кожним брокером
leader.imbalance.check.interval.seconds300Перевірте частоту дисбалансу лідера
offset.metadata.max.bytes4096Дозволяє клієнтам зберігати максимальну кількість своїх зсув
max.connections.per.ipInt.MaxValueМаксимальна кількість підключень на одного брокера може бути здійснена до кожної IP-адреси
max.connections.per.ip.overrides Максимальне покриття стандартного з'єднання на IP або ім'я хоста
connections.max.idle.ms600000Ліміт тайм-ауту для порожніх з'єднань
log.roll.jitter. {MS,години}0Максимальна кількість тремтіння, абстрагованої з logRollTimeMillis
num.recovery.threads.per.data.dir1Кількість потоків, які кожен каталог даних використовує для ведення відновлення
нечистий.лідер.вибор.enabletrueВказує, чи можливо використовувати налаштування нереплік в ISR як лідера
delete.topic.enablefalseМожливість видаляти теми
offsets.topic.num.partitions50Кількість розділів для теми зміщення фіксації. Оскільки зміна цього після розгортання наразі не підтримується, ми рекомендуємо використовувати вищі налаштування для продакшну (наприклад, 100-200).
offsets.topic.retention.minutes1440Зсуви, які існують довше за цей термін, будуть позначені як очікувані видалення
offsets.retention.check.interval.ms600000Менеджер зміщення перевіряє частоту застарілих зсув
offsets.topic.replication.factor3Кількість резервних копій теми зміщується. Рекомендується встановлювати вищі цифри, щоб гарантувати більшу доступність
offset.topic.segment.bytes104857600Зміщує тему.
offsets.load.buffer.size5242880Це налаштування пов'язане з розміром пакету і використовується при читанні з сегмента зміщень.
offsets.commit.required.acks-1Кількість підтверджень потрібно встановити до того, як зміщення фіксації стане прийнятним, і зазвичай це не потрібно змінювати


ВласністьЗа промовчаннямВластивість сервера за замовчуваннямОпис
cleanup.policyВидалитиlog.cleanup.policyАбо «видалити», або «компактити»; Цей рядок показує, як використовувати стару частину логарифма; Стандартний метод («видалити») відкидає стару деталь, коли її час переробки або ліміт розміру буде досягнуто. «компактний» стискає журнали
delete.retention.ms86400000 (24 години)log.cleaner.delete.retention.msРізниця між log.retention.minutes полягає в тому, що один керує нестисненими даними, а інший — стисненими. Цю конфігурацію можна замінити параметрами закріплення при створенні теми
Змити.повідомленняНіхтоlog.flush.interval.messagesЦя конфігурація визначає часовий інтервал для примусового запуску fsync-журналів. Наприклад, якщо ця опція встановлена на 1, то після кожного повідомлення потрібен fsync, а якщо встановлено на 5 — fsync для кожних 5 повідомлень. Загалом, рекомендується не встановлювати це значення. Встановлення цього параметра вимагає необхідного компромісу між «надійністю даних» і «продуктивністю». Якщо це значення занадто велике, це спричинятиме тривалий час «fsync» кожного разу (блокування введення), а якщо це значення занадто мале — призведе до великої кількості «fsync», що також означає певну затримку у загальному запиті клієнта. Фізична несправність сервера призведе до втрати повідомлень без fsync.
flush.msНіхтоlog.flush.interval.msЦя конфігурація використовується для фіксації інтервалу часу між примусом fsync-журналів на диск; Наприклад, якщо встановити на 1000, то fsync потрібен кожні 1000 мс. Цей варіант зазвичай не рекомендується
index.interval.bytes4096log.index.interval.bytesСтандартне налаштування гарантує, що ми додаємо індекс до повідомлення кожні 4096 байтів, а більше індексів робить повідомлення читання ближчим, але розмір індексу збільшується. Ця опція зазвичай не є обов'язковою
max.message.bytes1000000max.message.bytesМаксимальний розмір повідомлення додавання Кафки. Зверніть увагу, що якщо ви збільшуєте цей розмір, вам також потрібно збільшити розмір завантаження користувача, щоб користувач міг отримувати повідомлення до цих максимальних розмірів.
min.cleanable.dirty.ratio0.5min.cleanable.dirty.ratioЦя конфігурація контролює, як часто компресор для дерев намагається очистити колоди. За замовчуванням уникаються логи зі ступенем стиснення понад 50%. Це співвідношення дозволяє уникнути найбільшої втрати простору
min.insync.replicas1min.insync.replicasКоли виробник встановлений на request.required.acks у -1, min.insync.replicas вказує мінімальну кількість реплік (кожен запис repica має бути успішним), і якщо ця кількість не досягнута, виробник створить виняток.
retention.bytesНіхтоlog.retention.bytesЯкщо ви використовуєте політику утримання "видалити", ця конфігурація відображає максимальний розмір, якого може досягти журнал до його видалення. За замовчуванням немає обмежень по розміру, а лише часовий ліміт
retention.ms7 днівlog.retention.minutesЯкщо ви використовуєте політику утримання "видалення", ця конфігурація стосується часу, коли журнал було збережено до журналу видалення.
segment.bytes1GBlog.segment.bytesУ Kafka логарифмічні журнали зберігаються чанками, і ця конфігурація стосується розміру логарифмічних журналів, поділених на шматки
segment.index.bytes10 МБlog.index.size.max.байтиЦя конфігурація приблизно відповідає розміру індексного файлу, відображеного між зміщеннями та розташуванням файлів; Цю конфігурацію зазвичай не потрібно змінювати
segment.ms7 днівlog.roll.hoursНавіть якщо файл log chunk не досягає потрібного розміру, який потрібно видалити або стиснути, коли час журналу досягне цієї верхньої межі, буде примусово створювати новий файл log chunk
segment.jitter.ms0 log.roll.jitter. {MS,години}Максимальний джитер для відняття від logRollTimeMillis.


Споживчі конфігурації

ВласністьЗа промовчаннямОпис
group.id Рядок, який унікально ідентифікує групу, в якій розташований споживчий процес, і якщо встановлено той самий ідентифікатор групи, це означає, що ці процеси належать одній групі споживача
zookeeper.connect Вкажіть рядок з'єднання Zookeeper, формат — hostname:port, тут хост і порт є одночасно хостом і портом сервера Zookeeper, щоб уникнути втрати зв'язку після виходу з ладу комп'ютера Zookeeper, можна вказати кілька hostname:ports, використовуючи коми як розділення:
Ім'я хоста1:порт1,ім'я хоста2:порт2,ім'я хоста3:порт3
Ви можете додати шлях chroot ZooKeeper до рядка з'єднання ZooKeeper, яка використовується для зберігання власних даних, таким чином:
hostname1:port1,hostname2:port2,hostname3:port3/chroot/path
consumer.idнульНалаштування не потрібне, і зазвичай він генерується автоматично
socket.timeout.ms30*100Обмеження тайм-ауту для мережевих запитів. Справжній ліміт тайм-ауту — max.fetch.wait+socket.timeout.ms
socket.receive.buffer.bytes64*1024Socket використовується для прийому розміру кешу мережевих запитів
fetch.message.max.bytes1024*1024Максимальна кількість байтів на повідомлення про завантаження на запит на вибір. Ці байти будуть контролюватися в пам'яті, що використовується для кожного розділу, тому це налаштування контролюватиме обсяг пам'яті, яку використовує споживач. Розмір запиту на вилучення повинен бути принаймні дорівнювати максимальному розміру повідомлення, дозволеному сервером, інакше розмір повідомлення, яке може надіслати виробник, більший за розмір, який споживач може спожити.
num.consumer.fetchers1Кількість потоків fetcher для завантаження даних
auto.commit.enabletrueЯкщо це правда, зсув повідомлення, отриманого споживачем, автоматично синхронізується з доглядачем зоопарку. Цей коміт-офсет буде використаний новим споживачем, коли процес завершиться
auto.commit.interval.ms60*1000Частота, з якою споживач надсилає офсет доглядачу зоопарку, становить секунди
queued.max.message.chunks2Максимальна кількість повідомлень, що використовуються для кешування для споживання. Кожен блок має бути таким самим, як fetch.message.max.bytes
rebalance.max.повторює4Коли до групи споживачів додається новий споживач, колекція споживачів намагається збалансувати кількість розділів, виділених кожному споживачу. Якщо збірка споживача змінюється, ця ребалансація не спрацює і повторюється під час виконання розподілу
fetch.min.bytes1Мінімальна кількість байтів, які сервер повинен повертати з кожним запитом на завантаження. Якщо даних повертається недостатньо, запит чекає, поки не буде повернено достатньо даних.
fetch.wait.max.ms100Якщо даних недостатньо для задоволення fetch.min.bytes, ця конфігурація означає максимальний час, який сервер блокуватиме перед відповіддю на запит на вибір.
rebalance.backoff.ms2000Час відступити перед повторною спробою реблансу
refresh.leader.backoff.ms200Є час відступу, щоб почекати, перш ніж намагатися визначити, чи втратив лідер розділу лідерство
auto.offset.resetнайбільшийЯкщо в zookeeper немає ініціалізованого зсуву, якщо зсув є відповіддю на наступне значення:
найменший: автоматичне скидання зсуву на найменший зсув
найбільший: Автоматичне скидання зсуву до зсуву найбільшого
Все інше: Це виняток для споживача
consumer.timeout.ms-1Якщо повідомлення недоступне, навіть після очікування певного часу, застосовується виняток тайм-ауту
exclude.internal.topicstrueЧи варто розкривати споживачам повідомлення з внутрішніх тем
paritition.assignment.strategyАреалВиберіть політику призначення розділів для споживчого потоку, за бажанням діапазон, круговий робін
client.idЗначення ідентифікатора групи— це рядок, специфічний для користувача, який допомагає відстежувати виклики в кожному запиті. Логічно має підтвердити застосунок, який створив запит
zookeeper.session.timeout.ms6000Обмеження тайм-ауту для сесій доглядача зоопарку. Якщо споживач не надсилає повідомлення про серцебиття доглядачу зоопарку в цей час, воно вважається заблокованим, і виникає ребланс
zookeeper.connection.timeout.ms6000Максимальний час очікування, щоб клієнт налагодив з'єднання з Zookeeper
zookeeper.sync.time.ms2000Послідовники ZK можуть максимально довго відставати від лідера ZK
offsets.storageДоглядач зоопаркуМісця для зберігання офсетів: zookeeper або kafka
offset.channel.backoff.ms1000Час відключення при повторному підключенні до каналу зсуву або повторної спроби запиту на завантаження/фіксацію невдалого зсуву
offsets.channel.socket.timeout.ms10000Обмеження тайм-ауту сокета для відповіді на запит на вибір/фіксацію при зчитуванні зсуву. Цей ліміт часу використовується запитом consumerMetadata для запиту на управління зсувом
offsets.commit.max.повторює5Кількість повторних спроб зміщеного комміту. Ця повторна спроба застосовується лише до зміщених комітів між вимкненнями. він
dual.commit.enabledtrueЯкщо ви використовуєте "kafka" як offsets.storage, ви можете двічі зафіксувати offset у zookeeper (і один раз на kafka). Це обов'язково при переході з офсетного сховища на основі Zookeeper на Kafka-базове офсетне зберігання. Для будь-якої групи споживачів безпечно вимкнути цю опцію після завершення міграції
partition.assignment.strategyАреалОбирайте між політиками «діапазон» і «roundrobin» як політикою призначення розділів для споживчих потоків даних; Круглий розподільник розділів розподіляє всі доступні розділи, а також усі доступні споживчі потоки. Він призначає цикл розділів споживчому потоку. Якщо всі споживчі екземпляри підписані на визначений, розбиття поділяються на детерміновані дистрибутиви. Стратегія розподілу за круговим етапом можлива лише за умови виконання наступних умов: (1) Кожна тема має однакову кількість потоків даних на рівень споживача. (2) Колекція підписаних тем визначається для кожного споживчого екземпляра в споживчій групі.


Конфігурації продюсера

ВласністьЗа промовчаннямОпис
metadata.broker.list Подавайте підготовку. Producer використовується лише для отримання метаданих (теми, розділи, репліки). З'єднання сокета для передачі фактичних даних буде встановлено на основі повернених метаданих. Формат такий:
хост1:порт1,хост2:порт2
Цей список може бути підсписком брокерів або VIP, що вказує на брокерів
request.required.acks0Ця конфігурація є значенням підтвердження, яке вказує, коли запит на продукт вважається завершеним. Зокрема, скільки інших брокерів мали подати дані до своїх логів і підтвердити цю інформацію своєму лідеру. Типові значення включають:
0: Означає, що виробник ніколи не чекає підтвердження від брокера (така сама поведінка, як і 0.7). Ця опція забезпечує найменшу затримку, але водночас найбільший ризик (оскільки дані втрачаються, коли сервер виходить з ладу).
1: Вказує, що лідерська репліка отримала підтвердження даних. Ця опція має низьку затримку і гарантує, що сервер підтверджує отримання.
-1: Виробник отримує підтвердження, що всі синхронізовані репліки отримали дані. Затримка є найбільшою, однак цей метод не повністю усуває ризик втрати повідомлень, оскільки кількість синхронізованих реплік може бути 1. Якщо ви хочете гарантувати, що деякі репліки отримують дані, слід встановити опцію min.insync.replicas у налаштуваннях теми. Ознайомтеся з проєктною документацією для більш детального обговорення.
request.timeout.ms10000Брокер намагається реалізувати вимогу request.required.acks, інакше клієнту буде надіслано помилку
producer.typeсинхронізаціяЦя опція фіксує, чи надсилається повідомлення асинхронно у фоновому потоку. Правильні значення:
(1) асинхронне: Асинхронне надсилання
(2) синхронізація: Синхронізоване надсилання
Встановивши виробник на асинхронний, ми можемо обробляти запити пакетами (що добре для більшої пропускної здатності), але це також створює ймовірність втрати невідправлених даних клієнтом
serializer.classkafka.serializer.DefaultEncoderКатегорія серіалізації повідомлення. Стандартний енкодер вводить один байт[] і повертає той самий байт[]
key.serializer.class Клас серіалізації для ключових слів. Якщо це не вказано, за замовчуванням збігається з повідомленням
partitioner.classkafka.producer.DefaultPartitionerклас partitioner для поділу повідомлень між підтемами. Стандартний розділ базується на хеш-таблиці ключа
compression.codecНіхтоЦей параметр може встановити кодек для стиснення даних, який можна вибрати як «none», «gzip», «snappy».
compressed.topicsнульЦей параметр можна використати для визначення, чи стискаються певні теми. Якщо стиснутий кодек є кодеком, відмінним від NoCompressCodec, ці кодеки застосовуються до даних зазначених тем. Якщо список стиснутих тем порожній, застосовуйте конкретний стиснутий кодек до всіх тем. Якщо стиснутий кодек — NoCompressionCodec, стиснення недоступне для всіх тем.
message.send.max.спроби повторити3Цей параметр змусить виробника автоматично повторювати невдалі запити на відправку. Цей параметр фіксує кількість повторень. Примітка: Встановлення значення не 0 призведе до повторення певних мережевих помилок: це спричинить передачу і втрату підтвердження
retry.backoff.ms100Перед кожною повторною спробою продюсер оновлює метадані відповідної теми, щоб побачити, чи призначено нового лідера. Оскільки вибір лідера займає трохи часу, ця опція вказує, скільки часу виробнику потрібно чекати перед оновленням метаданих.
topic.metadata.refresh.interval.ms600*1000Виробник зазвичай оновлює метадані теми у деяких випадках збою (відсутність розділу, недоступний лідер тощо). Він проходитиме регулярний цикл. Якщо встановити негативне значення, метадані оновлюватимуться лише у разі відмови. Якщо встановлено 0, метадані оновлюються після кожного надсилання повідомлення (ця опція не рекомендується, оскільки система споживає занадто багато). Важливо: Оновлення відбуваються лише після надсилання повідомлення, тому якщо продюсер ніколи не надсилає повідомлення, метадані не оновлюються.
queue.buffering.max.ms5000Максимальний часовий інтервал, за який користувач кешує дані при застосуванні асинхронного режиму. Наприклад, якщо повідомлення встановлене на 100, повідомлення в межах 100 мс обробляються пакетами. Це покращить пропускну здатність, але збільшить затримку через кешування.
queue.buffering.max.messages10000При використанні асинхронного режиму максимальна кількість невідправлених повідомлень, які можна кешувати до черги перед виробником, має бути заблокована, інакше дані мають бути втрачені
batch.num.messages200При використанні асинхронного режиму можна пакетно обробляти максимальну кількість повідомлень. Або кількість повідомлень потрапила онлайн, або queue.buffer.max.ms вже надійшло, і продюсер це обробить
send.buffer.bytes100*1024Розмір кешу запису сокета
client.id“”Цей ідентифікатор клієнта — це рядок, специфічний для користувача, який додається до кожного запиту для відстеження дзвінка, і він логічно має мати змогу підтвердити, що запит здійснив застосунок.


Конфігурації продюсера

Ім'яТипЗа промовчаннямВажливістьОпис
boostrap.serversСписок високийГрупа хост/порт для встановлення з'єднання з кластером Kafka. Дані будуть завантажуватися рівномірно на всіх серверах, незалежно від того, який сервер призначений для завантаження. Цей список впливає лише на ініціалізовані хости (які використовуються для виявлення всіх серверів). Цей формат списку:
host1:port1,host2:port2,...
Оскільки ці сервери використовуються лише для ініціалізації з'єднань з метою виявлення всіх членів кластера (які можуть змінюватися динамічно), цей список не обов'язково має містити всі сервери (можливо, знадобиться більше одного сервера, хоча в цьому випадку один сервер може бути не працювати). Якщо в цьому списку немає сервера, надсилання даних не припиниться, доки список не стане доступним.
ACKSРядок1високийВиробнику потрібен сигнал від сервера для підтвердження отримання даних, і ця конфігурація показує, скільки таких сигналів підтвердження потрібно прокудеру. Ця конфігурація фактично відображає доступність резервних копій даних. Наступні налаштування є поширеними опціями:
(1) acks=0: Встановлено на 0 означає, що виробнику не потрібно чекати підтвердження отриманої інформації. Репліка буде одразу додана до буфера сокета і вважатися відправленою. У цьому випадку немає гарантії, що сервер успішно отримав дані, і повторна спроба конфігурації не спрацює (оскільки клієнт не знає, чи вона не вдалася), і зміщення зворотного зв'язку завжди буде встановлено на -1.
(2) acks=1: Це означає, що потрібно принаймні чекати, поки лідер успішно запише дані в локальний журнал, але не всі послідовники успішно записують. У цьому випадку, якщо послідовник не зробить резервну копію даних і лідер знову покладе слухавку, повідомлення буде втрачено.
(3) acks=all: Це означає, що лідеру потрібно чекати, поки всі резервні копії успішно запишуть журнали, і ця стратегія гарантує, що дані не будуть втрачені, доки одна з них зберігається. Це найсильніша гарантія.
(4) Можливі й інші налаштування, такі як acks=2, які вимагатимуть певної кількості acks, але ця стратегія зазвичай використовується рідко.
buffer.memoryдовгий33554432високийВиробник може використовуватися для кешування розміру пам'яті даних. Якщо дані генеруються швидше, ніж надсилаються брокеру, виробник блокує або викидає виняток, позначений як "block.on.buffer.full".

Це налаштування буде пов'язане з загальною пам'яттю, яку може використовувати виробник, але це не є жорстким обмеженням, оскільки не вся пам'ять, яку використовує виробник, використовується для кешування. Додаткова пам'ять використовується для стиснення (якщо впроваджено стиснення), а частина — для запитів на обслуговування.
compression.typeРядокНіхтовисокийProducer — це тип стиснення, який використовується для стиснення даних. За замовчуванням він не стиснений. Правильні значення опції: none, gzip, snappy.
Компресію найкраще використовувати для пакетної обробки, чим більше повідомлень обробляється пакетами, тим краща продуктивність стиснення.
Повторні спробиint0високийВстановлення значення більше за 0 змусить клієнта повторно надіслати будь-які дані після відмови. Зверніть увагу, що ці повторні спроби не відрізняються від тих, що випадають на помилку відправлення клієнтом. Дозволяє повторні спроби потенційно змінити порядок даних, якщо обидва записи повідомлень надсилаються на один розділ, перше повідомлення не спрацює, друге з'являється раніше за перше.
Розмір партіїint16384СереднєПродюсер намагатиметься групувати записи повідомлень, щоб зменшити кількість запитів. Це покращить продуктивність між клієнтом і сервером. Ця конфігурація контролює кількість байтів пакетної обробки за замовчуванням.
Жодних спроб обробляти байти повідомлення, що перевищують цю кількість байтів.
Запити, надіслані брокерам, містять кілька пакетів, які міститимуть по одному запиту для кожного розділу.
Менші пакетні значення використовуються рідше і можуть зменшити пропускну здатність (0 використовуватиме лише пакетну обробку). Більші пакетні значення витрачають більше пам'яті, тому потрібно виділяти пам'ять для конкретних пакетних значень.
client.idРядок СереднєЦей рядок надсилається на сервер при поданні запиту. Мета полягає в тому, щоб мати змогу відстежити джерело запитів, щоб дозволити деяким додаткам поза списком дозволів IP/порту надсилати інформацію. Цей додаток може встановлювати будь-який рядок, оскільки він не має функціональної функції, окрім запису та відстеження
linger.msдовгий0СереднєГрупа продюсерів агрегує будь-які повідомлення, що надходять між запитом і відправленням, записуючи окрему партію запитів. Зазвичай це відбувається лише тоді, коли запис генерується швидше за швидкість відправлення. Однак за певних умов клієнт захоче зменшити кількість запитів або навіть до помірного навантаження. Це налаштування здійснюється шляхом додавання невеликої затримки — тобто замість одразового надсилання платівки продюсер чекатиме певного часу затримки, щоб дозволити надіслати інші записи повідомлень, які можна буде пакетувати. Це можна вважати подібним алгоритмом до TCP Nagle. Це налаштування встановлює вищу межу затримки для пакетування: як тільки ми отримуємо розмір batch.size розділу, він надсилає його одразу незалежно від цього параметра, але якщо ми отримуємо повідомлення з набагато меншою кількістю байтів, ніж це налаштування, нам потрібно «затриматися» на певний час, щоб отримати більше повідомлень. Це налаштування за замовчуванням становить 0, тобто затримки немає. Наприклад, встановлення linger.ms=5 зменшує кількість запитів, але водночас збільшує затримку на 5 мс.
max.request.sizeint1028576СереднєМаксимальна кількість запитаних байтів. Це також ефективно покриття для максимального зафіксованого розміру. Примітка: сервер має власне перевизначення розмірів записів повідомлень, яке відрізняється від цього налаштування. Це налаштування обмежує кількість запитів, які виробники можуть надсилати масово, щоб уникнути великої кількості запитів.
receive.buffer.bytesint32768СереднєРозмір приймального кешу TCP, який використовується для читання даних
send.buffer.bytesint131072СереднєРозмір кешу TCP для надсилання, який використовується при передачі даних
timeout.msint30000СереднєЦя опція конфігурації контролює максимальний час, протягом якого сервер очікує підтвердження від підписників. Якщо кількість підтверджених запитів не виконана протягом цього часу, повертається помилка. Цей ліміт тайм-ауту вимірюється на стороні сервера і не має мережевої затримки, включаючи запити
block.on.buffer.fullбулеваtrueнизькийКоли наш кеш пам'яті закінчується, ми повинні припинити отримувати нові записи повідомлень або створювати помилки. За замовчуванням це налаштування true, проте деякі блокування можуть бути не вартими очікувань, тому краще одразу кидати помилку. Це трапляється, коли встановлено у false: продюсер видає помилку виключення: BufferExhaustedException, якщо запис надіслано і кеш заповнений
metadata.fetch.timeout.msдовгий60000низькийВона стосується даних першого разу деяких елементів, які ми отримали. Елементи включають: тему, хост, розділи. Ця конфігурація стосується часу, необхідного для успішного завершення елемента відповідно до завантаження, інакше клієнту буде надіслано виняток.
metadata.max.age.msдовгий300000низькийЧас у мікросекундах — це інтервал, за який ми змушуємо метадані оновлюватися. Навіть якщо ми не побачимо змін у керівництві під час розділу.
metric.reportersСписок[]низькийСписок класів, які використовуються для вимірювання метрик. Впровадження інтерфейсу MetricReporter дозволить додавати класи, які змінюються у міру генерації нових метрик. JmxReporter завжди матиме спосіб реєстрації статистики JMX
metrics.num.samplesint2низькийКількість вибірок, що використовуються для підтримки метрик
metrics.sample.window.msдовгий30000низькийСистема метрик підтримує налаштовувану кількість вибірок у коригованому розмірі вікна. Ця конфігурація, наприклад, налаштовує розмір вікна. Ми можемо зберігати два зразки протягом 30 секунд. Коли розгортається вікно, ми стираємо і переписуємо найстаріше вікно
recoonect.backoff.msдовгий10низькийКоли з'єднання відключається, час очікування при повторному підключенні зникає. Це дозволяє уникнути повторних підключень клієнтів
retry.backoff.msдовгий100низькийЧас очікування перед повторною спробою повторити невдалий запит на продукти. Уникайте застрягання в циклі «відправка-невдача» мертвого циклу.




Попередній:【Practice】Eclipse installs the lombok plugin
Наступний:Java JMX простий у розумінні та використанні
 Орендодавець| Опубліковано 02.11.2021 14:10:57 |
Конфігурація server.properties

Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com