How to Explain Eventual Consistency in English
Вивчіть англійську фразу для пояснення можливої послідовності інженерам і нетехнічним зацікавленим особам, починаючи з концепції і закінчуючи реальними наслідками продукту.
«Чому дані виглядають по-різному в залежності від того, який сервер відповідає» - це питання, на яке відповідає кінцева послідовність, але тільки якщо ви можете пояснити це без потопання зацікавленої сторони в теоремі CAP або переспрощення її до «зрештою вона сама себе виправить» і залишити позаду, чому це прийнятний компроміс.
Ключовий словник
** Послідовність у випадку** — гарантія того, що, якщо не буде виконано жодного запису, всі копії частини даних з часом зближаться до одного і того ж значення, але не обов’ язково одразу після запису, тобто, читання, яке відбудеться незабаром після запису, може повернути застарілі дані. “Це не помилка — це остаточна послідовність. Запис успішно завершено, але читання, яке ви виконуєте відразу після цього, може вдарити по реплікі, яка ще не наздоганяє. Дайте йому секунду і він буде послідовним».
** Затримка реплікації ** — затримка між записом, який досягає основного сховища даних, і тим самим записом, який поширюється на репліку, фактичний механізм, який створює симптом « застарілого читання », пов’ язаний з кінцевою послідовністю. “Тикет підтримки, який ви переглядаєте, був щойно оновлений, але ви читаєте з копії з затримкою близько 200 мс — це нормально, він покаже оновлення майже негайно.”
** Сильна послідовність ** — гарантія того, що будь- яке читання відразу після запису відображає запис, усюди, за ціною більшої затримки або зменшеної доступності у порівнянні з остаточною послідовною системою. “Ми використовуємо сильну послідовність для платіжної книги, особливо - це одне місце, де застарілий зчитування показує неправильний баланс навіть на секунду неприйнятний, навіть якщо це коштує нам деяку затримку.”
** Read- your- writes consistency ** — середня гарантія, за якої користувачеві гарантовано негайне перегляд його власних останніх записів, навіть якщо інші користувачі можуть на короткий час побачити застарілі дані, часто реалізована шляхом перенесення читання користувача до первинного права після запису. “Одразу після того, як ви опублікуєте коментар, ви побачите його відразу через послідовність читання- ваших- записів — але інший користувач, який завантажує ту ж саму сторінку через хвилину, може не побачити його, поки він не буде реплікований.”
Звичайні фрази
- Чи це помилка, чи це кінцева послідовність і очікувана затримка реплікації?»
- «Скільки репліка затримка ми типово бачимо зараз?»
- «Чи ця особливість дійсно потребує сильної послідовності, або ж тут є можливість послідовності?»
- Чи можемо ми дійсно розуміти, що говорить нам цей вірш?»
- «Яка реальна гарантія послідовності, яку ми пропонуємо тут, конкретно?»
Приклади висловлювань
Пояснення квитка підтримки нетехнічним користувачам:
- “Оновлення було успішно збережено — сторінка, яку вони оновили, була завантажена з сервера, який ще не наздоганяв. Наша система приділяє пріоритет швидкості і завжди доступному доступу, гарантуючи, що кожне читання є негайно актуальним всюди, і це рідкісний видимий побічний ефект цього компромісу. ”*
Обґрунтування рішення щодо архітектури інженеру:
- “Ми не маємо нічого проти використання послідовних читань для подачі активності — декілька секунд застарілості не помітні для користувачів. Але ми навмисно використовували сильну послідовність для обліку запасів, тому що перепродаж продукту через застарілий читання є справжньою бізнес-проблемою, а не тільки косметичною.”*
Опис цільового виправлення: “Замість того, щоб зробити всю систему сильно послідовною, що б вбило затримку всюди, ми додали послідовність читання- вашого- написання спеціально для потоку коментарів — так що користувач завжди бачить свій власний коментар, який з’ являється миттєво, навіть якщо інші користувачі можуть побачити його пізніше.”
Професійні поради
- Рамка ** можлива послідовність ** для нетехнічної аудиторії як навмисний компроміс для швидкості і доступності, а не помилку - “це спроектовано таким чином, і ось конкретна користь, яку ми отримуємо від нього” приземляється дуже по-іншому, ніж “вибачте, це просто так працює.”
- Виміряйте затримку репродукції реальними числами, коли пояснюєте застарілу скаргу на читання — « кілька сотень мілісекунд » заспокоює і конкретно; « з часом це синхронізується » звучить ухиляючись, навіть коли це правда.
- Обґрунтувати ** сильну послідовність **, назвавши конкретну вартість застарілого читання в цьому контексті (перевищення запасів, показуючи неправильний баланс) — це пояснює, чому одна частина системи платить вартість затримки, а інші не платять.
- Запропонувати ** read-your-write consistency ** як середній шлях, коли конкретна скарга користувача не вимагає зробити всю систему сильно послідовною - це вирішує справжню проблему без більшої вартості продуктивності.
Практичні вправи
- Напишіть речення, яке пояснює можливу послідовність для нетехнічної зацікавленої сторони без використання терміну « теорема CAP »
- Поясніть різницю між кінцевою послідовністю і сильною послідовністю вашими словами.
- Описати можливість, за якої послідовність читання- запису розв’ язує справжню проблему, з якою стикається користувач.
Наприклад, слово «консенсус» може означати: Консенсус — спільне рішення різних груп людей
Зрозуміти кінцеву послідовність не просто про знання технічного визначення - це про * комунікацію * цього розуміння ефективно. Це особливо важливо, коли справа доходить до колег, які можуть мати різні рівні технічної експертизи, включаючи тих, чия перша мова не є англійською. Ключ полягає у виборі точного словника і пояснень, які резонують з різними перспективами. Розглянемо звичайний сценарій: ви переглядаєте запит на витягування, у якому член команди реалізував нову функціональність, що залежить від розподіленої бази даних.
Під час перегляду коду ваш колега пише: « Впроваджено асинхронне оновлення для забезпечення послідовності даних ». Хоча це твердження технічно вірне, воно може бути непрозорим для когось, хто не знайомий з нюансами послідовності. Ефективнішою фразою, особливо при зверненні до нерідного носіїв, які потребують вдосконалення своєї професійної англійської, було б: «Щоб поліпшити чутливість, ми прийняли підхід, де зміни поширюються по всій нашій системі з часом. Подумайте про це так: оновлення не відображаються негайно усюди; може бути коротка затримка, перед тим як всі репліки покажуть найновіші дані. Цей компроміс дозволяє нам надати швидший досвід користувача, але важливо, щоб ми визнали і задокументували цей потенціал для тимчасових невідповідностей. “Зауважте, як підкреслення “розповсюдження в часі” і використання аналогії - “такого” - забезпечує негайний контекст.
Інша ситуація виникає під час створення опису запитів на завантаження. Замість того, щоб просто сказати: « Використання кінцевої послідовності для поліпшення продуктивності », розгляньте: « Ця зміна використовує кінцеву послідовність для оптимізації затримки читання. У системі з багатьма одночасними користувачами, які мають доступ до одних і тих самих даних, оновлення застосовуються асинхронно. Хоча існує вікно, в якому різні частини системи можуть відображати дещо різну інформацію, ми впровадили заходи безпеки, такі як оптимістичні стратегії блокування і розв’язання конфліктів, щоб мінімізувати вплив цих тимчасових розбіжностей і забезпечити цілісність даних в довгостроковій перспективі. Ми віддаємо перевагу чутливому користувацькому досвіду, визнаючи, що абсолютна негайна синхронізація неможлива в цьому масштабі. “Мова фокусується на * перевагах * (читайте оптимізацію затримки) разом з технічним підходом і явно згадує захисні заходи.
Нарешті, уявіть, що ви пояснюєте можливу послідовність менеджеру продукту, який не має глибокого розуміння баз даних. Ви можете сказати: «По суті, ми будуємо систему, де оновлення даних не відображаються миттєво всюди. Це схоже на розсилання декількох копій важливого документа — для того, щоб кожен отримав і підтвердив зміни, потрібен час. Це не обов’язково «погано»; це дозволяє нам обробляти більший обсяг запитів і надавати швидшу відповідь, але нам потрібно бути прозорими щодо цього обмеження з нашими користувачами, особливо коли справа доходить до критичних операцій, таких як фінансові транзакції. “Це уникає технічного жаргону і зосереджується на впливі - досвід користувача і операційні можливості - використовуючи аналогії. Метою завжди є ясність: продемонструвати, що ви розумієте * чому * можлива послідовність існує, а не тільки * що * вона існує.