Поиск маршрута IPv4 в Linux

TL;DR: Благодаря реализации маршрутизации таблиц IPv4 с использованием LPC-tries Linux может предложить хорошую производительность поиска (50 нс для full view) и низкое использование памяти (64 MiB для full view). В течении срока действия дейтаграммы IPv4 внутри ядра Linux важным шагом является поиск маршрута для адреса назначения через функцию fib_lookup(). На основе […]

Красота Go lang

Некоторое время назад я начал изучать возможность использования Go в некоторых своих сторонних проектах и был просто поражен красотой этого языка программирования. Думаю, что его разработчикам удалось найти баланс между простотой использования, обычно свойственной интерпретируемым языкам с динамической типизацией, и производительностью вкупе с безопасностью (типобезопасность, безопасность использования памяти), которые характерны […]

Пулы потоков NGINX: увеличиваем производительность в 9 раз!

Хорошо известно, что NGINX используется как асинхронное, событийно-ориентированное решение для обработки соединений. Это означает, что вместо создания выделенного процесса или потока для каждого запроса (наподобие серверов в традиционной архитектуре) он обрабатывает множество соединений и запросов в одном процессе воркера. Чтобы этого достичь, NGINX работает с сокетами в неблокирующем режиме и […]

3 проекта с открытым исходным кодом, упрощающие Kubernetes

Kubernetes — решение проблем. Он позволяет запускать контейнеризированные приложения и масштабировать их без утопания в деталях. С ним просто балансировать нагрузку, сетевые контейнеры, обеспечивать высокую доступность для приложений и управлять обновлениями или откатами. Но применение Kubernetes не лишено проблем. Запуск и использование Kubernetes требует работы, и многие задачи управления и обслуживания Kubernetes являются трудными.

Оптимизируем веб-серверы под высокую пропускную способность и низкую задержку

Эта статья — расширенная версия моего выступления на NginxConf 2017 6 сентября 2017 года. Являясь SRE в команде Dropbox Traffic, я отвечаю за нашу сеть Edge: ее надежность, производительность и эффективность. Dropbox edge network представляет собой прокси-уровень на основе nginx, предназначенный для обработки как транзакций с метаданными, чувствительными к задержкам, так и высокопроизводительных передач […]

Принципы шардинга реляционных баз данных

Когда ваша база данных небольшая (10 ГБ), вы можете легко добавить больше ресурсов и таким образом масштабировать ее. Однако, поскольку таблицы растут, нужно подумать и о других способах масштабирования базы данных. С одной стороны шардинг — лучший способ масштабирования. Он позволяет линейно масштабировать ресурсы базы данных, памяти и диска, дробя базу данных […]

Оптимизация баз данных под высокую доступность

Для важных платформ, ориентированных на клиента, высокая доступность — первоочередная задача. Однако доступность — постоянно движущаяся цель. Чем больше используется платформа, тем доступнее она должна быть, обеспечивая согласованную производительность и правильное выполнение задачи. Я расскажу вам о стратегии дизайна, уникальной для платформ, требующих как высокой масштабируемости, так и высокой доступности. Эта стратегия проектирования предусматривает сокращение баз […]

Kured — демон перезагрузки Kubernetes

Kured (KUbernetes REboot Daemon) — это демон Kubernetes, который выполняет безопасные автоматические перезагрузки узлов. Он запускается системой управления пакетами базовой ОС. По сути Kured: Следит за наличием напоминания о перезагрузке, например, /var/run/reboot-required. Использует блокировку на сервере API, чтобы обеспечить одновременную перезагрузку только одного узла. Опционально отменяет перезагрузку при наличии активных предупреждений Prometheus. Выполняет […]

Конфигурация Ingress в Kubernetes с использованием Azure Container Service

В посте о запуске приложения .NET Core 2 в Kubernetes я создам Service, чтобы открыть доступ к .NET Core 2 Webapi. Service получит публичный IP-адрес. Конфигурация выглядит так: apiVersion: v1 kind: Service metadata: name: myapiservice spec: ports: — port: 80 selector: app: mywebapi type: LoadBalancer Схема выглядит так:

Статус ядра Linux, Meltdown и Spectre

Все знают, что что-то «крупное» ожидается от компьютерной безопасности. И когда даже Daily Mail публикует статьи о уязвимостях Meltdown и Spectre, вы знаете, ситуация настораживает… В любом случае я не собираюсь вдаваться в подробности публикуемых Daily Mail проблем, но укажу на замечательно написанный материал Project Zero, посвященный обсуждаемым вопросам. Им нужно выдать […]