Англійська для розробників Kafka Streaming
Вивчайте англійську лексику для Apache Kafka: теми, розділи, групи споживачів, відхилення і брокери з поясненнями для фахівців з потокової передачі подій.
Apache Kafka підтримує архітектури, що керуються подією, в компаніях будь-якого розміру, і його термінологія — теми, розділи, відхилення, групи споживачів — достатньо точна, щоб використання неправильного слова в обговоренні дизайну може справді змінити те, що колега вважає, що ви пропонуєте. Оскільки системи Kafka часто описуються в звітах про інциденти, оглядах архітектури і міжкомандних гілках Slack, розробникам потрібна вільна, точна англійська мова, щоб пояснити, чому споживач відстає або чому тема потребує більше розділів. Цей підручник містить основні слова, які ви будете використовувати під час роботи з Kafka у професійному середовищі.
Ключовий словник
** Тема ** — названа категорія або подача, до якої надсилаються опубліковані записи, функціонує як фундаментальна одиниця організації у Kafka.
- “Ми публікуємо всі події замовлень у темі замовлень і дозволяємо службі підписуватися на них незалежно.” *
** Розділ ** — тема розділена на розділи, упорядковані журнали, які можна лише додавати, що надає змогу Kafka паралельно виконувати читання і запис на декількох користувачах і брокерах. “Ми збільшили кількість розділів до шести, щоб ми могли масштабувати до шести паралельних споживачів.”
** Брокер ** — один сервер Kafka, який зберігає дані і обслуговує запити клієнтів; кластер Kafka складається з декількох брокерів, які працюють разом. “Один брокер за ночь вышел из строя, но репликация означала, что мы не потеряли никаких сообщений.”
** Група користувачів ** — набір користувачів, які співпрацюють у процесі читання з теми, за допомогою Kafka кожен розділ обробляється лише одним користувачем у групі одночасно.
- “Ми додали другу групу користувачів, щоб команда аналітики могла читати ті ж події незалежно від служби розрахунків.” *
Offset — послідовний ідентифікатор, який визначає позицію запису у розділі, який споживачі відстежують, щоб знати, що вони вже обробили. “Страна-потребитель не продвинулась вперед за час, так мы и заметили застрявшее дело.”
** Затримка користувача ** — відстань між останнім зсувом, створеним для розділу, і зсувом, який користувач фактично обробив, що вказує на відстань, на яку користувач відстає від розділу. “Затримка користувачів зросла до двох мільйонів повідомлень після того, як база даних уповільнилася.”
** Коефіцієнт реплікації ** — кількість копій кожного розділу, які Kafka підтримує на різних брокерах, використовується для стійкості до помилок. “Ми встановили коефіцієнт реплікації на три, щоб ми могли втратити брокера без втрати даних.”
** Продюсер ** — програма- клієнт, яка публікує записи у одній або декількох темах Kafka. “Служба оплати діє як виробник, а три інші служби споживають з тієї ж теми.”
Звичайні фрази
- «Consumer lag is climbing — can we check if the downstream service is the bottleneck?» (англійською)
- «Ми повинні збалансувати розділи, оскільки один споживач обробляє непропорційну частку трафіку.»
- «Давайте збільшимо коефіцієнт реплікації, перш ніж ми перейдемо до виробництва, три відчувають себе безпечніше, ніж один»
- «Ця тема стає шумною — чи треба її розділити, чи фільтрувати на стороні споживача?»
- «Скидання відхилення стерло нашу контрольну точку, тому ми переобробляли повідомлення з самого початку»
- «Ми використовуємо тему мертвих листів, щоб ловити повідомлення, які неодноразово не вдається обробляти»
Приклади висловлювань
При поясненні Kafka нетехнічним користувачам:
- “Kafka — це система, яка дозволяє різним частинам програми надсилати і отримувати оновлення про події, наприклад, про нові замовлення, без необхідності спілкування між ними безпосередньо.” *
Під час створення квитка підтримки:
- “Затримка споживачів у групі payments-consumer-group постійно зростає з ранкового розгортання, наразі відстає на близько 500 000 повідомлень. Чи можете ви перевірити, чи не зменшила швидкість завантаження недавня зміна налаштувань?» *
Під час обговорення архітектури на груповій нараді:
- “Я пропоную розділити тему подій на більше розділів, щоб ми могли горизонтально масштабувати споживачів, і встановити коефіцієнт реплікації до трьох, щоб захистити від збою одного брокера під час пікового навантаження.” *
Професійні поради
- Завжди відрізняйте « ** група споживачів ** » від однієї « ** споживачів ** » — кажучи « споживач не працює », коли ви маєте на увазі один екземпляр у групі з десяти є поширеним джерелом неправильного спілкування під час інцидентів.
- Використовуйте « **consumer lag ** », а не « delay », коли описуєте, наскільки відстає споживач — це термін, який використовується інструментами і панелями управління, тому всі читатимуть ті ж самі графіки.
- Коли ви пропонуєте змінити ** кількість розділів **, згадайте, що пізніше її неможливо безпечно зменшити, оскільки це часто призводить до плутанини під час перегляду проекту.
- Кажіть ”** принаймні один раз доставка ” або ” точно один раз семантика **” явно, коли обговорюються гарантії повідомлення - нечітка фраза, наприклад, “надійна доставка” запрошує наступні питання.
Практичні вправи
- Один з колег повідомляє, що « Кафка повільний ». Напишіть два- три запитання англійською, щоб визначити, чи стосується проблема виробника, брокера, чи споживача.
- Поясніть одним реченням, чому збільшення кількості розділів може допомогти збільшити об’ єм групи користувачів.
- Створити коротке резюме події з описом відключення брокера, яке було зменшено за допомогою коефіцієнта реплікації, рівного трьом.
Розробка прикладних програм: розробка програм для обробки даних
Для не-рідних англомовних носіїв, розуміння точної термінології, що використовується в швидкому середовищі, яким є розробка Kafka, може бути особливо складним. Це не просто про те, щоб знати * що * щось є; це про передачу цих знань чітко і впевнено до вашої команди. Незначні відмінності у використанні фраз можуть значно вплинути на перегляд коду, обговорення у Slack і навіть документацію, яку ви створюєте для своїх проектів. Здається, нешкідливе речення може призвести до непорозумінь, якщо технічні поняття не виражені з належним рівнем точності.
Однією з поширених перешкод є опис стану групи споживачів. Просто сказати, що «споживачі відстають» недостатньо. Кращий підхід, коли пояснювати це старшому інженеру під час перегляду коду, може бути: «offset групи споживачів не просунувся за межі розділу 3 для теми «user_activity» за останню годину. Це свідчить про те, що нам може знадобитися змінити нашу швидкість обробки або дослідити потенційні проблеми з протидією. “Зауважте специфічну термінологію - offset, partition, і наслідки backpressure. Використання цих термінів демонструє чітке розуміння архітектури Кафки і уникнення неоднозначності. Аналогічно, при написанні опису Pull Request для нової можливості, заява «ми повинні збільшити пропускну здатність» є неясною. Ефективнішою формулюванням буде: « Ми реалізуємо нову стратегію розділення на тему « замовлення », збільшуючи її паралельність з 2 до 4, що повинно поліпшити нашу загальну швидкість поглинання приблизно на 15% як вимірюється брокерськими метриками. » Кількісне вираження впливу — навіть з оціненим відсотком — додає значної ваги і ясності.
Іншою областю потенційної плутанини є навколо обробки помилок і відновлення. Фрази на кшталт «щось пішло не так» надзвичайно непотрібні. Професійніша відповідь під час обговорення Slack про невдалий споживач може бути: «Я бачу, що група споживачів для «product_updates» має підвищену кількість KafkaException, пов’язаних з помилками десеріалізації — зокрема, недійсними JSON-зарядами. Я реалізував механізм повторних спроб з експоненційним відступом і додав журналювання для захоплення проблемних повідомлень. ” Знову ж таки, точна мова — KafkaException, deserialization errors, exponential backoff — демонструє експертизу і надає дієву інформацію.
Нарешті, пам’ ятайте, що коротка документація є ключовою. Коли ви пояснюєте, як ваша програма взаємодіє з Kafka, уникайте надто складних речень. Розбивайте кожен крок чітко: “Служба підписується на тему ‘customer_events’ за допомогою групи споживачів з назвою ‘event_processor’. Він споживає повідомлення зі швидкістю 10 подій на секунду і здійснює зсуви після успішної обробки. ”
Ось приклад того, як ви можете використовувати kafka-console.cap для перевірки стану розділу:
kafka-console.cap --bootstrap-server localhost:9092 --topic user_activity --describe --include-partitions
За допомогою цієї команди можна отримати знімок розділів теми, їх поточних зміщень і кількості записів, які вони містять — це безцінна інформація для розв’ язання проблем і розуміння моделей використання. Сфокусування на цих точних фразах не тільки покращить ваше спілкування, але й зміцнить ваше розуміння цієї потужної технології потокового передачі подій.