3-я домаш4ка зачтена. Начинаю 4-ю.

main
Andrey Ivanov 2021-02-22 19:01:44 +03:00 committed by ya@tiburon.su
parent c399664b4c
commit 4b6be61eea
7 changed files with 33 additions and 9 deletions

View File

@ -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) (не начата)

View File

@ -1,4 +1,5 @@
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9332/)
#[РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/)
# Заготовка для социальной сети
Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ.

View File

@ -1,4 +1,5 @@
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/): [ОТЧЕТ](REPORT.md)
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/)
#[ОТЧЕТ](REPORT.md)
# Производительность индексов
Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности.

View File

@ -40,5 +40,5 @@
ORDER BY id
```
![mountains](img/explain2.jpg "Explain запроса с обратным индексом")
#### 4. РезюмеЖ
#### 4. Резюме
Для конечной оптимизации используется составной индекс `('Surname', 'Name')` потому, что в запросе используется объединение AND условий LIKE ?%. Mysql в этом случае ищет по составному индексу и объединяет строки без сортировки. Именно поэтому, приходится принудительно сортировать результаты. Порядок полей выбран с точки зрения селективности. В реальной обстановке поле «Фамилия» все же более селективно чем «Имя». Плюс к этому, мы видим в EXPLAIN запроса, что в случае использования индекса `('Surname', 'Name')` mysql применяет Multi-Range Read оптимизацию, позволяющую линеаризовать процедуру чтения с диска. Возможно за этот счет значительно повысилась скорость передачи данных? по сравнению с индексом `('Name', 'Surname')`.

View File

@ -1,4 +1,5 @@
#[в процессе](https://otus.ru/learning/61597/#/homework-chat/9334/): [ОТЧЕТ](REPORT.md)
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9334/)
#[ОТЧЕТ](REPORT.md)
#Полусинхронная репликация
В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии.

View File

@ -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
```

19
test/dz004/README.md Normal file
View File

@ -0,0 +1,19 @@
#[В ПРОЦЕССЕ](https://otus.ru/learning/61597/#/homework-chat/9336/)
#[ОТЧЕТ](REPORT.md)
#Лента новостей социальной сети
Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
### В данном задании тренируются навыки:
- работа с кешами;
- работа с очередями;
- проектирование масштабируемых архитектур.
Разработать ленту новостей. Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков. Лента формируется на уровне кешей. Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги. В ленте держать последние 1000 обновлений друзей. Лента должна кешироваться.
ДЗ сдается в виде ссылки на гитлаб и демонстрации работающего проекта, развернутого в интернете.
Критерии оценки: Оценка происходит по принципу зачет/незачет.
### Требования:
Верно работает инвалидация кеша.
Обновление лент работает через очередь.
Есть возможность перестройки кешей из СУБД.
Рекомендуем сдать до: 17.02.2021