РИТ++ 2017, HighLoad Junior
Зал Сингапур, 6 июня, 14:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2499.html
Компания TIMCONNECT процессит банковские смс-сообщения, по возможности отправляя их как push.
Расскажем, как мы за 2 месяца небольшой командой масштабировались в 15 раз, минимально переписывая код, применяя паттерны из хайлоада методом проб и ошибок. На примерах проиллюстрируем, что хайлоад может быть достижим просто и быстро. Если повезет.
Доклад о собранных граблях и сделанных выводах, применимых к большинству проектов.
Рост с нуля до 15000 сообщений в секунду. Мучительный и поучительный / Юрий Колесов (security-gu.ru)
1. Рост с нуля до 15000 сообщений в
секунду. Мучительный и
поучительный
Юрий Колесов
http://security-gu.ru
security-guru@mail.ru
+7 (926) 55-99-824
https://www.facebook.com/yuri.v.kolesov
2. TIM-CONNECT
Процессит банковские SMS-уведомления, по
возможности отправляя их как PUSH
Принимаем по SMPP (Short message Peer-to-Peer),
отправляем по SMPP и PUSH (APNS, GCM, MPNS)
SMPP — C daemon. PUSH, API — python.
3. TIM-CONNECT
Процессит банковские SMS-уведомления, по
возможности отправляя их как PUSH
Принимаем по SMPP (Short message Peer-to-Peer),
отправляем по SMPP и PUSH (APNS, GCM, MPNS)
SMPP — C daemon. PUSH, API — python.
Задача: показать процессинг 15000 sms/sec
Срок: 2 месяца
4. TIM-CONNECT
Процессит банковские SMS-уведомления, по
возможности отправляя их как PUSH
Принимаем по SMPP (Short message Peer-to-Peer),
отправляем по SMPP и PUSH (APNS, GCM, MPNS)
SMPP — C daemon. PUSH, API — python.
Задача: показать процессинг 15000 sms/sec
Срок: 2 месяца
7. Что уже было
● Оптимизировали SMPP демоны
(многопоточные, внутренние очереди, блочная
работа с БД)
8. Что уже было
● Оптимизировали SMPP демоны
(многопоточные, внутренние очереди, блочная
работа с БД)
● Разделили БД на две: очередь и архив
9. Что уже было
● Оптимизировали SMPP-демоны
(многопоточные, внутренние очереди, блочная
работа с БД)
● Разделили БД на две: очередь и архив
● Монолит разделили на:
– mobile API
– ЛК
– PUSH
10. 640k ought to be enough for
anybody
(C) Bill Gates 1981
46. Идеи
● Разделить APNS, MPNS, GCM
● Шардим по номеру телефона
Грабли
● Номер телефона не присутствует в вызовах API
47. Идеи
● Разделить APNS, MPNS, GCM
● Шардим по номеру телефона
Грабли
● Номер телефона не присутствует в вызовах API
● Выборки ЛК требуют обращения ко всем
шардам
48. Идеи
● Разделить APNS, MPNS, GCM
● Шардим по номеру телефона
Грабли
● Номер телефона не присутствует в вызовах API
● Выборки ЛК требуют обращения ко всем
шардам
Бонус
● По API проблема решена
58. Выводы
● Планируйте архитектуру, потом оптимизируйте
код
● Контролируйте технический долг
● Тестируйте, чтобы знать свои пределы
59. Выводы
● Планируйте архитектуру, потом оптимизируйте
код
● Контролируйте технический долг
● Тестируйте, чтобы знать свои пределы
● Масштабирование всегда ступенчатое
60. Выводы
● Планируйте архитектуру, потом оптимизируйте
код
● Контролируйте технический долг
● Тестируйте, чтобы знать свои пределы
● Масштабирование всегда ступенчатое
● Простые варианты вперед
61. Выводы
● Планируйте архитектуру, потом оптимизируйте
код
● Контролируйте технический долг
● Тестируйте, чтобы знать свои пределы
● Масштабирование всегда ступенчатое
● Простые варианты вперед
● Хайлоад — быстро и несложно. Но не всегда)