Submit Search
Upload
Onliner PHP Meetup
•
0 likes
•
282 views
A
Alexander Mohorev
Follow
Архитектура масштабируемого Real-time мессенджера
Read less
Read more
Software
Report
Share
Report
Share
1 of 96
Download now
Download to read offline
Recommended
Authentication security
Authentication security
Olga Lavrentieva
Безопасность интернет-приложений осень 2013 лекция 9
Безопасность интернет-приложений осень 2013 лекция 9
Technopark
Seo 2016
Seo 2016
sslash65
Скорость работы интернет магазина
Скорость работы интернет магазина
Тарасов Константин
MongoDB basics in Russian
MongoDB basics in Russian
Oleg Kachan
Web весна 2012 лекция 11
Web весна 2012 лекция 11
Technopark
Иван Бибилов: http-протокол
Иван Бибилов: http-протокол
Yandex
Кратко о MongoDB
Кратко о MongoDB
Gleb Lebedev
Recommended
Authentication security
Authentication security
Olga Lavrentieva
Безопасность интернет-приложений осень 2013 лекция 9
Безопасность интернет-приложений осень 2013 лекция 9
Technopark
Seo 2016
Seo 2016
sslash65
Скорость работы интернет магазина
Скорость работы интернет магазина
Тарасов Константин
MongoDB basics in Russian
MongoDB basics in Russian
Oleg Kachan
Web весна 2012 лекция 11
Web весна 2012 лекция 11
Technopark
Иван Бибилов: http-протокол
Иван Бибилов: http-протокол
Yandex
Кратко о MongoDB
Кратко о MongoDB
Gleb Lebedev
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
Alexey Tokar
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Andrew Mayorov
Сессии и авторизация
Сессии и авторизация
Noveo
Major mistakes in site moving
Major mistakes in site moving
Транслируем.бел
MongoDB первые впечатления
MongoDB первые впечатления
fudz1k
хостинг
хостинг
tufelka
Информационная безопасность и web-приложения
Информационная безопасность и web-приложения
Maxim Krentovskiy
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
phpdevby
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days
Новое в Mongodb 2.4
Новое в Mongodb 2.4
Gleb Lebedev
Как банки обеспечивают свою безопасность
Как банки обеспечивают свою безопасность
Andrey Apuhtin
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
Tim Mironov
How to debug
How to debug
Vsevolod Solovyov
Ihor Bliumental - Collision CORS
Ihor Bliumental - Collision CORS
OWASP Kyiv
Ihor Bliumental – Is There Life Outside OWASP Top-10
Ihor Bliumental – Is There Life Outside OWASP Top-10
OWASP Kyiv
Attacking MongoDB
Attacking MongoDB
Михаил Фирстов
SEO-Friendly Websites
SEO-Friendly Websites
Elkaakle
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Глеб Тарасов
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Ontico
Нижегородский рынок хостинга. А.Чекин.
Нижегородский рынок хостинга. А.Чекин.
Clouds NN
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
More Related Content
What's hot
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
Alexey Tokar
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Andrew Mayorov
Сессии и авторизация
Сессии и авторизация
Noveo
Major mistakes in site moving
Major mistakes in site moving
Транслируем.бел
MongoDB первые впечатления
MongoDB первые впечатления
fudz1k
хостинг
хостинг
tufelka
Информационная безопасность и web-приложения
Информационная безопасность и web-приложения
Maxim Krentovskiy
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
phpdevby
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days
Новое в Mongodb 2.4
Новое в Mongodb 2.4
Gleb Lebedev
Как банки обеспечивают свою безопасность
Как банки обеспечивают свою безопасность
Andrey Apuhtin
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
HOWWEDOIT
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
Tim Mironov
How to debug
How to debug
Vsevolod Solovyov
Ihor Bliumental - Collision CORS
Ihor Bliumental - Collision CORS
OWASP Kyiv
Ihor Bliumental – Is There Life Outside OWASP Top-10
Ihor Bliumental – Is There Life Outside OWASP Top-10
OWASP Kyiv
Attacking MongoDB
Attacking MongoDB
Михаил Фирстов
SEO-Friendly Websites
SEO-Friendly Websites
Elkaakle
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Глеб Тарасов
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Ontico
What's hot
(20)
MongoDB в продакшен - миф или реальность?
MongoDB в продакшен - миф или реальность?
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
Сессии и авторизация
Сессии и авторизация
Major mistakes in site moving
Major mistakes in site moving
MongoDB первые впечатления
MongoDB первые впечатления
хостинг
хостинг
Информационная безопасность и web-приложения
Информационная безопасность и web-приложения
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Positive Hack Days. Баранов. DNS Rebinding возвращается (0-day)
Новое в Mongodb 2.4
Новое в Mongodb 2.4
Как банки обеспечивают свою безопасность
Как банки обеспечивают свою безопасность
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
How to debug
How to debug
Ihor Bliumental - Collision CORS
Ihor Bliumental - Collision CORS
Ihor Bliumental – Is There Life Outside OWASP Top-10
Ihor Bliumental – Is There Life Outside OWASP Top-10
Attacking MongoDB
Attacking MongoDB
SEO-Friendly Websites
SEO-Friendly Websites
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Курсы по мобильной разработке под iOS. 5 лекция. Работа с данными
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Application Security - ответы на ежедневные вопросы / Сергей Белов (Mail.Ru G...
Similar to Onliner PHP Meetup
Нижегородский рынок хостинга. А.Чекин.
Нижегородский рынок хостинга. А.Чекин.
Clouds NN
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Ontico
Архитектура Apache HAWQ Highload++ 2015
Архитектура Apache HAWQ Highload++ 2015
Alexey Grishchenko
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
живые сайты
живые сайты
zexzex
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузки
Tech Talks @NSU
ITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
EYevseyeva
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Ontico
Денис Иванов
Денис Иванов
CodeFest
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
Андрей Фролов
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Ontico
Clickhouse
Clickhouse
Clickky
Zabbix в сервисной компании ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании ОНЛАНТА - Zabbix Meetup Moscow
Vadim Nesterov
Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015
rusbase
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
Media Gorod
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
it-people
Financial Chain Corporation LLC. Александр Тварадзе. "Регистрация взлома. Как...
Financial Chain Corporation LLC. Александр Тварадзе. "Регистрация взлома. Как...
Expolink
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
Ontico
Similar to Onliner PHP Meetup
(20)
Нижегородский рынок хостинга. А.Чекин.
Нижегородский рынок хостинга. А.Чекин.
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура HAWQ / Алексей Грищенко (Pivotal)
Архитектура Apache HAWQ Highload++ 2015
Архитектура Apache HAWQ Highload++ 2015
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
живые сайты
живые сайты
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Что такое Highload? Секреты высокой нагрузки
Что такое Highload? Секреты высокой нагрузки
ITmozg, Даниил Павлючков
ITmozg, Даниил Павлючков
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Кит на службе у человека microPaaS Deis / Алексей Медведчиков (2ГИС)
Денис Иванов
Денис Иванов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
КРИ 2013. "Базы данных в онлайн играх. От Аллодов до Skyforge". Андрей Фролов
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Clickhouse
Clickhouse
Zabbix в сервисной компании ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании ОНЛАНТА - Zabbix Meetup Moscow
Александр Сербул —1С-Битрикс — ICBDA 2015
Александр Сербул —1С-Битрикс — ICBDA 2015
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
Financial Chain Corporation LLC. Александр Тварадзе. "Регистрация взлома. Как...
Financial Chain Corporation LLC. Александр Тварадзе. "Регистрация взлома. Как...
Дмитрий Дегтярев, "Хабикаса"
Дмитрий Дегтярев, "Хабикаса"
Onliner PHP Meetup
1.
АРХИТЕКТУРА МАСШТАБИРУЕМОГО REAL-TIME МЕССЕНДЖЕРА Александр Мохорев
2.
НОВАЯ ВЕРСИЯ
3.
CHATS.ONLINER.BY
4.
Данных «много» CHATS.ONLINER.BY
5.
Статистика за 1
год • 1 MySQL сервер • 50 000 000 записей • 30 GB размер БД CHATS.ONLINER.BY
6.
Данных будет больше CHATS.ONLINER.BY
7.
Хранить вечно CHATS.ONLINER.BY
8.
Масштабируемость Отказоустойчивость CHATS.ONLINER.BY
9.
Real-time CHATS.ONLINER.BY
10.
ВЫБОР БД
11.
MySQL РСУБД ВЫБОР БД
12.
MongoDB NoSQL ВЫБОР БД
13.
Apache Cassandra бесплатная, распределенная,
NoSQL ВЫБОР БД
14.
Распределенная и децентрализованная ВЫБОР БД
15.
Масштабируемость и отказоустойчивость ВЫБОР БД
16.
Фактор репликации Cогласованность Уровень согласованности ВЫБОР
БД
17.
ВЫБОР БД Операция записи
18.
ВЫБОР БД Операция записи
19.
ВЫБОР БД Операция записи
20.
ВЫБОР БД Операция записи
21.
ВЫБОР БД Операция записи
22.
Скорость записи не зависит
от размера БД ВЫБОР БД
23.
Чтение «дорогая» операция ВЫБОР БД
24.
ВЫБОР БД Операция чтения
25.
ВЫБОР БД Операция чтения
26.
ВЫБОР БД Операция чтения
27.
ВЫБОР БД Операция чтения
28.
Удаление может замедлить чтение ВЫБОР
БД
29.
ВЫБОР БД 1 2
3 4 5 6 7 8 9 10 11 Удаление. Tombstone
30.
ВЫБОР БД 1 2
3 4 5 6 7 8 9 10 11 Удаление. Tombstone
31.
ВЫБОР БД 1 2
3 Удаление. Tombstone
32.
МОДЕЛИРОВАНИЕ ДАННЫХ В CASSANDRA
33.
Нет операции JOIN МОДЕЛИРОВАНИЕ
ДАННЫХ В CASSANDRA
34.
Денормализация Cassandra Way МОДЕЛИРОВАНИЕ ДАННЫХ
В CASSANDRA
35.
Проектируем исходя из запросов
на чтение МОДЕЛИРОВАНИЕ ДАННЫХ В CASSANDRA
36.
Решение о сортировке принимаем
при проектировании МОДЕЛИРОВАНИЕ ДАННЫХ В CASSANDRA
37.
Иван Ольга Петр Дмитрий Игорь Чат с Ольгой МОДЕЛИРОВАНИЕ
ДАННЫХ В CASSANDRA
38.
Иван Ольга Петр Дмитрий Игорь Чат с Ольгой МОДЕЛИРОВАНИЕ
ДАННЫХ В CASSANDRA
39.
Иван Ольга Петр Дмитрий Игорь Чат с Ольгой МОДЕЛИРОВАНИЕ
ДАННЫХ В CASSANDRA
40.
CQL Cassandra Query Language МОДЕЛИРОВАНИЕ
ДАННЫХ В CASSANDRA
41.
Типы данных МОДЕЛИРОВАНИЕ ДАННЫХ
В CASSANDRA • Числовые • Текстовые • Типы времени и идентификации • Булев тип • Counter • Коллекции (set, list, map)
42.
User-Defined Types МОДЕЛИРОВАНИЕ ДАННЫХ
В CASSANDRA
43.
CREATE TYPE message
( type text, content text, ); МОДЕЛИРОВАНИЕ ДАННЫХ В CASSANDRA
44.
КАК ХРАНИМ ID СООБЩЕНИЙ
45.
TIMEUUID МОДЕЛИРОВАНИЕ ДАННЫХ В
CASSANDRA 2af61ee0-d675-11e7-b9b8-c3821b8062e9 2017-12-01T11:53:57.838000
46.
КАК ХРАНИМ ID ЧАТА
47.
КАК ХРАНИМ ID
ЧАТА <?php $hashids = new Hashids('salt'); $hashids->encode(100, 200); // Result: x8H2PkzFdHP57Z
48.
<?php $hashids = new
Hashids('salt'); $hashids->decode('x8H2PkzFdHP57Z'); // Result: [100, 200] КАК ХРАНИМ ID ЧАТА
49.
hashids(100, 200) != hashids(200, 100) КАК
ХРАНИМ ID ЧАТА
50.
• Короткий, красивый
ID • Быстрая проверка прав • Нет коллизий КАК ХРАНИМ ID ЧАТА
51.
ЧАТЫ ?APP
52.
CENTRIFUGO
53.
CENTRIFUGO Centrifugo Backend
54.
Centrifugo Backend CENTRIFUGO
55.
Написан на GO CENTRIFUGO
56.
Аутентификация и Авторизация CENTRIFUGO
57.
Клиентские библиотеки Javascript, IOS,
Android CENTRIFUGO
58.
Server API CENTRIFUGO HTTP API,
Redis API
59.
Масштабирование CENTRIFUGO
60.
Метрики • 7 серверов
Centrifugo • 60 000 соединений • 3 GB Memory • 19 GB Redis • 2500 msg / sec CENTRIFUGO
61.
АРХИТЕКТУРА ПРИЛОЖЕНИЯ
62.
АРХИТЕКТУРА ПРИЛОЖЕНИЯ CENTRIFUGO PROXY APP
63.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
64.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
65.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
66.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
67.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
68.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
69.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
70.
CENTRIFUGO PROXY APP АРХИТЕКТУРА ПРИЛОЖЕНИЯ
71.
ОПРЕДЕЛЕНИЕ ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
72.
1 pixel image ОПРЕДЕЛЕНИЕ
ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
73.
Это грубый способ ОПРЕДЕЛЕНИЕ
ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
74.
Проблема SPA * Single
Page Application ОПРЕДЕЛЕНИЕ ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
75.
WebSocket для определения присутствия ОПРЕДЕЛЕНИЕ
ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
76.
$presence.user.100 activity.user.100 CENTRIFUGO ОПРЕДЕЛЕНИЕ ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
77.
$presence.user.100 activity.user.100 I am online! CENTRIFUGO ОПРЕДЕЛЕНИЕ
ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
78.
activity.user.100 I am online! $presence.user.100 CENTRIFUGO ОПРЕДЕЛЕНИЕ
ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
79.
$presence.user.100 activity.user.100 user 100 is
online I am online! CENTRIFUGO ОПРЕДЕЛЕНИЕ ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
80.
Метрики • 60 000
соединений • 300 RPS • 17 MB Memory ОПРЕДЕЛЕНИЕ ПРИСУТСТВИЯ ПОЛЬЗОВАТЕЛЯ
81.
ДЕПЛОЙ
82.
Синхронизация MySQL-> Cassandra ДЕПЛОЙ
83.
RabbitMQ для синхронизации ДЕПЛОЙ
84.
Cassandra -> MySQL *
На всякий случай ДЕПЛОЙ
85.
Миграция ДЕПЛОЙ
86.
Парсер контента BBCode, HTML ДЕПЛОЙ
87.
Очень медленно ≈ 150
часов (100 сообщений в секунду) ДЕПЛОЙ
88.
RabbitMQ для миграции ДЕПЛОЙ
89.
Результат • 8 серверов •
по 20 воркеров • Время: 1.5 часа ДЕПЛОЙ
90.
ДЕПЛОЙ
91.
КАК МЕТЕОРИТ ПОПАЛ В
ДАТАЦЕНТР
92.
Коллизий в HASHIDS НЕТ
! КАК МЕТЕОРИТ УПАЛ В ДАТАЦЕНТР
93.
За 8 часов до
релиза … КАК МЕТЕОРИТ УПАЛ В ДАТАЦЕНТР
94.
SALT < 24
символа ! КАК МЕТЕОРИТ УПАЛ В ДАТАЦЕНТР
95.
Исправляем, быстро мигрируем КАК МЕТЕОРИТ
УПАЛ В ДАТАЦЕНТР
96.
СПАСИБО!
Download now