Vocabulary for Circuit Breakers and Resilience Patterns

Вивчіть основний англійський словниковий запас для обговорення автоматичних виключників, повторних спроб, перегородок і інших шаблонів стійкості у розподілених системах.

Шаблони стійкості є тим, як розподілені системи уникають однієї невдалої залежності, що знищує все, що з нею пов’язано, і кожен шаблон має певну назву з певної причини - змішування “повторної спроби” і “виключника” в обговоренні дизайну може призвести до того, що команда вибере неправильний інструмент для режиму невдачі, про який вони насправді турбуються. Цей словник особливо корисний у переглядах архітектури і післясмертних дослідженнях, де метою є назвати саме той захисний механізм, якого не вистачало.

Фундаментальні поняття

1. Каскадна несправність

Збій, який поширюється від одного компонента до інших, від яких він залежить або які залежать від нього, часто тому, що жоден з них не мав захисту від збою в початковій частині.

** Використання: ** * “Уповільнення роботи бази даних призвело до каскадної помилки, оскільки кожна служба продовжувала агресивно повторювати невдалі спроби виконання запиту, що лише додало ще більше навантаження на і так вже нестабільну базу даних.” *

2. Автоматический выключатель

Шаблон, який припиняє надсилання запитів до залежності після того, як її рівень невдач перевищить поріг, надаючи їй час на відновлення замість продовження надсилання трафіку, який вона не може обробляти.

** Використання: ** * “Відключення було викликано після того, як рівень помилок залежності перевищив 50%, що зупинило нас від додавання додаткової навантаження на щось, що вже не працює.” *

3-й. Напіввідкритий стан

Проміжний стан, у який переходить автоматичний виключатель після спуску, у якому він дозволяє невелику кількість тестових запитів, щоб перевірити, чи було відновлено залежність, перед повним відновленням потоку.

** Використання: ** * “Відключач перейшов у стан напіввідкритого і пропустив кілька запитів — оскільки ці запити були успішними, він знову закрився і відновив нормальну роботу.” *

4-й. Бульвар (Бульвар-де-Бульвар)

Шаблон, який ізольовує ресурси (наприклад, пули потоків або з’ єднань) для кожної залежності, щоб одна залежність, яка зазнає невдачі і використовує всі свої ресурси, не могла перешкоджати виконанню запитів на незв’ язані залежності.

** Використання: ** * “Без ізоляції перегородки, цей повільний сторонній API споживав всі доступні потоки у нашому спільному пулі, саме тому не пов’ язані запити також почали перевищувати тайм- аут.” *

Тайм- аут

Явне обмеження часу очікування запиту на відповідь, перед тим як його буде розцінено як невдалу спробу, запобігає повільній залежності від нескінченного утримання ресурсів.

** Використання: ** * “Цей клієнт не має налаштованого тайм- аута, отже, зависле з’ єднання з залежністю буде притягувати робочу нитку на неопределённый час, замість того, щоб швидко завершити роботу.” *

Повторити спробу і відступити

6-й. Повторна спроба (логіка повторних спроб)

Практика автоматичного повторення невдалої дії, корисна для тимчасових помилок, але небезпечна, якщо її застосовувати необережно під час тривалого відключення.

** Використання: ** * « Логіка повторних спроб тут не має обмеження, отже під час відключення кожен клієнт продовжував повторювати спроби без обмеження, що множило навантаження на службу, яка вже і так мала проблеми. » *

7. експоненціальний відступ

Стратегія повторних спроб, за якої час очікування між спробами експоненційно збільшується з кожною помилкою, зменшуючи навантаження на залежність, яка має проблеми під час тривалих порушень.

** Використання: ** * “Ми додали експоненціальне відновлення до логіки повторних спроб, щоб повторні помилки з часом зникали замість того, щоб залежність зростала з постійною швидкістю.” *

8-е видання

Випадковість додано до затримки відновлення, щоб запобігти багаторазовим спробам клієнтів у синхронізованих серіях, які інакше відтворювали б точний пік навантаження, якого слід уникати за допомогою відновлення.

** Використання: ** * “Без переривання всі наші клієнти відійшли від точно такого ж розкладу, а потім повторили спробу одночасно, відтворюючи той самий пік трафіку через хвилину.” *

9. Повторити шторм

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

** Використання: ** * “Буря повторних спроб перевищила фактичний відключення — до того часу, як база даних відновлювалася, затримки повторних спроб було достатньо, щоб перевантажити її ще на десять хвилин.” *

10. швидко зазнавати невдачі

Принцип проектування, за якого система виявляє і повідомляє про помилку швидко, а не чекаючи або повторюючи спроби, зберігаючи ресурси і надаючи викликаючим негайний, дійсний сигнал.

** Використання: ** * “Ми навмисно обираємо швидку невдачу, а не повторну спробу — ця операція не є ідемпотентною, тому сліпі повторні спроби ризикують завдати більше шкоди, ніж швидка, явна невдача.” *

Відновлення і деградація

11. грациозна деградація

Практика системи, яка продовжує надавати зменшену, але все ще корисну функціональність, коли залежність зазнає невдачі, замість того, щоб зазнавати повної невдачі.

** Використання: ** * “Коли служба рекомендацій не працює, ми повертаємося до показу загального списку популярних елементів — це елегантне зниження якості замість пошкодженої сторінки.” *

12-й резерв

Заздалегідь визначена альтернативна відповідь або поведінка, яку використовують, коли основна дія зазнає невдачі, що дозволяє загальній системі продовжувати функціонувати зі зменшеною потужністю.

** Використання: ** * “Ми додали резервну функцію, яка обслуговує останню успішно кешовану відповідь, коли служба ціноутворення перевищує час очікування, замість того, щоб показувати користувачеві помилку.” *

13. зниження навантаження

Навмисне відхилення деяких вхідних запитів під час перевантаження, приоритизація можливості системи надійно обслуговувати залишкові запити, ніж спроба обслуговувати все і загальна невдача.

** Використання: ** * “Ми зменшуємо навантаження на фонові запити низького пріоритету під час цього піку, щоб система могла надійно обслуговувати потоки отримання.” *

14-й. Перевірка стану (перевірка стану залежності)

Механізм активної перевірки того, чи може залежність обслуговувати запити, використовується для повідомлення про маршрутизацію, стан обмежувача або попередження про рішення.

** Використання: ** “Наша перевірка стану лише перевіряє, що процес запущено, а не те, що він може насправді дістатися бази даних — саме тому він продовжував повідомляти про стан здоров’ я під час фактичного відключення.”

15. радіус вибуху

Обсяг впливу, який може мати пошкодження одного компонента в системі, концепція, що використовується для оцінки того, чи достатньо механізмів ізоляції, таких як перегородки.

** Використання: ** “Радиусом розширення цієї залежності є вся платформа, оскільки кожна служба має один і той же пул з’ єднань з нею — саме це і виправить ізоляція перегородки.”

Ключеві моменти

  • Відрізняти переривники від повторних спроб — переривник припиняє надсилання запитів до залежності, яка зазнала невдачі, а повторні спроби повторюють окремі невдалі дії.
  • Завжди поєднуйте повторні спроби з експоненціальним відхиленням і коливаннями, оскільки наївні спроби під час відключення можуть призвести до шторму повторних спроб, яка триватиме довше за початкову помилку.
  • Використовувати словник ізольованих перегородок під час обговорення спільних пулів ресурсів, оскільки невдача однієї залежності не повинна призвести до загибелі непов’ язаних запитів.
  • Використовувати елегантні шаблони зниження якості і резервування при розробці для відключення залежностей, замість того, щоб планувати лише для успішного шляху.
  • Радіус вибуху рамки як конкретне питання проектування під час перегляду архітектури - наскільки далеко поширюється невдача одного компонента, і який механізм ізоляції буде його містити.

На практиці: Навігація нюансів з не-рідними мовцями

Основні поняття автоматичних виключників, повторних спроб і перегородок відносно прості, коли виражені ясною, короткою англійською. Однак, спосіб, яким ви їх пояснюєте — конкретні фрази і термінологія — може бути значною перешкодою для розробників, чия перша мова не є англійською. Це не просто про знання визначення; це про розуміння тонких наслідків різних варіантів визначення сценаріїв невдачі і стратегій відновлення. Розглянемо деякі типові ситуації, де ця відмінність проявляється, особливо при співпраці з перегляду коду або обговорення проектних рішень.

Наприклад, рецензент може залишити коментар на кшталт: «Ця логіка повторних спроб надто агресивна. Це, ймовірно, погіршить проблему, неодноразово забиючи молотком в неефективну службу.” Хоча технічно точна, вона може відчувати себе обвинуваченою і не пропонує конструктивний шлях вперед. Більш дипломатичним підходом було б: «Я помітив цю петлю повторних спроб. Может, мы могли бы ввести * тайм-аут * наравне с механизмом повторных попыток? Таким чином, якщо служба залишається недоступною після декількох спроб, ми будемо грациозно рухатися далі, запобігаючи подальшому напруженню. ” Використання таких термінів, як “грациозно рухатися далі” і “захист від подальшого напруження” є ключовим – це змінює фокус від звинувачення до активного вирішення проблеми. Аналогічно, при описі шаблону перегородки, простого зауваження «Ця перегородка запобігає каскадним збоям» недостатньо; вам потрібно сформулювати * чому * це важливо: «Ця перегородка ізольовує цей компонент, запобігаючи потенційним проблемам в одній області від впливу на всю систему - важливий елемент для загальної стійкості»

Інша часта проблема виникає під час описів PR. Розробник може написати: « Реалізовано логіку автоматичного вимкнення ». Хоча це технічно правильно, але у цьому тексті бракує контексту і не передається * розуміння *, яке стоїть за реалізацією. Кращий опис буде таким: “Впроваджено шаблон обривника для ізоляції платіжної служби від періодичних відключень, зменшуючи потенційний вплив на обробку замовлень і досвід користувача. Автоматичний виключник буде автоматично відкрито, якщо платіжна служба перевищить визначений поріг помилок, запобігаючи каскадним збоям і надаючи змогу на спроби відновлення. » Зауважте, що ця версія включає певні параметри (поріг помилок), пояснює * вплив * помилки (обробка замовлення, досвід користувача), і чітко визначає мету — зменшення і запобігання.

Нарешті, будьте обережні з фразами, які можуть звучати надто технічно або жаргонно для не- рідного мовця. Уникайте фраз на кшталт « система повинна бути стійкою », якщо ви не розкриєте, що стійкість означає у цьому контексті. Замість цього, зосередьтеся на діях: «Ми повинні розробляти для невдачі», «Давайте побудуємо в механізми повторних спроб», або «Ми повинні розглянути ізоляцію перегородки»

Ось приклад того, як можна використовувати команду hystrix для налаштування автоматичного вимкнення (наприклад, для демонстрації обговорюваного вище типу взаємодії з CLI):

hystrix-cli config set service://payment/circuitbreaker.name -h http://payment-service -timeout 5000 -minRequests 10 -maxRequests 100 -failureRateThreshold 20

За допомогою цієї команди можна встановити автоматичний перемикач з назвою payment для http://payment-service з таймом очікування 5 секунд, мінімальним кількістю запитів 10, максимальним кількістю запитів 100 і порогом частоти помилок 20%. Зрозуміти ці параметри - тайм-аут, пороги - є ключовим для ефективного спілкування про те, як працює автоматичний виключач.

Поширені запитання

Про що ця стаття "Vocabulary for Circuit Breakers and Resilience Patterns"?

Вивчіть основний англійський словниковий запас для обговорення автоматичних виключників, повторних спроб, перегородок і інших шаблонів стійкості у розподілених системах.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Vocabulary for Circuit Breakers and Resilience Patterns"?

Приблизно 8 min.