SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Одновременная доставка
мобильных push-уведомлений
миллионам пользователей
КИРИЛЛ ГАВРИЛЮК
ВЕДУЩИЙ РУКОВОДИТЕЛЬ ПРОЕКТА
WINDOWS AZURE MOBILE
В Докладе


Зачем push-уведомления?



Проблемы масштабной посылки push-уведомлений



Windows Azure Notification Hubs краткий обзор и
демонстрация



Bing News и другие сценарии



Notification Hubs архитектура и опыт
Зачем Push-уведомления?


Привлечь внимание пользователя



Добавить бэдж на иконке iOS приложения





Показать оповещение
Обновить живую плитку на Windows 8.x

Почему настолько популярны?


Функционально богаты и разнообразны



1000 раз дешевле чем SMS



Увеличивают возратимость пользователей на 50100%, 10x эффективность по сравнению с email
Push-уведомления 101
Получаем дескриптор устройства на старте приложения
1.

Клиент запрашывает дескриптор устройства у Platform Notification
Service (PNS)


2.

У каждой платформы (Windows 8.x, WinPhone, iOS, Android, …) свой PNS,
свой протокол

client app

Клиент передает дескриптор своему бэкенду

Посылаем уведомление
3.

Бэкенд приложения передает сообщение и дескриптор
соответствующему PNS

4.

Platform
Notification
Service

PNS посылает сообщение клиент устройству

Храним дескрипторы
5.

Удаляем негодные/просроченные дескрипторы и т.д.

App back-end
Сложности push-уведомлений



Различия в PNS протоколах (HTTP vs. TCP, xml vs. JSON payload)



Различия в свойствах и возможностях (плитки vs. тосты vs. бэджи)



PNS работает с дескриптерами; уведомления нужно доставить пользователям/группам



Необходимо хранить ассоциации дескриптор/пользователь/группа



Одновременная рассылка миллионам пользователей без задержек



Уведомления получаемые пользователем должны соответсвовать временному поясу,
языку, личным предпочтениям





Windows Azure Notification Hubs



Один раз



Клиент запрашывает дескриптор устройства у
Platform Notification Service (PNS)



Бэкенд приложения регистрирует дескриптор в
Notification Hub для пользователя/группы

Google app

iOS app





Windows 8.x
app

App back-end



Бэкенд приложения передает сообщение и
группу/пользователя для Notification Hub



Notification Hub посылает сообщение и
соответствующий дескриптор для PNS

GCM

Notification Hub

APNs

WNS
Windows Azure Notification Hubs


iOS / Android (GCM) / Windows 8.x/ Windows Phone 7.x & 8




Бэкенд приложения не беспокоится о различиях между протоколами PNS

Работает с любым бэкенд


.NET, Java, PHP, Ruby, Node.js, etc; в облаке или “под столом”



Хранение и организация дескрипторов устройств



Сегментация




Броадкаст




посылка уведомления тэгу реализует одновременный броадкаст миллионам устройств в один API
вызов.

Персонализация




Notification Hub ассоциирует дескрипторы с тагами, представляющими логических пользователей
или групп

позволяет регистрировать шаблоны для каждого дескриптора, трансформировать сообщения
согласно платформе, временному поясу, языку, и другим личным предпочтениям пользователя, не
утруждая бэкенд приложения

Аутентикация и доступ на основе ролей, богатая диагностика, мультитенантнасть и изоляция
Тэги


Тэги
каждый дескриптор устройства может быть
зарегистрирован с одним или более тэгам
 Тэги простые строки, их не нужно заранее
создавать




Tag:”Football”

Пример: броадкаст группам интересов


послать уведомление всем пользователям
интересующимся футболом с помощью одного
API call




App back-end

Комбинации тэгов: футбол + москва, позволяют
более точно указать клиентов для рассылки

Пример: уведомления индивидуальным

логическим пользователям

Notification Hub

Tag:”Hockey”

Tag:”Football”
Шаблоны
<toast>
<visual>
<binding template="ToastText01">
<text id="1">$(message)</text>
</binding>
</visual>
</toast>




Приложение может зарегистрировать
устройство вместе с одним или более
шаблонами


Alice’s Surface регистрируется с шаблоном для
Windows Store ToastText01 формата уведомления



Hello!

Bob’s iPhone регистрируется с шаблоном для
Apple toast:
{ aps: {alert: “$(message)”}}

{ message: “Hello!” }




Бэкенд приложения посылает сообщение для
всех пользователей:
{message: “Hello!”}.



App back-end

Service Bus
Notification Hub
Hello!

{



Шаблоны могут быть использованы для
абстракции вкрсий клиента

aps: {
alert: “$(message)”
}
}
var hub = new NotificationHub(“<hub name>", "<connection string>");
var channel = await
PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();

await hub.RegisterTemplateAsync(channel.Uri, toastText01Template,
“ToastTemplate", “FootballTag");
(void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken {
…

SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString:
@"<connection string>" notificationHubPath:@"mynh"];
[hub registerTemplateWithDeviceToken:deviceToken name:@“AlertTemplate“
jsonBodyTemplate:template tags:@“FootballTag“ completion:^(NSError* error) {
if (error != nil) {
NSLog(@"Error registering for notifications: %@", error);
}

}];
}
In your main activity:

Notification Hub hub = new NotificationHub("<hub name>", "<connection string>",
context);
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String regid = gcm.register(SENDER_ID);
TemplateRegistration r = hub.register(regid, template, “FootballTag”);
var azure = require('azure');
var notificationHubService = azure.createNotificationHubService('hubname',
'connectionString');

'FootballTag',
{ message: 'It’s a goal!' }
if (!error) { // message sent successfully }
});

function (error) {
Bing News


Windows 8.x, Windows Phone 8



Установлен на всех устройствах
Windows 8 & 8.1 devices



Использует уведомления для
горячих новостей



Использует Notifications Hubs для
броадкаста мобильных
уведомлений миллионам
пользователей во всем мире
ежедневно
Bing News


~100 тэгов для каждой темы и
рынка



Каждый тэг содержит
миллионы устройств



“Горячие новости” горячи
только первые минуты



Должны быть доставлены
одновременно всем
устройствам
Другие популярные сценарии


“Mailbox”





Малые тэги
Много sends/tags/day, важна быстрая доставка

“Events”



Богатые тэг выражения




Много быстро меняющихся больших тэгов

Меньшее количество sends; быстрая доставка критична

Campaigns


Большие тэги



Малое количество sends



Быстрая доставка не критична
Архитектура Notification Hubs
Messages

Registrations

Push
Workers

Gateway

WNS

Work Order
Queues

APNs

GCM

дескрипторы/тэги DBs

PNS feedback
processing

MPNS
Проблемы сценария “Breaking News”
Registrations


Broadcast миллионам устройств
одновременно



Распаралелить группы задач

Messages






Размер тэгов неоднороден

Gateway

Нужно предугадывать размер на gateway

Распределить дескрипры устройств


оптимизировать базы для быстрого чтения





Push
Workers

Work Order
Queues

для каждого тэга дескрипторы устройств
должны быть максимально распределены

Предохранить приложения от PNSблокировки


Динамическое ограничение скорости
посылки

дескрипторы/тэги DBs

PNS feedback
processing
Проблемы сценария “Events & Campaigns”
Registrations


Broadcast миллионам устройств
одновременно



Распаралелить группы задач



Push
Workers

Распределить дескрипры устройств



Messages

Большой траффик регистраций




Оптимизируем для записи

Тэги неоднородны и быстро меняются




Work Order
Queues

Перемещаем данные?



Gateway

Полагаемся на частую перерегистрацию?

Разделить базы для записи и чтения

Device handles/tags DBs

PNS feedback
processing
“Mailbox” и другие
Registrations

Messages

 Миллионы маленьких тэгов
 Большой “messages” траффик
 Work order queues должны быть
быстрыми, желательно в памяти
 Дескрипторы устройств выходят из срока
 Async обработка PNS’s feedback

Push
Workers

Gateway

Work Order
Queues

 Телеметрия и аналитика
 Мульти-тенант сценарии
Device handles/tags DBs

PNS feedback
processing
Q&A
Messages

Registrations

Push
Workers

Gateway

WNS

Work Order
Queues

APNs

GCM

Device handles/tags DBs

PNS feedback
processing

MPNS
Пора узнать облако ближе


Информационный портал http://AzureHub.ru
Все о Windows Azure на русском языке



Группа Windows Azure для всех
http://facebook.com/groups/azurerus/



Горячая линяя с экспертами
azurerus@microsoft.com



Пора попробовать Windows Azure
http://windowsazure.com/ru-ru/pricing/free-trial/

Contenu connexe

Similaire à Кирилл Гаврилюк, Microsoft

HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineVolha Banadyseva
 
AnyConnect, NVM и AMP
AnyConnect, NVM и AMPAnyConnect, NVM и AMP
AnyConnect, NVM и AMPCisco Russia
 
Check Point DDoS Protector Appliances
Check Point DDoS Protector AppliancesCheck Point DDoS Protector Appliances
Check Point DDoS Protector AppliancesTechExpert
 
Go Mobile! Windows Phone 7 for all
Go Mobile! Windows Phone 7 for all Go Mobile! Windows Phone 7 for all
Go Mobile! Windows Phone 7 for all SoftServe
 
Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...
Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...
Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...Expolink
 
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7CodeFest
 
Конкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteКонкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteEvernote
 
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11Sergey Gavruk - Mix11
Sergey Gavruk - Mix11beloslab
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, MicrosoftYandex
 
Облачные сервисы для конечных пользователей
Облачные сервисы для конечных пользователейОблачные сервисы для конечных пользователей
Облачные сервисы для конечных пользователейActiveCloud
 
Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...
Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...
Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...Microsoft
 
Преимущества VDI инфраструктуры
Преимущества VDI инфраструктурыПреимущества VDI инфраструктуры
Преимущества VDI инфраструктурыOlga Ponomareva
 
Android Platform - новые мобильные рынки
Android Platform - новые мобильные рынкиAndroid Platform - новые мобильные рынки
Android Platform - новые мобильные рынкиBlogcamp Organization Committee
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Отказоустойчивые игры с облаком – как делают игры на много пользователей
Отказоустойчивые игры с облаком – как делают игры на много пользователейОтказоустойчивые игры с облаком – как делают игры на много пользователей
Отказоустойчивые игры с облаком – как делают игры на много пользователейMicrosoft
 
MAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITY
MAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITYMAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITY
MAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITYAnna Rastova
 
Работа c облачным бэкендом мобильных приложений в Visual Studio 2013
Работа c облачным бэкендом мобильных приложений в Visual Studio 2013Работа c облачным бэкендом мобильных приложений в Visual Studio 2013
Работа c облачным бэкендом мобильных приложений в Visual Studio 2013Natalia Efimtseva
 
Совместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местСовместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местDell_Russia
 

Similaire à Кирилл Гаврилюк, Microsoft (20)

HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft UkraineHTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
HTML 5: будущее уже сегодня, Сергей Байдачный, Microsoft Ukraine
 
HTML 5
HTML 5HTML 5
HTML 5
 
Bitdefender gravityzone
Bitdefender gravityzoneBitdefender gravityzone
Bitdefender gravityzone
 
AnyConnect, NVM и AMP
AnyConnect, NVM и AMPAnyConnect, NVM и AMP
AnyConnect, NVM и AMP
 
Check Point DDoS Protector Appliances
Check Point DDoS Protector AppliancesCheck Point DDoS Protector Appliances
Check Point DDoS Protector Appliances
 
Go Mobile! Windows Phone 7 for all
Go Mobile! Windows Phone 7 for all Go Mobile! Windows Phone 7 for all
Go Mobile! Windows Phone 7 for all
 
Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...
Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...
Microsoft. Александр Худяков "Windows 10 - защита от современных угроз безопа...
 
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
 
Конкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteКонкурс для разработчиков от Evernote
Конкурс для разработчиков от Evernote
 
Sergey Gavruk - Mix11
Sergey Gavruk - Mix11Sergey Gavruk - Mix11
Sergey Gavruk - Mix11
 
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
"Windows Azure для мобильных платформ". Владимир Юнев, Microsoft
 
Облачные сервисы для конечных пользователей
Облачные сервисы для конечных пользователейОблачные сервисы для конечных пользователей
Облачные сервисы для конечных пользователей
 
Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...
Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...
Облачные сервисы Майкрософт для мобильных приложений. Application Insights и ...
 
Преимущества VDI инфраструктуры
Преимущества VDI инфраструктурыПреимущества VDI инфраструктуры
Преимущества VDI инфраструктуры
 
Android Platform - новые мобильные рынки
Android Platform - новые мобильные рынкиAndroid Platform - новые мобильные рынки
Android Platform - новые мобильные рынки
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Отказоустойчивые игры с облаком – как делают игры на много пользователей
Отказоустойчивые игры с облаком – как делают игры на много пользователейОтказоустойчивые игры с облаком – как делают игры на много пользователей
Отказоустойчивые игры с облаком – как делают игры на много пользователей
 
MAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITY
MAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITYMAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITY
MAKING THE BEST FROM HARDWARE AND SOFTWARE FOR TRUE CORPORATE MOBILITY
 
Работа c облачным бэкендом мобильных приложений в Visual Studio 2013
Работа c облачным бэкендом мобильных приложений в Visual Studio 2013Работа c облачным бэкендом мобильных приложений в Visual Studio 2013
Работа c облачным бэкендом мобильных приложений в Visual Studio 2013
 
Совместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих местСовместные решения Citrix и Dell для правильной организации рабочих мест
Совместные решения Citrix и Dell для правильной организации рабочих мест
 

Plus de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 

Plus de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Кирилл Гаврилюк, Microsoft

  • 1. Одновременная доставка мобильных push-уведомлений миллионам пользователей КИРИЛЛ ГАВРИЛЮК ВЕДУЩИЙ РУКОВОДИТЕЛЬ ПРОЕКТА WINDOWS AZURE MOBILE
  • 2. В Докладе  Зачем push-уведомления?  Проблемы масштабной посылки push-уведомлений  Windows Azure Notification Hubs краткий обзор и демонстрация  Bing News и другие сценарии  Notification Hubs архитектура и опыт
  • 3. Зачем Push-уведомления?  Привлечь внимание пользователя   Добавить бэдж на иконке iOS приложения   Показать оповещение Обновить живую плитку на Windows 8.x Почему настолько популярны?  Функционально богаты и разнообразны  1000 раз дешевле чем SMS  Увеличивают возратимость пользователей на 50100%, 10x эффективность по сравнению с email
  • 4. Push-уведомления 101 Получаем дескриптор устройства на старте приложения 1. Клиент запрашывает дескриптор устройства у Platform Notification Service (PNS)  2. У каждой платформы (Windows 8.x, WinPhone, iOS, Android, …) свой PNS, свой протокол client app Клиент передает дескриптор своему бэкенду Посылаем уведомление 3. Бэкенд приложения передает сообщение и дескриптор соответствующему PNS 4. Platform Notification Service PNS посылает сообщение клиент устройству Храним дескрипторы 5. Удаляем негодные/просроченные дескрипторы и т.д. App back-end
  • 5. Сложности push-уведомлений   Различия в PNS протоколах (HTTP vs. TCP, xml vs. JSON payload)  Различия в свойствах и возможностях (плитки vs. тосты vs. бэджи)  PNS работает с дескриптерами; уведомления нужно доставить пользователям/группам  Необходимо хранить ассоциации дескриптор/пользователь/группа  Одновременная рассылка миллионам пользователей без задержек  Уведомления получаемые пользователем должны соответсвовать временному поясу, языку, личным предпочтениям   
  • 6. Windows Azure Notification Hubs   Один раз  Клиент запрашывает дескриптор устройства у Platform Notification Service (PNS)  Бэкенд приложения регистрирует дескриптор в Notification Hub для пользователя/группы Google app iOS app   Windows 8.x app App back-end  Бэкенд приложения передает сообщение и группу/пользователя для Notification Hub  Notification Hub посылает сообщение и соответствующий дескриптор для PNS GCM Notification Hub APNs WNS
  • 7. Windows Azure Notification Hubs  iOS / Android (GCM) / Windows 8.x/ Windows Phone 7.x & 8   Бэкенд приложения не беспокоится о различиях между протоколами PNS Работает с любым бэкенд  .NET, Java, PHP, Ruby, Node.js, etc; в облаке или “под столом”  Хранение и организация дескрипторов устройств  Сегментация   Броадкаст   посылка уведомления тэгу реализует одновременный броадкаст миллионам устройств в один API вызов. Персонализация   Notification Hub ассоциирует дескрипторы с тагами, представляющими логических пользователей или групп позволяет регистрировать шаблоны для каждого дескриптора, трансформировать сообщения согласно платформе, временному поясу, языку, и другим личным предпочтениям пользователя, не утруждая бэкенд приложения Аутентикация и доступ на основе ролей, богатая диагностика, мультитенантнасть и изоляция
  • 8. Тэги  Тэги каждый дескриптор устройства может быть зарегистрирован с одним или более тэгам  Тэги простые строки, их не нужно заранее создавать   Tag:”Football” Пример: броадкаст группам интересов  послать уведомление всем пользователям интересующимся футболом с помощью одного API call   App back-end Комбинации тэгов: футбол + москва, позволяют более точно указать клиентов для рассылки Пример: уведомления индивидуальным логическим пользователям Notification Hub Tag:”Hockey” Tag:”Football”
  • 9. Шаблоны <toast> <visual> <binding template="ToastText01"> <text id="1">$(message)</text> </binding> </visual> </toast>   Приложение может зарегистрировать устройство вместе с одним или более шаблонами  Alice’s Surface регистрируется с шаблоном для Windows Store ToastText01 формата уведомления  Hello! Bob’s iPhone регистрируется с шаблоном для Apple toast: { aps: {alert: “$(message)”}} { message: “Hello!” }   Бэкенд приложения посылает сообщение для всех пользователей: {message: “Hello!”}.  App back-end Service Bus Notification Hub Hello! {  Шаблоны могут быть использованы для абстракции вкрсий клиента aps: { alert: “$(message)” } }
  • 10. var hub = new NotificationHub(“<hub name>", "<connection string>"); var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); await hub.RegisterTemplateAsync(channel.Uri, toastText01Template, “ToastTemplate", “FootballTag");
  • 11. (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken { … SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString: @"<connection string>" notificationHubPath:@"mynh"]; [hub registerTemplateWithDeviceToken:deviceToken name:@“AlertTemplate“ jsonBodyTemplate:template tags:@“FootballTag“ completion:^(NSError* error) { if (error != nil) { NSLog(@"Error registering for notifications: %@", error); } }]; }
  • 12. In your main activity: Notification Hub hub = new NotificationHub("<hub name>", "<connection string>", context); GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); String regid = gcm.register(SENDER_ID); TemplateRegistration r = hub.register(regid, template, “FootballTag”);
  • 13. var azure = require('azure'); var notificationHubService = azure.createNotificationHubService('hubname', 'connectionString'); 'FootballTag', { message: 'It’s a goal!' } if (!error) { // message sent successfully } }); function (error) {
  • 14. Bing News  Windows 8.x, Windows Phone 8  Установлен на всех устройствах Windows 8 & 8.1 devices  Использует уведомления для горячих новостей  Использует Notifications Hubs для броадкаста мобильных уведомлений миллионам пользователей во всем мире ежедневно
  • 15. Bing News  ~100 тэгов для каждой темы и рынка  Каждый тэг содержит миллионы устройств  “Горячие новости” горячи только первые минуты  Должны быть доставлены одновременно всем устройствам
  • 16. Другие популярные сценарии  “Mailbox”    Малые тэги Много sends/tags/day, важна быстрая доставка “Events”   Богатые тэг выражения   Много быстро меняющихся больших тэгов Меньшее количество sends; быстрая доставка критична Campaigns  Большие тэги  Малое количество sends  Быстрая доставка не критична
  • 17. Архитектура Notification Hubs Messages Registrations Push Workers Gateway WNS Work Order Queues APNs GCM дескрипторы/тэги DBs PNS feedback processing MPNS
  • 18. Проблемы сценария “Breaking News” Registrations  Broadcast миллионам устройств одновременно  Распаралелить группы задач Messages    Размер тэгов неоднороден Gateway Нужно предугадывать размер на gateway Распределить дескрипры устройств  оптимизировать базы для быстрого чтения   Push Workers Work Order Queues для каждого тэга дескрипторы устройств должны быть максимально распределены Предохранить приложения от PNSблокировки  Динамическое ограничение скорости посылки дескрипторы/тэги DBs PNS feedback processing
  • 19. Проблемы сценария “Events & Campaigns” Registrations  Broadcast миллионам устройств одновременно  Распаралелить группы задач  Push Workers Распределить дескрипры устройств  Messages Большой траффик регистраций   Оптимизируем для записи Тэги неоднородны и быстро меняются   Work Order Queues Перемещаем данные?  Gateway Полагаемся на частую перерегистрацию? Разделить базы для записи и чтения Device handles/tags DBs PNS feedback processing
  • 20. “Mailbox” и другие Registrations Messages  Миллионы маленьких тэгов  Большой “messages” траффик  Work order queues должны быть быстрыми, желательно в памяти  Дескрипторы устройств выходят из срока  Async обработка PNS’s feedback Push Workers Gateway Work Order Queues  Телеметрия и аналитика  Мульти-тенант сценарии Device handles/tags DBs PNS feedback processing
  • 22. Пора узнать облако ближе  Информационный портал http://AzureHub.ru Все о Windows Azure на русском языке  Группа Windows Azure для всех http://facebook.com/groups/azurerus/  Горячая линяя с экспертами azurerus@microsoft.com  Пора попробовать Windows Azure http://windowsazure.com/ru-ru/pricing/free-trial/