Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Ontico
HighLoad++ 2017
Зал «Москва», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2880.html
Поисковая выдача Яндекса (СЕРП) - сложное многофункциональное веб-приложение с высокими требованиями к скорости загрузки. По ряду причин мобильный веб медленнее десктопа: ограничения по CPU/памяти в телефонах, нестабильность мобильных сетей.
В докладе расскажем, как с учётом этих особенностей, мы ускоряем мобильный СЕРП.
Почта в интернет-проекте: инфраструктура, статистика, мониторингAndrey Sas
- Общие рекомендации по проектированию и настройки почтовой инфраструктуры.
Как выбрать почтовый сервер, как правильно делегировать почтовый домен, на что обращают внимания ведущие почтовые сервисы при приёме писем.
- Зачем нужна почтовая статистика?
В большинстве интернет-проектов на почтовую статистику не обращают особого внимания. Отсутствие почтовой статистики не дает возможности объективно оценивать почтовый канал возврата трафика на сайт, привлечение новых пользователей и т. д.
- Как сделать систему почтовой статистики при трафике в десятки миллионов писем в день?
При большом потоке писем сбор почтовой статистики (как и отправка такого количества писем) превращается в высоконагруженный сервис, требующий определенных подходов к проектированию и агрегации данных.
- Какие параметры важны для почтовой статистики?
Стоит упомянуть о том, какие параметры являются обязательными в почтовой статистике, как правильно их измерять, как анализировать почтовый лог MTA. Нужно иметь представление и о том, какие параметры, вероятно, стоит добавить в почтовую статистику в зависимости от бизнес-логики проекта.
- Как правильно анализировать собранные данные?
Как правильно делать выводы о том, насколько хорошо работают письма в системе. Посмотрим, на что в первую очередь стоит обращать внимание при подготовке и проведении массовых почтовых рассылок.
- Как локализовать проблемы с письмами?
Как правильно применять систему фильтров в статистике в зависимости от бизнес-логики проекта? Какие панели мониторинга (dashboards) являются наиболее удачными и репрезентативными?
- Мониторинг: как делать большие почтовые рассылки и спать спокойно.
Какие показатели и их пороговые значения являются критичными при проведении рассылок? Важная дифференциация: на что необходимо обращать внимание в 3 часа ночи, а что может подождать до утра.
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Ontico
HighLoad++ 2017
Зал «Москва», 8 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2880.html
Поисковая выдача Яндекса (СЕРП) - сложное многофункциональное веб-приложение с высокими требованиями к скорости загрузки. По ряду причин мобильный веб медленнее десктопа: ограничения по CPU/памяти в телефонах, нестабильность мобильных сетей.
В докладе расскажем, как с учётом этих особенностей, мы ускоряем мобильный СЕРП.
Почта в интернет-проекте: инфраструктура, статистика, мониторингAndrey Sas
- Общие рекомендации по проектированию и настройки почтовой инфраструктуры.
Как выбрать почтовый сервер, как правильно делегировать почтовый домен, на что обращают внимания ведущие почтовые сервисы при приёме писем.
- Зачем нужна почтовая статистика?
В большинстве интернет-проектов на почтовую статистику не обращают особого внимания. Отсутствие почтовой статистики не дает возможности объективно оценивать почтовый канал возврата трафика на сайт, привлечение новых пользователей и т. д.
- Как сделать систему почтовой статистики при трафике в десятки миллионов писем в день?
При большом потоке писем сбор почтовой статистики (как и отправка такого количества писем) превращается в высоконагруженный сервис, требующий определенных подходов к проектированию и агрегации данных.
- Какие параметры важны для почтовой статистики?
Стоит упомянуть о том, какие параметры являются обязательными в почтовой статистике, как правильно их измерять, как анализировать почтовый лог MTA. Нужно иметь представление и о том, какие параметры, вероятно, стоит добавить в почтовую статистику в зависимости от бизнес-логики проекта.
- Как правильно анализировать собранные данные?
Как правильно делать выводы о том, насколько хорошо работают письма в системе. Посмотрим, на что в первую очередь стоит обращать внимание при подготовке и проведении массовых почтовых рассылок.
- Как локализовать проблемы с письмами?
Как правильно применять систему фильтров в статистике в зависимости от бизнес-логики проекта? Какие панели мониторинга (dashboards) являются наиболее удачными и репрезентативными?
- Мониторинг: как делать большие почтовые рассылки и спать спокойно.
Какие показатели и их пороговые значения являются критичными при проведении рассылок? Важная дифференциация: на что необходимо обращать внимание в 3 часа ночи, а что может подождать до утра.
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровняAndrey Sozykin
Презентация лекции. "Управляющие протоколы сетевого уровня".
План лекции:
Место управляющих протоколов в моделях OSI и TCP/IP
Internet Control Message Protocol (ICMP)
Address Resolution Protocol (ARP)
Dynamic Host Configuration Protocol (DHCP)
Презентация к магистерской диссертации на тему: "Разработка метода управления сетью роботов", 2015 год.
В результате:
- разработан метод управления сетью роботов требующий минимальных затрат энергии;
- разработана имитационная модель сети роботов;
- проведено имитационное моделирование сети роботов;
- выполнено исследование энергозатрат, связанное с передачей данных между участниками сети.
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 3. Распределённая файловая система HDFSTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 1. Введение в Big Data и MapReduceTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №8 "Конфигурирование базы данных". Лектор - Павел Щербинин.
Сначала объясняются основы конфигурирования и общие принципы настройки. Далее рассказывается об области видимости, о настройке использования памяти, обсуждается размер блока ключей key_cache_block_size. Рассматривается устройство и использование кэша InnoDB, а также кэшей потоков и таблиц. Затем говорится об особенностях ввода/вывода в InnoDB. Далее рассказывается о табличном пространстве, оптимизации файловой сортировки, переменных состояния. Финальная часть лекции посвящена репликации: настройка, синхронизация, топология, планирование пропускной способности, администрирование и обслуживание, проблемы и их решения.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №5 "Определение узких мест". Лектор - Павел Щербинин.
Вначале рассказывается о подсистемах хранения: MyISAM, InnoDB, Memory, о критериях выбора подсистем хранения, приводятся практические примеры. Затем обсуждается тема индексирования (B-tree, хеш-индексы) и EXPLAIN (столбцы id, table, possible_keys, key, key_len).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
3. История Email
1965 – программа mail для CTSS, пересылка в
пределах мейнфрейма
1971 – первый email в сети ARPANET
1978 – программа uucp для обмена Email в UNIX
1982 – предложен протокол SMTP (RFC 821) и
формат интернет сообщений (RFC 822)
1984 – FidoNET
190x – Развитие локальной почты, Microsoft
Mail, IBM Lotus Notes
1998 – Mail.Ru
2004 – Gmail
4. Формат электронного письма
From: Dmitry Smal <smal@corp.mail.ru>
To: Pupkin <v.pupkin@gmail.com>
Subject: party for everybody discuss
Date: Fri, 18 May 2012 08:17:59 -0700
Hi there!
Can't stop dancing! And you?
Bye bye!
5. Заголовки Email
From, To – от кого и кому письмо
Subject – тема письма
Date – дата отправки
Message-ID – уникальный идентификатор письма
References – id письма на которое отвечаем
Сс – “копия”, аналогичен To, но означает, что
получатель – не главный
Bcc – “скрытая копия”, аналогиче Сс, но
получатели не увидят email указанный в Bcc
Reply-To – email адрес, на который нужно
отвечать
Content-Type – MIME тип содержимого
6. Содержимое письма
Первоначальная кодировка – 7bit ASCII
Как передать что-то большее ?
1) Quoted printable =EA =0C
2) Base64 YW55IGNhcm5hbCBwbGVhcw==
Современные почтовые агенты поддерживают 8bit
Content-Type: text/plain; charset=utf-8
7. MIME
Multipurpose Internet Message Extensions
Задачи
1) Передача не-ASCII текста через ASCII канал
2) Передача не-текстовых приложений
3) Передача сообщений из нескольких частей
(multipart body messages)
4) Передача не-ASCII заголовков
Заголовки
Content-ID – уникальный ID части, для ссылок
Content-Type – MIME тип сообщения или части
Content-Disposition – расположение части
Content-Transfer-Encoding – кодирование части
9. Цепочки писем
У письма есть идентификатор (почти уникальный):
Message-ID: <19951223543.3034.qmail@gmail.com>
При ответе на сообщение агент добавляет
MessageID исходного письма в References
References: <A> <B> <C>
Таким образом: A → B → C → текущее письмо
Обычно в Subject письма добавляется Re:
> А содержимое исходного письма
> отбивается символами “больше”
10. Процесс передачи Email
MUA – Mail User Agent – программа,
предоставляющая пользовательский интерфейс,
например MS Outlook, sendmail
MTA – Mail Transfer Agent (relay) – программа
(почтовый сервер), отвечающая за пересылку
почты к по сети. SMTP протокол.
MDA – Mail Delivery Agent – программа,
отвечающая за доставку почты конечному
пользователю. POP3 и IMAP
11.
12. SMTP – отправка почты
Simple Mail Transfer Protocol
1) Работает поверх TCP, порт 25
2) Текстовый протокол
Команды: MAIL FROM, RCPT TO, DATA, QUIT
Статусы ответа: 2xx – команды выполнена
3xx – ожидаются доп. данные
4xx – временная ошибка
5xx – неисправимая ошибка
3) ESMTP – набор расширений для SMTP:
TLS, Авторизация, Pipelining
13. C:HELO
S:250 domain name should be qualified
C:MAIL FROM: <someusername@somecompany.ru>
S:250 someusername@somecompany.ru sender accepted
C:RCPT TO:<user1@company.tld>
S:250 user1@company.tld ok
C:DATA
S:354 Enter mail, end with "." on a line by itself
C:from: someusername@somecompany.ru
C:to: user1@company.tld
C:subject: tema
C:
C:Hi!
C:.
S:250 769947 message accepted for delivery
C:QUIT
14. Отправка писем из python
import smtplib
from email.MIMEText import MIMEText
text = 'Тестовое письмо!nОтправка письма из python'
msg = MIMEText(text, "", "utf-8")
msg['Subject'] = 'Тестовое письмо'
msg['From'] = 'support.tonics@gmail.com'
msg['To'] = 'destination@mail.ru'
s = smtplib.SMTP('smtp.gmail.com', 25)
s.ehlo()
s.starttls()
s.ehlo()
s.login("support.tonics@gmail.com", "password")
s.sendmail('support.tonics@gmail.com', 'destination@mail.ru',
msg.as_string())
s.quit()
15. Хранение и получение почты
1) Изначально планировалось хранить почту на
компьютере пользователя. Relay – только
временное хранилище.
POP3 – протокол получения почты из
почтового ящика.
2) Однако у хранения почты на отдельном
сервере есть преимущества – надежность,
доступность.
IMAP – протокол доступа к содержимому
почтового ящика.
16. POP3 – получение почты
Post Office Protocol
1) Работает поверх TCP, порт 110
2) Текстовый протокол
APOP – авторизация (в зашифрованом виде)
USER, PASS – авторизация в открытом виде
LIST – получение списка сообщений
RETR – получение одного сообщения
DELE – удаление сообщения с ящика
QUIT – выход
3) “Транзакции” - письма удаляются только при
отключении клиента
4) Опциональная поддержка шифрования TLS
18. Почему текстовые протоколы?
1) Не нужно специальных программ – достаточно
простого текстового редактора
2) Не нужно средств отладки – протокол можно
отлаживать просто просматривая его
3) Не нужно специальных клиентов – вы можете
использовать HTTP, SMTP, POP3 с помощью
telnet
4) Переносимость
22. PGP – Pretty Good Privacy
OpenPGP – стандарт, выросший из PGP
PGP, GnuPG, FileCrypt – реализации стандарта,
программное обеспечение, позволяющее шифровать
и подписывать email и даже диски!
Основа PGP – сеть доверия, схема похажая на
иерархию центров сертификации, но у
пользователя есть возможность самому выбрать
какому сертификату он доверяет.
Уровень 0 – сертификат, которому вы доверяете
Уровень 1 – вы доверяете тем, кому доверяет
обладатель данного сертификата
Уровень 2 – фактически равносилен встроенному
23. Как это выглядит в Email ?
From: Dmitry Smal <mialinx@gmail.com>
To: mialinx@gmail.com
Subject: GPG test
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
-----BEGIN PGP MESSAGE-----
Charset: ISO-8859-1
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
hQEMA8ijKqZcm8oeAQf/dcpkWwglHLN4A
. . .
mRunewtvjjTj3pLfjPkuZaEzIQU=3D
=3DHHsM
-----END PGP MESSAGE-----
24.
25. Как бороться со спамом?
- Фильтрация (байесовский фильтр) – 95%
эффективность, требует обучения
- Ручная фильтрация
- Крупные компании содержат отделы аналитиков
- Blacklist – списки IP адресов с которых
идет спам
Причина спама – SMTP не проверяет отправителя
- Проверка обратной зоны DNS
- Отказ от открытых релеев, авторизация SMTP
- SPF записи в DNS
26. SPF – Sender Policy Framework
Допустим есть домен company.com
В DNS делается запись вида:
company.com. IN TXT "v=spf1 +a +mx -all"
Либо, например
company.com. IN TXT "v=spf1 ip4:192.168.0.1/16
-all"
Это ограничивает адреса SMTP серверов company.com
Теперь принимающий SMTP сервер, получив запрос на
отправку письма от имени user@company.com с ip
адреса x.y.z.w, может сделать запрос к DNS и
определить имеет ли данный хост права на отправку
почты из указанного домена
27. DKIM
Как не стать спамером ?
1) Создается пара - публичный/закрытый ключ
2) Публичный ключ для домена помещается в DNS:
_domainkey.example.com. TXT "t=s; o=~;"
mail._domainkey.example.com. TXT
"k=rsa; t=s; p={PUBLIC_KEY_CONTENT}"
3) SMTP сервер вашего домена подписывает
каждое отправленное письмо с помощью
закрытого ключа, добавляя к письмам
заголовок DKIM-Signature
4) Принимающий SMTP сервер получает открытый
ключ из DNS и проверяет подпись