Распределённые системы
Часы: свободное припоминание
Припоминание сильнее перечитывания. На каждый промпт проговори или запиши полный ответ по памяти, прежде чем открыть модельный — именно усилие припоминания закрепляет материал.
Восстанови ключевые идеи юнита — почему настенное время не может упорядочивать распределённые записи, отношение happens-before, Lamport vs vector clock и как TrueTime делает физическое время надёжным — не подглядывая в урок.
- 01Почему timestamp с машины A и timestamp с машины B несравнимы как упорядочивание, даже при запущенном NTP?
- 02Пройди по шагам, как именно clock skew превращается в тихую потерю данных под last-write-wins.
- 03Дай определение отношения happens-before и что Lamport timestamp гарантирует относительно него.
- 04Когда нужны vector clock вместо Lamport timestamp и чего они стоят?
- 05Что отдаёт TrueTime в Spanner и как commit-wait использует это для external consistency?
- 06Коллега говорит 'просто запусти NTP, и last-write-wins безопасен.' Дай senior-опровержение в один абзац.
Если ты смог восстановить каждый ответ по памяти, ты держишь хребет юнита: настенное время дрейфует и прыгает назад, поэтому оно не примитив упорядочивания, и LWW превращает skew в тихую потерю данных; happens-before — это причинный частичный порядок; Lamport timestamp дают дешёвый тотальный порядок, согласованный с причинностью, но не детектируют конкурентность; vector clock возвращают детекцию конкурентности ценой O(n) метаданных; а TrueTime делает физическое время надёжным, квантуя неопределённость как ограниченный интервал и пережидая его. Senior-инстинкт: никогда не упорядочивай распределённые записи по настенным часам.