просмотров:2197

HighLoad++

Разработка высоконагруженных систем. Обзор, собственные суждения и заметки по сборнику лучших докладов конференции разработчиков высоконагруженных систем HighLoad++ за 2010 и 2011 года. С помощью небольших заметок расчитываю лучше запомнить материал, будет шпаргалка на будущее:)

Денормализация   11 октября 2015

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

Пар­ти­ци­о­ни­ро­ва­ние   11 октября 2015

Пар­ти­ци­о­ни­ро­ва­ние — это раз­би­е­ние таб­лиц, содер­жа­щих боль­шое коли­че­ство запи­сей, на логи­че­ские части по неким выбран­ным адми­ни­стра­то­ром кри­те­ри­ям. Пар­ти­ци­о­ни­ро­ва­ние таб­лиц делит весь объем опе­ра­ций по обра­ботке дан­ных на несколько неза­ви­си­мых и парал­лельно выпол­ня­ю­щихся пото­ков, что суще­ственно уско­ряет работу СУБД. Для пра­виль­ного кон­фи­гу­ри­ро­ва­ния пара­мет­ров пар­ти­ци­о­ни­ро­ва­ния необ­хо­ди­мо, чтобы в каж­дом потоке было при­мерно оди­на­ко­вое коли­че­ство запи­сей. Напри­мер, на новост­ных сай­тах имеет смысл пар­ти­ци­о­ни­ро­вать записи по дате пуб­ли­ка­ции, так как све­жие ново­сти на несколько поряд­ков более вос­тре­бо­ваны и чаще тре­бу­ется работа именно с ними, а не со всех архи­вом за годы суще­ство­ва­ния новост­ного ресурса.

Репликация   11 октября 2015

Репликация (от лат. replico -повторяю) — это тиражирование изменений данных с главного сервера БД на одном или нескольких зависимых серверах. Главный сервер будем называть мастером, а зависимые — репликами. Изменения данных, происходящие на мастере, повторяются на репликах (но не наоборот). Важно понимать, что при репликации передаются не сами измененные данные, а только запросы, вызывающие изменения. При репликации содержимое БД дублируется на нескольких серверах.

Шардинг   11 октября 2015

Шардинг - это разбиение, нарезка данных по машинам. Это некая договоренность о том, как мы будем класть элемент данных и как мы будем их потом искать. Договоренность между бек-ендом (бизнес логикой) и системой хранения.

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

Очереди   11 октября 2015

Один из самых мощных паттернов в проектировании веб-систем — использование очередей.

Можно использовать:

1. Чтобы отложить задачу на потом

2. В качестве общей шины данных, для коммуникации между сервисами

Трехзвездная структура   31 мая 2015

Фронтенд -  отдать статику, обработка запроса, передача его дальше бекенду.

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

Хранение данных - база данных, файловая система, все что угодно.

Маштабирование архитиктурного решения   31 мая 2015

Вертикальное маштабирование - наращиваем сам сервак, пока это возможно. Ассоциация для того, чтобы запомнить - как-бы вертикально увеличиваем сам комп.

Горизонтальное маштабирование - подключение дополнительных серверов. Ассоциация для того, чтобы запомнить, рядом с компом ставим еще один, потом еще.. как-бы добавляем по горизонтали.

  31 мая 2015

Существует 2 подхода к разработке высоконагруженных систем: ремесленный и промышленный. Разница в том где разрабатываются средства маштабирования.

При ремесленном подходе средства и бизнес логика разрабатываются одновременно. Пример такого приложения - вконтакте. Там все программисты высокого класса и все прекрасно разбираются в разработке высоконагруженных систем.

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

Как правило промышленный подход требует намного больше технических ресурсов нежели ремесленный. Но в ремесленном подходе "кадры решают все"

 

 

  31 мая 2015

Существует 2 подхода к разработке веб-проектов

1. Монолитное приложение. Это один сплошной кусок, без разбиения на сервисы. Главный недостаток сложность в маштабировании разработки. Тяжело подключать новых/сторонних разработчиков. Так-же в случае проблемы "ложится" все.

2. Сервис-ориентированная архитектура (SOA). Каждый сервис решает свою задачу. Основной недостаток - наличие оверхеда на  коммуникацию сервисов между собой и на обработку апи между ними. Самый большой плюс - возможность вести распределенную разработку.

Обычно приложение так и эволюционирует, сначала это монолитное приложение, потом идет разбиение по сервисам

просмотров:2197 | комметариев: 0

Оставить комментарий:    

Ваше имя:
 
Текст комментария:
 
+ 1 =