1. What is a distributed system?1. Что такое распределённая система?
A distributed system is just several computers working together to do one job, talking to each other over a network. To the user it looks like one app; behind the scenes the work is spread over many machines.
«Распределённая система» — это просто несколько компьютеров, которые вместе делают одну задачу и общаются по сети. Пользователю это выглядит как одно приложение; за кулисами работа размазана по множеству машин.
2. Why not just use one big computer?2. Почему не взять один большой компьютер?
- Too much work for one. Millions of users or billions of events won't fit on a single machine.
- One machine can break. If everything lives on one computer and it dies, your whole app is down.
- Speed and location. Users are all over the world; having machines closer to them is faster.
- Слишком много работы для одного. Миллионы пользователей или миллиарды событий не влезут в одну машину.
- Одна машина может сломаться. Если всё на одном компьютере и он умирает — падает всё приложение.
- Скорость и расположение. Пользователи по всему миру; держать машины ближе к ним — быстрее.
3. The three hard truths3. Три суровые истины
Almost everything in distributed systems exists to deal with these three facts.Почти всё в распределённых системах придумано, чтобы справляться с этими тремя фактами.
① Things fail — all the time① Всё ломается — постоянно
With thousands of machines, something is always broken: a disk dies, a server reboots, a cable is unplugged. Failure isn't a rare emergency; it's the normal background state.
Когда машин тысячи, что-то всегда сломано: умер диск, перезагрузился сервер, выдернули кабель. Сбой — не редкое ЧП, а нормальный фон.
② Messages get lost, duplicated, or delayed② Сообщения теряются, дублируются или опаздывают
Computers talk over a network, and the network is unreliable. A message might never arrive, arrive twice, or arrive much later than expected.
Компьютеры общаются по сети, а сеть ненадёжна. Сообщение может не дойти, прийти дважды или прийти намного позже, чем ждали.
③ There is no shared clock③ Нет общих часов
Each machine has its own clock, and they drift apart. So you can't always say which of two events happened "first" just by comparing timestamps.
У каждой машины свои часы, и они расходятся. Поэтому нельзя всегда сказать, какое из двух событий случилось «первым», просто сравнив отметки времени.
4. Copies = Replication4. Копии = Репликация
Since machines fail, we keep several copies of the data on different machines. If one is lost, the others still have it. Keeping copies in sync is called replication.
Раз машины ломаются, мы держим несколько копий данных на разных машинах. Если одна потеряна — у других данные есть. Поддержание копий в синхроне называется репликацией.
5. Splitting = Partitioning (sharding)5. Разбиение = Партиционирование (шардирование)
When data is too big for one machine, we split it into pieces and put each piece on a different machine. Each piece is a partition (or shard).
Когда данных слишком много для одной машины, мы делим их на части и кладём каждую часть на отдельную машину. Каждая часть — это партиция (или шард).
6. The big choice: be correct, or be available?6. Главный выбор: быть точным или доступным?
Imagine the network breaks and two machines can't talk. A request comes in. You have two options:
Представь: сеть оборвалась, и две машины не могут общаться. Приходит запрос. У тебя два варианта:
- Refuse to answer until you're sure the data is correct (you stay consistent, but you're temporarily unavailable).
- Answer anyway with maybe-slightly-old data (you stay available, but you might be inconsistent for a moment).
- Отказаться отвечать, пока не уверен, что данные верны (остаёшься согласованным, но временно недоступен).
- Ответить всё равно, может быть, слегка устаревшими данными (остаёшься доступным, но на миг можешь быть несогласованным).
7. "Safe to do twice" = Idempotency7. «Безопасно сделать дважды» = Идемпотентность
Remember truth ②: messages can arrive twice. So a good system makes sure that doing the same thing twice has the same result as doing it once. This property has a fancy name: idempotency.
Вспомни истину ②: сообщения могут прийти дважды. Поэтому хорошая система следит, чтобы сделать одно и то же дважды давало тот же результат, что и один раз. У этого свойства есть умное название: идемпотентность.
The usual trick: give each request a unique id. If the system sees the same id again, it knows "I already did this" and safely ignores the duplicate. Combined with retries (try again if unsure), you get reliability without double-counting.
Обычный приём: давать каждому запросу уникальный id. Если система снова видит тот же id, она понимает «я это уже сделала» и безопасно игнорирует дубль. Вместе с ретраями (повторить, если не уверен) получается надёжность без двойного счёта.
8. How machines agree: voting8. Как машины договариваются: голосование
Sometimes a group of machines must agree on one answer — for example, "who is in charge right now?". They do it by voting: the choice that gets more than half the votes (a majority) wins. This is called consensus.
Иногда группе машин надо договориться об одном ответе — например, «кто сейчас главный?». Делают это голосованием: вариант, набравший больше половины голосов (большинство), побеждает. Это называется консенсус.
9. Fast vs complete: live data and latecomers9. Быстро vs полно: «живые» данные и опоздавшие
There are two ways to process data:
Есть два способа обрабатывать данные:
- Batch: wait, collect a lot, then process it all at once. Slower, but you have the full picture. (Like doing all the laundry once a week.)
- Streaming: process each item the moment it arrives. Fast and live, but you might not have everything yet. (Like washing each sock as it appears.)
- Батч (Batch): подождать, собрать много, потом обработать всё разом. Медленнее, но видишь полную картину. (Как стирать всё бельё раз в неделю.)
- Стриминг (Streaming): обрабатывать каждый элемент в момент прихода. Быстро и «вживую», но может быть ещё не всё. (Как стирать каждый носок по мере появления.)
10. Mini-glossary (you're ready for Intermediate)10. Мини-словарь (ты готов к «Среднему»)
| Word | Plain meaning |
|---|---|
| Node | One computer/server in the system. |
| Replication | Keeping copies of data on several nodes. |
| Partition / Shard | A piece of the data, split across nodes. (Also: a network split.) |
| Consistency | Everyone sees the same, up-to-date data. |
| Availability | The system keeps answering requests. |
| Idempotency | Doing it twice = doing it once. Makes retries safe. |
| Consensus | Machines agreeing on one value by majority vote. |
| Latency | How long one request takes (waiting time). |
| Throughput | How much work per second the system handles. |
| Watermark | The cutoff for "I think I've seen all the data up to here". |
| Слово | Простой смысл |
|---|---|
| Нода (Node) | Один компьютер/сервер в системе. |
| Репликация | Хранение копий данных на нескольких нодах. |
| Партиция / Шард | Кусок данных, разнесённый по нодам. (Ещё: разрыв сети.) |
| Согласованность | Все видят одинаковые, свежие данные. |
| Доступность | Система продолжает отвечать на запросы. |
| Идемпотентность | Дважды = один раз. Делает ретраи безопасными. |
| Консенсус | Машины договариваются об одном значении большинством голосов. |
| Задержка (Latency) | Сколько длится один запрос (время ожидания). |
| Пропускная способность (Throughput) | Сколько работы в секунду тянет система. |
| Watermark | Отсечка «кажется, все данные до этого момента я уже видел». |
11. Quick self-check11. Быстрая самопроверка
Answer in your head, then tap to flip.Ответь про себя, потом нажми, чтобы перевернуть.