Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Одновременная доставка
мобильных push-уведомлений
миллионам пользователей
КИРИЛЛ ГАВРИЛЮК
ВЕДУЩИЙ РУКОВОДИТЕЛЬ ПРОЕКТА
WIN...
В Докладе


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



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



Windows Azure Notification Hubs ...
Зачем Push-уведомления?


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

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





Показать опов...
Push-уведомления 101
Получаем дескриптор устройства на старте приложения
1.

Клиент запрашывает дескриптор устройства у Pl...
Сложности push-уведомлений



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



Различия в свойствах и ...
Windows Azure Notification Hubs



Один раз



Клиент запрашывает дескриптор устройства у
Platform Notification Service...
Windows Azure Notification Hubs


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



Бэкенд приложения не бес...
Тэги


Тэги
каждый дескриптор устройства может быть
зарегистрирован с одним или более тэгам
 Тэги простые строки, их не ...
Шаблоны
<toast>
<visual>
<binding template="ToastText01">
<text id="1">$(message)</text>
</binding>
</visual>
</toast>


...
var hub = new NotificationHub(“<hub name>", "<connection string>");
var channel = await
PushNotificationChannelManager.Cre...
(void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken {
…...
In your main activity:

Notification Hub hub = new NotificationHub("<hub name>", "<connection string>",
context);
GoogleCl...
var azure = require('azure');
var notificationHubService = azure.createNotificationHubService('hubname',
'connectionString...
Bing News


Windows 8.x, Windows Phone 8



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



Использует уведом...
Bing News


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



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



“Горячие новости” горячи
то...
Другие популярные сценарии


“Mailbox”





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

“Events”



Бог...
Архитектура Notification Hubs
Messages

Registrations

Push
Workers

Gateway

WNS

Work Order
Queues

APNs

GCM

дескрипто...
Проблемы сценария “Breaking News”
Registrations


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



Распаралелить группы зад...
Проблемы сценария “Events & Campaigns”
Registrations


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



Распаралелить групп...
“Mailbox” и другие
Registrations

Messages

 Миллионы маленьких тэгов
 Большой “messages” траффик
 Work order queues до...
Q&A
Messages

Registrations

Push
Workers

Gateway

WNS

Work Order
Queues

APNs

GCM

Device handles/tags DBs

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

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



Группа Windo...
Upcoming SlideShare
Loading in …5
×

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

765 views

Published on

HighLoad++ 2013

  • Be the first to comment

  • Be the first to like this

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

  1. 1. Одновременная доставка мобильных push-уведомлений миллионам пользователей КИРИЛЛ ГАВРИЛЮК ВЕДУЩИЙ РУКОВОДИТЕЛЬ ПРОЕКТА WINDOWS AZURE MOBILE
  2. 2. В Докладе  Зачем push-уведомления?  Проблемы масштабной посылки push-уведомлений  Windows Azure Notification Hubs краткий обзор и демонстрация  Bing News и другие сценарии  Notification Hubs архитектура и опыт
  3. 3. Зачем Push-уведомления?  Привлечь внимание пользователя   Добавить бэдж на иконке iOS приложения   Показать оповещение Обновить живую плитку на Windows 8.x Почему настолько популярны?  Функционально богаты и разнообразны  1000 раз дешевле чем SMS  Увеличивают возратимость пользователей на 50100%, 10x эффективность по сравнению с email
  4. 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. 5. Сложности push-уведомлений   Различия в PNS протоколах (HTTP vs. TCP, xml vs. JSON payload)  Различия в свойствах и возможностях (плитки vs. тосты vs. бэджи)  PNS работает с дескриптерами; уведомления нужно доставить пользователям/группам  Необходимо хранить ассоциации дескриптор/пользователь/группа  Одновременная рассылка миллионам пользователей без задержек  Уведомления получаемые пользователем должны соответсвовать временному поясу, языку, личным предпочтениям   
  6. 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. 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. 8. Тэги  Тэги каждый дескриптор устройства может быть зарегистрирован с одним или более тэгам  Тэги простые строки, их не нужно заранее создавать   Tag:”Football” Пример: броадкаст группам интересов  послать уведомление всем пользователям интересующимся футболом с помощью одного API call   App back-end Комбинации тэгов: футбол + москва, позволяют более точно указать клиентов для рассылки Пример: уведомления индивидуальным логическим пользователям Notification Hub Tag:”Hockey” Tag:”Football”
  9. 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. 10. var hub = new NotificationHub(“<hub name>", "<connection string>"); var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); await hub.RegisterTemplateAsync(channel.Uri, toastText01Template, “ToastTemplate", “FootballTag");
  11. 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. 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. 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. 14. Bing News  Windows 8.x, Windows Phone 8  Установлен на всех устройствах Windows 8 & 8.1 devices  Использует уведомления для горячих новостей  Использует Notifications Hubs для броадкаста мобильных уведомлений миллионам пользователей во всем мире ежедневно
  15. 15. Bing News  ~100 тэгов для каждой темы и рынка  Каждый тэг содержит миллионы устройств  “Горячие новости” горячи только первые минуты  Должны быть доставлены одновременно всем устройствам
  16. 16. Другие популярные сценарии  “Mailbox”    Малые тэги Много sends/tags/day, важна быстрая доставка “Events”   Богатые тэг выражения   Много быстро меняющихся больших тэгов Меньшее количество sends; быстрая доставка критична Campaigns  Большие тэги  Малое количество sends  Быстрая доставка не критична
  17. 17. Архитектура Notification Hubs Messages Registrations Push Workers Gateway WNS Work Order Queues APNs GCM дескрипторы/тэги DBs PNS feedback processing MPNS
  18. 18. Проблемы сценария “Breaking News” Registrations  Broadcast миллионам устройств одновременно  Распаралелить группы задач Messages    Размер тэгов неоднороден Gateway Нужно предугадывать размер на gateway Распределить дескрипры устройств  оптимизировать базы для быстрого чтения   Push Workers Work Order Queues для каждого тэга дескрипторы устройств должны быть максимально распределены Предохранить приложения от PNSблокировки  Динамическое ограничение скорости посылки дескрипторы/тэги DBs PNS feedback processing
  19. 19. Проблемы сценария “Events & Campaigns” Registrations  Broadcast миллионам устройств одновременно  Распаралелить группы задач  Push Workers Распределить дескрипры устройств  Messages Большой траффик регистраций   Оптимизируем для записи Тэги неоднородны и быстро меняются   Work Order Queues Перемещаем данные?  Gateway Полагаемся на частую перерегистрацию? Разделить базы для записи и чтения Device handles/tags DBs PNS feedback processing
  20. 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
  21. 21. Q&A Messages Registrations Push Workers Gateway WNS Work Order Queues APNs GCM Device handles/tags DBs PNS feedback processing MPNS
  22. 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/

×