SlideShare a Scribd company logo
Высоконагруженные  проекты:  
что  нужно  знать,  чтобы  этим  
заниматься
Божко  Светлана,
Adform  BY
Кто  я?
• Scala  Backend  Developer
• Data  Processing  Team
BigData  &  HighLoad
Service-­‐oriented  Architecture  (SOA)  &  
Microservices
• Каждая  часть  отвечает  за  что-­‐то  одно.  Они  разделены.
• Один  упал  -­‐>  продолжаем  работать  без  него.
• Почта.
• Профили.
• Лента.
• Видео.
Функциональная  декомпозиция
Кеширование
• Эффективность  кеша.
• Hit  ratio.
• Какова  вероятность  того,  что  требуемые  данные  попадут  в  кеш?
• Устаревание  и  когерентность  кеша.
Вертикальное  масштабирование
Горизонтальное  масштабирование
• Не  имеющие  ничего  общего  исполнители.
• Выступают  как  единая  сущность.
• Равноправные.
• Не  храним  состояния.
• Нет  общих  узлов.
• Нет  единой  точки  отказа.
Балансировщики  нагрузки
• Domain  Name  System  (DNS).
• Алгоритм  Round  Robin.
• Различные  программные  или  
аппаратные  решения,  а  также  их  
комбинации.
Децентрализованные  распределенные  
системы
• Принцип  «равный  равному»  (peer-­‐to-­‐peer,  P2P).
• Компонентам  системы  не  нужно  знать  об  
общей  структуре  всей  сети.  
• Распространение  информации  внутри  системы  
возможно  по  принципу  «молвы»,  то  есть  
цепного  распространения  через  «соседей».
• BitTorrent.
• Gossip  protocol  (Cassandra).
• Алгоритмы  консенсуса:  Raft,  Paxos,  Byzantine.
• Net  split,  split  brain.
• CAP.
Асинхронность,  очереди  задач
• Множество  задач  не  требует  немедленного  
выполнения  (статистика,  почта,  обновление  
френдленты)
• Парадигма  «подписка/публикация»
• Шина  данных
• Для  выполнения  ресурсоемких/длительных  задач  
(конвертация  фото/видео)
• Независимость  от  ЯП
Шардинг
• Разделение  данных  на  уровне  ресурсов.  
Концепция  шардинга  заключается  в  
логическом  разделении  данных  по  
различным  ресурсам  исходя  из  требований  к  
нагрузке.
• F(key)  =  hash(key)  %  nSrv.
• Виртуальный  шардинг.
• Альтернатива  – центральный  диспетчер,  
который  умеет  разбивать  запросы  
пользователей.
Репликация
• Синхронное/асинхронное  копирование  данных  с  ведущих  
серверов  на  ведомые  (или  возможно  тоже  ведущие)  сервера.  
• Ведущие  сервера  называют мастерами (master),  ведомые  —
слейвами (slave).  
• Введение  избыточности:  NoSql (профили) +  RDBMS  (для  
статистики).
Денормализация  данных
• Какие  данные  нужны  сервису?
• Как  часто  он  будет  их  запрашивать?
• Например,  анкета,  где  малая  часть  полей  показывается  везде.
• Избыточные  данные.
• Например,  разная  логика.  Настолько,  что  таблицы  нужно  по-­‐
разному  оформить.
Партиционирование  таблиц
• Разбиение  больших  таблиц  на  
логические  части  по  выбранным  
критериям.
• Чтение  в  большинстве  случаев  
приходится  только  на  самую  последнюю  
часть  таблиц  (т.е.  активно  читаются  те  
данные,  которые  недавно  появились).
• Блог  — на  первую  страницу  (это  
последние  5…10  постов)  приходится  
40…50%  всей  нагрузки.  Или  новостной,  
или  системы  личных  сообщений.
Потоки  данных
• Параллельное  выполнение.
• Например,  поисковик.  Как  думаете,  сколько  машин  выполняют  
ваш  запрос?
• Дерево  ответственностей. Разделение  чтения  и  записи.  CQRS.
• MapReduce.  
О  чем  думать  при  
проектировании/разработке?
• Бизнес-­‐логика.  Что  может  делать  пользователь/клиент?  Правила  
обработки  информации.
• Что  является  проблемой?  Какие  особенности  движения  данных  
будем  использовать?
• Объем  хранимых  данных.  Скорость  их  прироста.  Соотношение  
чтения/записи.
• Чем  можно  пренебречь?  Допустимая  деградация  системы.
• Не  забыть  сломать  систему! J Load/Crash  Testing
Что  почитать  по  теме?
• http://book.mixu.net/distsys/
Спасибо  за  внимание!  Вопросы!
• Светлана  Божко
• svt.bozhko@gmail.com
• s.bozhko@adform.com
• @SBozhko
• http://devzen.ru/

More Related Content

What's hot

Брокер сообщений Kafka в условиях повышенной нагрузки
Брокер сообщений Kafka в условиях повышенной нагрузкиБрокер сообщений Kafka в условиях повышенной нагрузки
Брокер сообщений Kafka в условиях повышенной нагрузки
Artyom Vybornov
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
aragozin
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
Roman Zykov
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
Ontico
 
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио..."PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
Badoo Development
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Fuenteovejuna
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Ontico
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XML
colriot
 
Новая почта Рамблера (Андрей Шетухин)
Новая почта Рамблера (Андрей Шетухин)Новая почта Рамблера (Андрей Шетухин)
Новая почта Рамблера (Андрей Шетухин)
Ontico
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
aragozin
 

What's hot (20)

Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...Андрей Кондрашов, Банк Москвы.  «АБС в крупном Банке. Тестирование PostgreSQL...
Андрей Кондрашов, Банк Москвы. «АБС в крупном Банке. Тестирование PostgreSQL...
 
Брокер сообщений Kafka в условиях повышенной нагрузки
Брокер сообщений Kafka в условиях повышенной нагрузкиБрокер сообщений Kafka в условиях повышенной нагрузки
Брокер сообщений Kafka в условиях повышенной нагрузки
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
Электронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark ScalaЭлектронная коммерция: от Hadoop к Spark Scala
Электронная коммерция: от Hadoop к Spark Scala
 
Aлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreetAлександр Зайцев, LifeStreet
Aлександр Зайцев, LifeStreet
 
Metadata.js
Metadata.jsMetadata.js
Metadata.js
 
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио..."PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
"PostgreSQL для разработчиков приложений", Павел Лузанов, (Постгрес Профессио...
 
SQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбораSQL vs NoSQL: 
проблема выбора
SQL vs NoSQL: 
проблема выбора
 
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл КоринскийСравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
Сравнительный анализ хранилищ данных, Олег Царев, Кирилл Коринский
 
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
Аналитическая инфраструктура оптимизации рекламной сети (Александр Зайцев)
 
Моделирование для NoSQL БД
Моделирование для NoSQL БДМоделирование для NoSQL БД
Моделирование для NoSQL БД
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
NewSQL: SQL никуда не уходит / Константин Осипов (tarantool.org)
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
Java. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XMLJava. Lecture 07. Advanced XML
Java. Lecture 07. Advanced XML
 
Новая почта Рамблера (Андрей Шетухин)
Новая почта Рамблера (Андрей Шетухин)Новая почта Рамблера (Андрей Шетухин)
Новая почта Рамблера (Андрей Шетухин)
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Блеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшейБлеск и нищета распределённых кэшей
Блеск и нищета распределённых кэшей
 

Viewers also liked

Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)
Mikhail Kurnosov
 
Демонизированный PHP - before it was cool
Демонизированный PHP - before it was coolДемонизированный PHP - before it was cool
Демонизированный PHP - before it was cool
Andrey Tokarchuk
 

Viewers also liked (7)

Алексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHPАлексей Иванкин: Highload + PHP
Алексей Иванкин: Highload + PHP
 
PHP Anamnes 2015
PHP Anamnes 2015PHP Anamnes 2015
PHP Anamnes 2015
 
UFADevCom'13#1 Шерыхалин Олег
UFADevCom'13#1 Шерыхалин ОлегUFADevCom'13#1 Шерыхалин Олег
UFADevCom'13#1 Шерыхалин Олег
 
High load для начинающих
High load для начинающихHigh load для начинающих
High load для начинающих
 
Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)Лекция 5: B-деревья (B-trees, k-way merge sort)
Лекция 5: B-деревья (B-trees, k-way merge sort)
 
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
 
Демонизированный PHP - before it was cool
Демонизированный PHP - before it was coolДемонизированный PHP - before it was cool
Демонизированный PHP - before it was cool
 

Similar to HighLoad systems: tips & tricks

Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Ontico
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
Alex Chistyakov
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Ontico
 
Rybak Big Projects New
Rybak Big Projects NewRybak Big Projects New
Rybak Big Projects New
Ontico
 
Реализация нагруженных и отказоустойчивых систем
Реализация нагруженных и отказоустойчивых системРеализация нагруженных и отказоустойчивых систем
Реализация нагруженных и отказоустойчивых систем
Ruslan Safin
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Oleg Tsarev
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ru
odnoklassniki.ru
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
drupalconf
 

Similar to HighLoad systems: tips & tricks (20)

Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
разработка бизнес приложений (9)
разработка бизнес приложений (9)разработка бизнес приложений (9)
разработка бизнес приложений (9)
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
 
Практика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopПрактика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему Hadoop
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
Maksym Bezuglyi "Universal highload patterns on a specific example of a game ...
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Scaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 RusScaling Web Sites By Sharding And Replication Hl2008 Rus
Scaling Web Sites By Sharding And Replication Hl2008 Rus
 
Rybak Big Projects New
Rybak Big Projects NewRybak Big Projects New
Rybak Big Projects New
 
Open source субд глазами обычного программиста
Open source субд глазами обычного программистаOpen source субд глазами обычного программиста
Open source субд глазами обычного программиста
 
Реализация нагруженных и отказоустойчивых систем
Реализация нагруженных и отказоустойчивых системРеализация нагруженных и отказоустойчивых систем
Реализация нагруженных и отказоустойчивых систем
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
 
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере ResharperCodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
CodeFest 2013. Скрыган К. — Оптимизация .Net приложений на примере Resharper
 
Cистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ruCистема внутренней статистики Odnoklassniki.ru
Cистема внутренней статистики Odnoklassniki.ru
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
Реляционные базы данных
Реляционные базы данныхРеляционные базы данных
Реляционные базы данных
 

HighLoad systems: tips & tricks

  • 1. Высоконагруженные  проекты:   что  нужно  знать,  чтобы  этим   заниматься Божко  Светлана, Adform  BY
  • 2. Кто  я? • Scala  Backend  Developer • Data  Processing  Team
  • 4. Service-­‐oriented  Architecture  (SOA)  &   Microservices • Каждая  часть  отвечает  за  что-­‐то  одно.  Они  разделены. • Один  упал  -­‐>  продолжаем  работать  без  него. • Почта. • Профили. • Лента. • Видео.
  • 6. Кеширование • Эффективность  кеша. • Hit  ratio. • Какова  вероятность  того,  что  требуемые  данные  попадут  в  кеш? • Устаревание  и  когерентность  кеша.
  • 8. Горизонтальное  масштабирование • Не  имеющие  ничего  общего  исполнители. • Выступают  как  единая  сущность. • Равноправные. • Не  храним  состояния. • Нет  общих  узлов. • Нет  единой  точки  отказа.
  • 9. Балансировщики  нагрузки • Domain  Name  System  (DNS). • Алгоритм  Round  Robin. • Различные  программные  или   аппаратные  решения,  а  также  их   комбинации.
  • 10. Децентрализованные  распределенные   системы • Принцип  «равный  равному»  (peer-­‐to-­‐peer,  P2P). • Компонентам  системы  не  нужно  знать  об   общей  структуре  всей  сети.   • Распространение  информации  внутри  системы   возможно  по  принципу  «молвы»,  то  есть   цепного  распространения  через  «соседей». • BitTorrent. • Gossip  protocol  (Cassandra). • Алгоритмы  консенсуса:  Raft,  Paxos,  Byzantine. • Net  split,  split  brain. • CAP.
  • 11. Асинхронность,  очереди  задач • Множество  задач  не  требует  немедленного   выполнения  (статистика,  почта,  обновление   френдленты) • Парадигма  «подписка/публикация» • Шина  данных • Для  выполнения  ресурсоемких/длительных  задач   (конвертация  фото/видео) • Независимость  от  ЯП
  • 12. Шардинг • Разделение  данных  на  уровне  ресурсов.   Концепция  шардинга  заключается  в   логическом  разделении  данных  по   различным  ресурсам  исходя  из  требований  к   нагрузке. • F(key)  =  hash(key)  %  nSrv. • Виртуальный  шардинг. • Альтернатива  – центральный  диспетчер,   который  умеет  разбивать  запросы   пользователей.
  • 13. Репликация • Синхронное/асинхронное  копирование  данных  с  ведущих   серверов  на  ведомые  (или  возможно  тоже  ведущие)  сервера.   • Ведущие  сервера  называют мастерами (master),  ведомые  — слейвами (slave).   • Введение  избыточности:  NoSql (профили) +  RDBMS  (для   статистики).
  • 14. Денормализация  данных • Какие  данные  нужны  сервису? • Как  часто  он  будет  их  запрашивать? • Например,  анкета,  где  малая  часть  полей  показывается  везде. • Избыточные  данные. • Например,  разная  логика.  Настолько,  что  таблицы  нужно  по-­‐ разному  оформить.
  • 15. Партиционирование  таблиц • Разбиение  больших  таблиц  на   логические  части  по  выбранным   критериям. • Чтение  в  большинстве  случаев   приходится  только  на  самую  последнюю   часть  таблиц  (т.е.  активно  читаются  те   данные,  которые  недавно  появились). • Блог  — на  первую  страницу  (это   последние  5…10  постов)  приходится   40…50%  всей  нагрузки.  Или  новостной,   или  системы  личных  сообщений.
  • 16. Потоки  данных • Параллельное  выполнение. • Например,  поисковик.  Как  думаете,  сколько  машин  выполняют   ваш  запрос? • Дерево  ответственностей. Разделение  чтения  и  записи.  CQRS. • MapReduce.  
  • 17. О  чем  думать  при   проектировании/разработке? • Бизнес-­‐логика.  Что  может  делать  пользователь/клиент?  Правила   обработки  информации. • Что  является  проблемой?  Какие  особенности  движения  данных   будем  использовать? • Объем  хранимых  данных.  Скорость  их  прироста.  Соотношение   чтения/записи. • Чем  можно  пренебречь?  Допустимая  деградация  системы. • Не  забыть  сломать  систему! J Load/Crash  Testing
  • 18. Что  почитать  по  теме? • http://book.mixu.net/distsys/
  • 19. Спасибо  за  внимание!  Вопросы! • Светлана  Божко • svt.bozhko@gmail.com • s.bozhko@adform.com • @SBozhko • http://devzen.ru/