3-я домаш4ка зачтена. Начинаю 4-ю.
parent
c399664b4c
commit
4b6be61eea
|
@ -1,12 +1,14 @@
|
|||
## Домашние задания по курсу
|
||||
### [01. Заготовка для социальной сети](test/dz001/README.md) (ЗАЧЕТ)
|
||||
### [02. Производительность индексов](test/dz002/README.md) (ЗАЧЕТ)
|
||||
### [03. Полусинхронная репликация](test/dz003/README.md) (ЗАЧЕТ)
|
||||
|
||||
-----
|
||||
|
||||
### [04. Лента новостей социальной сети](test/dz004/README.md) (в процессе)
|
||||
|
||||
-----
|
||||
### [03. Полусинхронная репликация](test/dz003/README.md) (в процессе)
|
||||
|
||||
---
|
||||
### [04. Лента новостей социальной сети](test/dz004/README.md) (не начата)
|
||||
### [05. Репликация из MySQL в tarantool](test/dz005/README.md) (не начата)
|
||||
### [06. Масштабируемая подсистема диалогов](test/dz006/README.md) (не начата)
|
||||
### [07. Онлайн обновление ленты новостей](test/dz007/README.md) (не начата)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9332/)
|
||||
#[РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/)
|
||||
# Заготовка для социальной сети
|
||||
Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ.
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/): [ОТЧЕТ](REPORT.md)
|
||||
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/)
|
||||
#[ОТЧЕТ](REPORT.md)
|
||||
# Производительность индексов
|
||||
Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности.
|
||||
|
||||
|
|
|
@ -40,5 +40,5 @@
|
|||
ORDER BY id
|
||||
```
|
||||

|
||||
#### 4. РезюмеЖ
|
||||
#### 4. Резюме
|
||||
Для конечной оптимизации используется составной индекс `('Surname', 'Name')` потому, что в запросе используется объединение AND условий LIKE ?%. Mysql в этом случае ищет по составному индексу и объединяет строки без сортировки. Именно поэтому, приходится принудительно сортировать результаты. Порядок полей выбран с точки зрения селективности. В реальной обстановке поле «Фамилия» все же более селективно чем «Имя». Плюс к этому, мы видим в EXPLAIN запроса, что в случае использования индекса `('Surname', 'Name')` mysql применяет Multi-Range Read оптимизацию, позволяющую линеаризовать процедуру чтения с диска. Возможно за этот счет значительно повысилась скорость передачи данных? по сравнению с индексом `('Name', 'Surname')`.
|
|
@ -1,4 +1,5 @@
|
|||
#[в процессе](https://otus.ru/learning/61597/#/homework-chat/9334/): [ОТЧЕТ](REPORT.md)
|
||||
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9334/)
|
||||
#[ОТЧЕТ](REPORT.md)
|
||||
#Полусинхронная репликация
|
||||
|
||||
В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии.
|
||||
|
|
|
@ -147,13 +147,13 @@ binlog_do_db = app
|
|||
enforce-gtid-consistency=true
|
||||
binlog-rows-query-log_events=1
|
||||
```
|
||||
### 8. Настроить полусинхронную репликацию.
|
||||
- #### Включаем динамическую загрузку модулей и полусинхронную репликацию с таймаутом 1с в my.cnf на мастере:
|
||||
### 8. Настроить полу синхронную репликацию.
|
||||
- #### Включаем динамическую загрузку модулей и полу синхронную репликацию с таймаутом 1с в my.cnf на мастере:
|
||||
```
|
||||
loose-rpl_semi_sync_master_enabled=1
|
||||
loose-rpl_semi_sync_master_timeout=1000
|
||||
```
|
||||
- #### Включаем динамическую загрузку модулей и полусинхронную репликацию в my.cnf на обоих слейвах:
|
||||
- #### Включаем динамическую загрузку модулей и полу синхронную репликацию в my.cnf на обоих слейвах:
|
||||
```
|
||||
loose-rpl_semi_sync_slave_enabled=1
|
||||
```
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
#[В ПРОЦЕССЕ](https://otus.ru/learning/61597/#/homework-chat/9336/)
|
||||
#[ОТЧЕТ](REPORT.md)
|
||||
#Лента новостей социальной сети
|
||||
Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
|
||||
### В данном задании тренируются навыки:
|
||||
- работа с кешами;
|
||||
- работа с очередями;
|
||||
- проектирование масштабируемых архитектур.
|
||||
|
||||
Разработать ленту новостей. Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков. Лента формируется на уровне кешей. Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги. В ленте держать последние 1000 обновлений друзей. Лента должна кешироваться.
|
||||
|
||||
ДЗ сдается в виде ссылки на гитлаб и демонстрации работающего проекта, развернутого в интернете.
|
||||
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||
|
||||
### Требования:
|
||||
Верно работает инвалидация кеша.
|
||||
Обновление лент работает через очередь.
|
||||
Есть возможность перестройки кешей из СУБД.
|
||||
Рекомендуем сдать до: 17.02.2021
|
Loading…
Reference in New Issue