Эта книга предлагает практические методы создания программных систем с минимальной задержкой. В ней рассматривается, как ускорять ПО на каждом слое технологического стека, начиная с первых принципов и до уровня промышленного кода. Читатель узнает, что действительно означает латентность, чем она отличается от пропускной способности и почему она напрямую влияет на пользовательский опыт. На практических примерах показано применение закона Литтла, разработка lock-free алгоритмов и создание масштабируемых систем кеширования. Подробно обсуждается, как поведение кода меняется в распределённых системах, базах данных и операционных системах, а также какие источники задержек типичны для каждой из этих сред.
Чему вы научитесь
Корректно определять латентность, отличать её от пропускной способности и оценивать её влияние на UX.
Моделировать производительность с помощью закона Литтла и закона Амдала, измерять и визуализировать задержки.
Оптимизировать доступ к данным через колокацию, репликацию, партиционирование и кеширование.
Ускорять вычисления с помощью алгоритмических оптимизаций, настройки памяти и lock-free конкурентных структур.
Минимизировать задержки посредством асинхронной обработки, предиктивных методов и спекулятивного выполнения.
Введение в латентность
Латентность — это задержка между причиной и следствием. На практике её избыток может привести к различным проблемам: от неверных результатов вычислений и таймаутов до недовольства пользователей и оттока аудитории. Устранение и диагностика таких задержек часто оказываются непростыми задачами. Эта книга сочетает фундаментальные идеи с прикладными техниками, превращая результаты исследований в полезные инструменты для немедленного использования.
О технологии
От потерянных микросекунд при маршрутизации сообщений до долгих загрузок страниц, латентность может разрушить любое программное решение. Эта книга помогает выявлять, понимать и устранять задержки в приложениях и инфраструктуре, что критически важно для успешного функционирования современных технологических систем.
Пекка Энберг — опытный инженер-программист, специализирующийся на операционных системах, базах данных и распределённых системах, с научным интересом в области низколатентных сетевых систем. В разные годы он работал над ядром Linux как мейнтейнер подсистемы динамического распределения памяти, а также участвовал в разработке ScyllaDB — высокопроизводительной распределённой базы данных, совместимой с Apache Cassandra и ориентированной на минимальные