From 4b6be61eea437f105b8f5b68bc4ed05d11a5acb5 Mon Sep 17 00:00:00 2001 From: Andrey Ivanov Date: Mon, 22 Feb 2021 19:01:44 +0300 Subject: [PATCH] =?UTF-8?q?3-=D1=8F=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=884?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B7=D0=B0=D1=87=D1=82=D0=B5=D0=BD=D0=B0.=20?= =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B8=D0=BD=D0=B0=D1=8E=204-=D1=8E.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 +++++--- test/dz001/README.md | 1 + test/dz002/README.md | 3 ++- test/dz002/REPORT.md | 2 +- test/dz003/README.md | 3 ++- test/dz003/REPORT.md | 6 +++--- test/dz004/README.md | 19 +++++++++++++++++++ 7 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 test/dz004/README.md diff --git a/README.md b/README.md index b0223ff..996e02f 100644 --- a/README.md +++ b/README.md @@ -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) (не начата) diff --git a/test/dz001/README.md b/test/dz001/README.md index d13fde1..e84c0db 100644 --- a/test/dz001/README.md +++ b/test/dz001/README.md @@ -1,4 +1,5 @@ #[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9332/) +#[РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/) # Заготовка для социальной сети Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ. diff --git a/test/dz002/README.md b/test/dz002/README.md index 080c577..1e3ac2f 100644 --- a/test/dz002/README.md +++ b/test/dz002/README.md @@ -1,4 +1,5 @@ -#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/): [ОТЧЕТ](REPORT.md) +#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/) +#[ОТЧЕТ](REPORT.md) # Производительность индексов Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности. diff --git a/test/dz002/REPORT.md b/test/dz002/REPORT.md index 0132fd9..7780ed7 100644 --- a/test/dz002/REPORT.md +++ b/test/dz002/REPORT.md @@ -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')`. \ No newline at end of file diff --git a/test/dz003/README.md b/test/dz003/README.md index af76519..8623334 100644 --- a/test/dz003/README.md +++ b/test/dz003/README.md @@ -1,4 +1,5 @@ -#[в процессе](https://otus.ru/learning/61597/#/homework-chat/9334/): [ОТЧЕТ](REPORT.md) +#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9334/) +#[ОТЧЕТ](REPORT.md) #Полусинхронная репликация В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии. diff --git a/test/dz003/REPORT.md b/test/dz003/REPORT.md index 6969d0b..e009890 100644 --- a/test/dz003/REPORT.md +++ b/test/dz003/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 ``` diff --git a/test/dz004/README.md b/test/dz004/README.md new file mode 100644 index 0000000..246208e --- /dev/null +++ b/test/dz004/README.md @@ -0,0 +1,19 @@ +#[В ПРОЦЕССЕ](https://otus.ru/learning/61597/#/homework-chat/9336/) +#[ОТЧЕТ](REPORT.md) +#Лента новостей социальной сети +Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети +### В данном задании тренируются навыки: +- работа с кешами; +- работа с очередями; +- проектирование масштабируемых архитектур. + +Разработать ленту новостей. Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков. Лента формируется на уровне кешей. Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги. В ленте держать последние 1000 обновлений друзей. Лента должна кешироваться. + +ДЗ сдается в виде ссылки на гитлаб и демонстрации работающего проекта, развернутого в интернете. +Критерии оценки: Оценка происходит по принципу зачет/незачет. + +### Требования: +Верно работает инвалидация кеша. +Обновление лент работает через очередь. +Есть возможность перестройки кешей из СУБД. +Рекомендуем сдать до: 17.02.2021 \ No newline at end of file