Pull to refresh

Основные тезисы конференции HighLoad++ 2011

Reading time 6 min
Views 4.1K
Self Promo
imageВ октябре 2011 года в Москве проходила ежегодная конференция разработчиков высоконагруженных проектов HighLoad++.
Решил поделиться с читателями основными тезисами с конференции. Поскольку вся информация открыта и доступна на странице конференции, решил что собрать все тезисы вместе будет не такой уж и плохой затеей. Сразу отмечу, что в отчёте не содержится детальной информации о каждом докладе — затронуты лишь ключевые моменты.
Итак, о чём говорилось на HighLoad++ 2011.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 2

Проксирование и автошардинг в Tarantool/Box

Reading time 1 min
Views 3K
NoSQL *
После многочисленных обсуждений, был создан черновик спецификации на проксирование и автошардинг в Tarantool/Box.
Общая идея такая, что для того, чтобы скрыть наличие шардинга от пользователя, на локальном хосте приложения (PHP/Perl/etc) поднимается прокси, которая уже маршрутизирует запросы на шарды, и умеет найти нужный ключ в случае решардинга.
Сам решардинг производится уже с помощью Lua на самих шардах, при этом прокси переносит наиболее горячие ключи на новые шарды при доступе к ним, что должно снизить нагрузку на систему во время решардинга.

Полностью спецификация лежит на github wiki.

Было бы крайне полезно обсудить спецификацию на предмет потенциальных проблем, неучтённых ситуаций, удобства использования, прежде чем её реализовывать.
Total votes 8: ↑7 and ↓1 +6
Comments 0

Илья Григорик о внедрении HTTP/2

Reading time 4 min
Views 39K
Client optimization *IT Standards *
Известный специалист по серверной и клиентской оптимизации, соавтор WebRTC, автор книги "High Perfomance Browser Networking" Илья Григорик из Google опубликовал презентацию “HTTP/2 all the things!”, в которой объясняет, как следует настраивать серверную часть под HTTP 2.0, чтобы повысить скорость загрузки страниц и уменьшить latency, по сравнению с HTTP 1.1.


Режим Connection View в браузере показывает загрузку элементов заглавной страницы Yahoo.com в HTTP 1.1

Илья начинает с того, что для современных сайтов бóльшая часть задержек приходится на ожидание загрузки ресурсов, при этом полоса пропускания не является ограничивающим фактором (синим цветом на диаграмме Connection View). По статистике, для загрузки средней веб-страницы браузер делает 78 запросов к 12 различным хостам (общий размер загружаемых файлов 1232 КБ).
Читать дальше →
Total votes 44: ↑42 and ↓2 +40
Comments 27

Видео докладов Badoo с конференции Highload 2014

Reading time 2 min
Views 20K
Badoo corporate blog Website development *Puppet *Hadoop *
Осенью мы выступали с докладами на одной из лучших технических конференций Highload 2014 и сейчас с удовольствием делимся с вами видео докладов. Вы можете задавать вопросы в комменариях и наши спикеры и остальные эксперты обязательно на них ответят.

1. «Sharding — patterns & antipatterns».
Доклад Алексея Рыбака (Badoo) и Константина kostja Осипова (Mail.ru).



Еще 5 отличных докладов
Total votes 41: ↑37 and ↓4 +33
Comments 13

Очень большой Postgres

Reading time 9 min
Views 83K
PostgreSQL *
Sandbox
Так уж случилось, что последнее время приходилось заниматься оптимизацией и масштабированием различных систем. Одной из задач было масштабирование PostgreSQL. Как обычно происходит оптимизация БД? Наверное, в первую очередь смотрят на то, как правильно выбрать оптимальные настройки для работы и какие индексы можно создать. Если обойтись малой кровью не вышло, переходят к наращиванию мощностей сервера, выносу файлов журнала на отдельный диск, балансировке нагрузки, разбиению таблиц на партиции и к всякого рода рефакторингу и перепроектированию модели. И вот уже все идеально настроено, но наступает момент, когда всех этих телодвижения оказывается недостаточно. Что делать дальше? Горизонтальное масштабирование и шардинг данных.


Читать дальше →
Total votes 48: ↑48 and ↓0 +48
Comments 28

Партиционирование в PostgreSQL – Что? Зачем? Как?

Reading time 23 min
Views 133K
Website development *PostgreSQL *SQL *
Translation
Функцией партиционирования таблиц в PostgreSQL, к сожалению, активно пользуются пока не многие. На мой взгляд, очень достойно о ней рассказывает в своей работе Hubert Lubaczewski (depesz.com). Предлагаю вам еще один перевод его статьи!

В последнее время я заметил, что всё чаще и чаще сталкиваюсь с кейсами, где можно было бы использовать партиционирование. И хотя, теоретически, большинство людей знает о его существовании, на самом деле эту фичу не слишком хорошо понимают, а некоторые её даже побаиваются.

Так что я постараюсь объяснить в меру своих знаний и возможностей, что это такое, зачем его стоит использовать и как это сделать.
Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 25

Работа с MySQL: как масштабировать хранилище данных в 20 раз за три недели

Reading time 9 min
Views 32K
Латера Софтвер corporate blog MySQL *
Translation


Ранее в блоге на Хабре мы рассказывали о развитии нашего продукта — биллинга для операторов связи «Гидра», а также рассматривали вопросы работы с инфраструктурой и использования новых технологий. К примеру, мы рассмотрели плюсы Clojure, ситуации, когда стоит и не стоит использовать MongoDB и ограничения в PostgreSQL.

Сегодня речь пойдет о масштабировании. Разработчики open-source почтового приложения Nylas опубликовали в своем блоге материал о том, как им удалось масштабировать систему в 20 раз за три недели с помощью инструмента ProxySQL. Для этого им пришлось переехать с Amazon RDS на MySQL на EC2. Мы представляем вашему вниманию основные моменты этой интересной заметки.
Читать дальше →
Total votes 29: ↑20 and ↓9 +11
Comments 6

Переходим c Tarantool 1.5 на 1.6

Reading time 8 min
Views 9.2K
VK corporate blog High performance *Python *Go *Tarantool *


Привет, Хабр! Хочу рассказать историю миграции с Tarantool версии 1.5 на 1.6 в одном из наших проектов. Как вы думаете, нужно ли заниматься миграцией на новую версию, если и так все работает? Насколько легко это сделать, если у вас уже написано достаточно много кода? Как не затронуть живых пользователей? С какими трудностями можно столкнуться при таких изменениях? Какой вообще профит от переезда? Ответы на все вопросы можно найти в этой статье.
Читать дальше →
Total votes 55: ↑48 and ↓7 +41
Comments 14

Как перейти на микросервисы и не разломать production

Reading time 9 min
Views 15K
True Engineering corporate blog High performance *Product Management *DevOps *
Сегодня расскажем, как переводили на микросервисы монолитное решение. Через наше приложение круглосуточно проходит от 20 до 120 тысяч транзакций в сутки. Пользователи работают в 12 часовых поясах. В то же время функционал добавлялся много и часто, что довольно сложно делать на монолите. Вот почему системе требовались устойчивая работа в режиме 24/7, то есть HighLoad, High Availability и Fault Tolerance.

Мы развиваем этот продукт по модели MVP. Архитектура менялась в несколько этапов вслед за требованиями бизнеса. Первоначально не было возможности сделать всё и сразу, потому что никто не знал, как должно выглядеть решение. Мы двигались по модели Agile, итерациями добавляя и расширяя функциональность.


Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 9

TON: Telegram Open Network. Часть 2: Блокчейны, шардирование

Reading time 7 min
Views 31K
Decentralized networks *Cryptography *Algorithms *

TON


Данный текст — продолжение серии статей, в которых я рассматриваю структуру (предположительно) готовящейся к выходу в этом году распределенной сети Telegram Open Network (TON). В предыдущей части я описал её самый базовый уровень — способ взаимодействия узлов между собой.


На всякий случай напомню, что к разработке этой сети я отношения не имею и весь материал почёрпнут из открытого (хотя и непроверенного) источника — документа (ещё к нему есть прилагающаяся брошюра, излагающая вкратце основные моменты), появившегося в конце прошлого года. Объем информации в этом документе, на мой взгляд, свидетельствует о его подлинности, хотя никаких официальных подтверждений тому нет.


Сегодня посмотрим на основной компонент TON — блокчейн.

Читать дальше →
Total votes 46: ↑43 and ↓3 +40
Comments 14

Удаление данных с шардированной базы

Reading time 11 min
Views 2.5K
High performance *System Analysis and Design *SQL *Microsoft SQL Server *
Статья о том, как решали задачу оптимизации процесса удаления файлов из шардированной системы. Речь пойдет о проекте для совместного доступа и работы с файлами. Система была стартапом лет 8 назад, потом он успешно выстрелил и был несколько раз продан. В проекте 4 разработчика, которые с проектом с самого начала, что очень ценно. Документацию, традиционно, либо не успели написать, либо она не очень актуальна.

Зачем вам это читать и зачем я все это написала? Хочется рассказать о граблях, которые заботливо лежат внутри системы и бьют так, что звездочки сыпятся из глаз.

Хочу сказать большое спасибо Hanna_Hlushakova за совместную работу, доведение проекта до конца и помощь в подготовки статьи. В основном вы встретите описания проблемы и алгоритма ее решения, который мы использовали, никаких примеров кода, структур данных и других нужных вещей тут нет. Я не знаю поможет ли вам мой опыт избежать граблей у себя, но надеюсь что-то полезное вы извлечете. Возможно, данная статья будет абсолютно безвозвратной потерей драгоценного времени.


Читать дальше →
Total votes 12: ↑11 and ↓1 +10
Comments 0

Теория шардирования

Reading time 26 min
Views 75K
Конференции Олега Бунина (Онтико) corporate blog High performance *System Analysis and Design *Data storage *
Кажется, мы так глубоко погрузились в дебри highload-разработки, что просто не задумываемся о базовых проблемах. Взять, например, шардирование. Чего в нем разбираться, если в настройках базы данных можно написать условно shards = n, и все сделается само. Так-то, он так, но если, вернее когда, что-то пойдет не так, ресурсов начнет по-настоящему не хватать, хотелось бы понимать, в чем причина и как все починить.

Короче, если вы контрибьютили свою альтернативную реализацию хэширования в Cassandra, то вряд ли тут для вас найдутся откровения. Но если нагрузка на ваши сервисы уже прибывает, а системные знания за ней не поспевают, то милости просим. Великий и ужасный Андрей Аксёнов (shodan) в свойственной ему манере расскажет, что шардить плохо, не шардить — тоже плохо, и как это внутри устроено. А еще совершенно случайно одна из частей рассказа про шардинг вообще не совсем про шардинг, а черт знает про что — как объекты на шарды мапить.

Фотография котиков (хоть они случайно и оказались щеночками) уже как бы отвечает на вопрос, зачем это всё, но начнем последовательно.
Total votes 37: ↑37 and ↓0 +37
Comments 6

Что такое шардинг в блокчейне на алгоритме terahash

Reading time 9 min
Views 2.6K
Decentralized networks *Cryptocurrencies
Sandbox
Что такое шардинг в блокчейне на алгоритме terahash Для начала — определимся, что в принципе подразумевает термин, звучащий, как шардинг.
Словарь говорит, что «sharding» — сегментирование, «shard» — осколок.

Причем тут, казалось бы, блокчейн и криптовалюты вообще? Алгоритмы шифрования вообще и terahash, в частности? Какое отношение, какие-то осколки и сегментирование могут иметь к работе криптосетей?

А на самом деле — все просто, если
Читать дальше →
Total votes 22: ↑12 and ↓10 +2
Comments 11

Как перестать беспокоиться и начать жить без монолита

Reading time 8 min
Views 9.4K
IT Infrastructure *History of IT IT-companies Microservices *


Все мы любим истории. Нам нравится, сидя у костра, рассказывать о своих былых победах, сражениях или просто о своем опыте работы.

Сегодня как раз такой день. И пусть вы сейчас не у костра, но зато у нас есть история для вас. История о том, как мы начали работать с хранилищем на Tarantool.

Когда-то давным-давно в нашей компании была пара «монолитов» и один на всех «потолок», к которому эти монолиты медленно, но верно приближались, ограничивая полет нашей компании, наше развитие. И было однозначное понимание: однажды мы жестко упремся в этот потолок.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Comments 11

Базы данных: большой обзор типов и подходов. Доклад Яндекса

Reading time 28 min
Views 68K
Яндекс corporate blog System Analysis and Design *SQL *Database Administration *Data storage *
Это конспект лекции Татьяны Денисовой tdenisova — бэкенд-разработчика в Яндекс.Учебнике. Вы узнаете, какие бывают базы данных, какие их особенности важно помнить, как в работе с данными учитывать характеристики системы и планы масштабирования, в какую из тем нужно углубиться для решения конкретной задачи. А также как при возникновении багов определить, является ли работа с БД источником проблемы (и если да, то в какую сторону копать).



— О чем именно мы будем говорить? Не о примитивных селектах и джойнах — о них, я думаю, большинство из вас уже знает.
Читать дальше →
Total votes 37: ↑35 and ↓2 +33
Comments 15

Нерешенные проблемы шардинга в блокчейне

Reading time 14 min
Views 3.3K
Near corporate blog High performance *Decentralized networks *Distributed systems *Cryptocurrencies

Введение

В большинстве современных протоколов блокчейна каждый участник цепи скачивает и проверяет каждую транзакцию. Это естественным образом ограничивает сверху количество транзакций, которые протокол может выполнять за единицу времени: не больше, чем может скачать и выполнить средний участник цепи.

Ключевая идея шардинга заключается в том, что вместо того, чтобы каждая транзакция в сети была выполнена каждым участником, только подмножество участников выполняют каждую транзакцию. Для достижения этой цели все состояние цепи (аккаунты, контракты, данные) разбиваются на несколько непересекающихся интервалов, которые называются “шардами”; каждый участник сети назначается на один или больше шардов, и скачивает и выполняет только транзакции, относящиеся к своим шардам.

Когда участникам сети приходится взаимодействовать с шардом, на который они не назначены, они в общем случае не могут получить и проверить всю историю этого шарда.

Это приводит к потенциальной проблеме: без загрузки и проверки всей истории участник не может быть уверен, что состояние, с которым он взаимодействует, — это результат валидной последовательности блоков и что такая последовательность действительно является канонической цепочкой в этом шарде. В прошлой статье я показывал, почему этой проблемы нет в нешардируемых блокчейнах

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

Читать далее
Total votes 13: ↑13 and ↓0 +13
Comments 3

Как мы создаём почтовую систему нового поколения Mailion. Принципы проектирования масштабируемых хранилищ данных

Reading time 13 min
Views 11K
МойОфис corporate blog Data storage *Data storages *Distributed systems *

МойОфис продолжает цикл публикаций (1, 2) о разработке корпоративной почтовой системы нового поколения Mailion, которая реализуется при грантовой поддержке РФРИТ. В состав Mailion входит объектное хранилище DOS; в предыдущей статье мы рассмотрели его общую архитектуру и ключевые оптимизации, повышающие экономическую эффективность хранения данных. Сегодня мы переходим к одной из самых сложных и увлекательных тем в области разработки баз данных — проблеме масштабирования.

Читать далее
Total votes 13: ↑13 and ↓0 +13
Comments 5

Шардинг, от которого невозможно отказаться

Reading time 13 min
Views 16K
NoSQL *MongoDB *Database Administration *Data storage *Data storages *
image

А не пора ли нам шардить коллекции?
Не-е-е:


  • у нас нет времени, мы пилим фичи!
  • CPU занят всего на 80% на 64 ядерной виртуалке!
  • данных всего 2Tb!
  • наш ежедневный бекап идет как раз 24 часа!

В принципе, для большинства проектов вcё оправдано. Это может быть еще прототип или круг пользователей ограничен… Да и не факт, что проект вообще выстрелит.
Откладывать можно сколько угодно, но если проект не просто жив, а еще и растет, то до шардинга он доберется. Одна беда, обычно, бизнес логика не готова к таким "внезапным" вызовам.
А вы закладывали возможность шардинга при проектировании коллекций?


Эта статья для продвинутых разработчиков.
Для тех, кто планирует шардинг своего кластера.
Для тех, кто уже шардировал кластер ранее, но админы все еще плачут.
Для тех, кто руками перемещал jumbo-чанки.


Сначала, мы будем учится жить со слонами.
Потом, мы их победим, но не сможем вернуться назад.

Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Comments 0

Ровняем шарды

Reading time 12 min
Views 2.6K
NoSQL *MongoDB *Database Administration *Data storage *Data storages *
image

"Размышления без практики приводят к заблуждению, практика без размышления приводит к затруднению."


Мы ведём войну с индивидуальностью у шардов в кластере MongoDB. Это продолжение статьи Шардинг от которого невозможно отказаться, а это значит, что наступила пора конкретики.


Как я и обещал, здесь мы рассмотрим подробнее:


  • настройку процесса выравнивания размера шардов
  • расчет поправок для коррекции границ
  • мониторинг распределения данных в коллекциях
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 2

Шард-кластер InterSystems IRIS за минуту с Configuration Merge File

Reading time 6 min
Views 428
InterSystems corporate blog Database Administration *
Tutorial

В этой статье мы запустим кластер InterSystems IRIS с помощью docker и файлов Merge CPF (CMF) — новой функции, позволяющей легко конфигурировать серверы InterSystems IRIS. В UNIX и Linux вы можете изменить стандартный iris.cpf с помощью декларативного файла Merge CPF. Файл Merge CPF — это частичный CPF, который устанавливает нужные значения для любых параметров при запуске InterSystems IRIS. С помощью Merge CPF легко можно запускать сложные конфигурации InterSystems IRIS.

Читать дальше →
Total votes 1: ↑1 and ↓0 +1
Comments 0
1