- PVSM.RU - https://www.pvsm.ru -
Месяц назад Microsoft анонсировала [1] предварительную версию нового сервиса – Azure Stream Analytics [2], созданного для потоковой обработки данных в режиме близкого к реальному времени.
Текущая версия Azure Stream Analytics подключается к Azure Event Hub и Azure Blob Storage для получения потока данных (носят название Inputs), а также к Event Hubs, Blob Storage, Azure SQL Database для записи результатов (Outputs). Обработчик потока (stream processor) проектируется с использованием языка похожего на SQL, что позволяет задавать обработку и преобразование потоковых данных в достоверную информацию в реальном времени.
И здесь на передний план выходит мощь облака. Всего лишь за несколько шагов и пару часов вы сможете поднять надежную инфраструктуру, которая сможет обрабатывать десятки тысяч событий или сообщений в секунду.
Мне было очень любопытно узнать, как много можно добиться с помощью этого сервиса. Поэтому я составил тестовый сценарий. Основой для моего эксперимента стало руководство, которое можно найти по этой ссылке [3].
В руководстве есть небольшая неточность на шаге «Start the Job». Там написано, что вы должны перейти в раздел «configure» вашей задачи (Job) для того, чтобы настроить время начала работы задачи (job output). Однако, эта настройка находится не в разделе Configure. Этот параметр конфигурируется в окне где вы стартуете свою задачу.
Для того, чтоб сделать тест интереснее, я поменял следующие настройки:
Изменения в исходном демо-коде Service Bus Event Hub
Я удалил весь ненужный код (например, создание Event Hub). В итоге, мой файл Program.cs выглядит так:
static void Main(string[] args)
{
System.Net.ServicePointManager.DefaultConnectionLimit = 1024;
eventHubName = "salhub";
Console.WriteLine("Start sending ...");
Stopwatch sw = new Stopwatch();
sw.Start();
Paralelize();
sw.Stop();
Console.WriteLine("Completed in {0} ms", sw.ElapsedMilliseconds);
Console.WriteLine("Press enter key to stop worker.");
Console.ReadLine();
}
static void Paralelize()
{
Task[] tasks = new Task[25];
for (int i = 0; i < 25; i++)
{
tasks[i] = new Task(()=>Send(2000));
}
Parallel.ForEach(tasks, (t) => { t.Start(); });
Task.WaitAll(tasks);
}
public static void Send(int eventCount)
{
Sender s = new Sender(eventHubName, eventCount);
s.SendEvents();
}
Теперь с помощью этого приложения командной строки я параллельно отправляю 25 х 2 000, или 50 000 сообщений. Чтобы сделать все еще веселее, я запущу приложение псевдо-параллельно, просто стартуя его 20 раз с помощью следующего скрипта PowerShell:
for($i=1; $i -le 20; $i++)
{
start .BasicEventHubSample.exe
}
Таким образом, я запускаю процессы почти одновременно. И жду до конца, то есть пока все процессы не отправят свои сообщения. Двадцать раз по 50 000 сообщений сформируют 1 000 000 сообщений. Затем просто получу результат самой медленной операции. Конечно, все эти показатели немного приблизительны, но достаточны, чтобы дать мне представление о возможностях, которые у меня есть. Без необходимости вкладывать в дорогое оборудование и разработку сложных решений.
Еще один момент — я запустил свою задачу stream analytics перед запуском приложений командной строки, качающих данные, просто чтобы убедиться, что процессор потока уже запущен до того, как я забросаю его данными.
Обратите внимание на некоторые моменты. В первую очередь сервис Stream Analytics пока еще в стадии предварительной версии, поэтому там могут быть сбои. Но конечный результат все равно просто поразительный.
Посмотрите на графики Event Hub и Stream Analytics — это просто потрясающе. Кстати, еще я убедился в том, что новые уровни производительности Azure SQL Database [4] тоже потрясающие.
При таком объеме данных в Stream Analytics, у сервиса не возникло проблем записи результатов в единую базу данных уровня Basic (5 DTUs)! Я начал получать результаты в таблице моей базы данных SQL сразу, как только перешел от запуска программы в мою SQL Server Management Studio и смог увидеть результаты, поступающие в реальном времени.
И напоследок, я накачал 1 000 000 событий в Event Hub всего за 75 секунд! Это означает более чем 13 000 событий в секунду! Всего с помощью пары строк кода.
Как же здорово смотреть на графики, вроде этого:
И как же здорово смотреть на подобные графики Azure Event Hubs:
Azure Event Hubs, миллионы сообщений. Только подумайте, сколько времени заняло бы у нас создание локальной тестовой лаборатории, для того чтобы обработать такой объем данных?
Ниже перечислены некоторые наиболее важные ограничения и известные проблемы [5] Stream Analytics:
Глядя на полученные результаты, я убежден, что Azure Event Hubs действительно может обеспечить пропускную способность в миллионы событий в секунду, а Stream Analytics действительно может обработать такое количество данных.
Автор: maria_gore
Источник [18]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/oblako/82172
Ссылки в тексте:
[1] анонсировала: http://weblogs.asp.net/scottgu/azure-announcing-new-real-time-data-streaming-and-data-factory-services
[2] Azure Stream Analytics: http://azure.microsoft.com/ru-ru/services/stream-analytics/
[3] ссылке: http://azure.microsoft.com/ru-ru/documentation/articles/stream-analytics-get-started/
[4] уровни производительности Azure SQL Database: https://msdn.microsoft.com/library/azure/dn741336.aspx/
[5] ограничения и известные проблемы: http://azure.microsoft.com/ru-ru/documentation/articles/stream-analytics-limitations/
[6] Попробовать Azure: http://l.techdays.ru/go/azuretrial
[7] Центр разработки Microsoft Azure (azurehub.ru): http://www.azurehub.ru/
[8] Twitter.com/windowsazure_ru: http://www.twitter.com/windowsazure_ru
[9] Сообществе Microsoft Azure на Facebook: http://www.facebook.com/groups/azurerus/
[10] Изучить курсы: http://l.techdays.ru/go/mva
[11] Бизнес и облако: лучшие практики решений: http://www.microsoftvirtualacademy.com/training-courses/business-and-cloud-best-practices-solutions-rus
[12] Windows 8.1 Update для крупных организаций. Начало работы: http://www.microsoftvirtualacademy.com/training-courses/windows-8-1-update-for-enterprise-jump-start-rus
[13] Гибридное облако Microsoft: Руководство по типовым решениям: http://www.microsoftvirtualacademy.com/training-courses/the-microsoft-hybrid-cloud-best-practices-guidance-rus
[14] Набор средств для подготовки пользователей к Windows 8.1: http://www.microsoftvirtualacademy.com/training-courses/windows-8-1-user-readiness-toolkit_rus
[15] Введение в графическую библиотеку Win2D: http://www.microsoftvirtualacademy.com/training-courses/introduction-to-the-graphics-library-win2d-rus
[16] Загрузить: http://l.techdays.ru/go/getvs
[17] Стать разработчиком: http://l.techdays.ru/go/winstart
[18] Источник: http://habrahabr.ru/post/250101/
Нажмите здесь для печати.