Распределение виртуальных сенсоров по серверам в масштабируемой отказоустойчивой системе на основе архитектуры Sensor-Cloud

ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ

УДК 004.415.25

РАСПРЕДЕЛЕНИЕ ВИРТУАЛЬНЫХ СЕНСОРОВ ПО СЕРВЕРАМ В МАСШТАБИРУЕМОЙ ОТКАЗОУСТОЙЧИВОЙ СИСТЕМЕ НА ОСНОВЕ АРХИТЕКТУРЫ SENSOR-CLOUD

А.А. Ширко, А.О. Армяков, А.А. Байтин, Е.А. Нестеров,

К.С. Серебренников

Рассматриваются требования, предъявляемые к системам по обработке данных от больших сенсорных сетей. Исследуются различные подходы к распределению виртуальных сенсоров по серверам системы на основе архитектуры Sensor-Cloud. Для каждого из подходов вычисляются сложность определения местонахождения виртуального сенсора, среднее время задержки обработки данных и доля виртуальных сенсоров, которые необходимо перераспределить при добавлении/удалении сервера из системы. Делается вывод о том, что использование консистентного хеширования позволяет добиться горизонтального масштабирования, а также практически равномерного распределения виртуальных сенсоров по серверам системы. Кроме того, данных подход обладает минимальным средним временем задержки обработки данных, наименьшей сложностью определения местонахождения виртуального сенсора и наименьшей долей виртуальных сенсоров, которые необходимо перераспределить при изменении количества серверов в системе.

Ключевые слова: Sensor-Cloud, виртуальные сенсоры, горизонтальное масштабирование, отказоустойчивость, консистентное хеширование, HRW hashing.

Сенсорные сети применяются для решения широкого спектра задач, таких как мониторинг транспортных средств, мониторинг экологической обстановки, организация логистических сетей с RFID и др. [3,4]. Сенсорная сеть представляет собой множество пространственно разделенных сенсорных узлов, объединенных в совместную сеть. Характерной особенностью узлов в сенсорных сетях является передача данных циклично через задаваемый интервал. Достижения в разработках микроэлетромеханиче-ских систем и цифровой электроники, а также в области беспроводной передачи данных позволяют разрабатывать недорогие, многофункциональ-

346

ные узлы с низким энергопотреблением. В настоящее время большое распространение получили как проводные, так и беспроводные сенсорные сети. Большие сенсорные сети теоретически могут ежегодно производить объем данных порядка нескольких петабайт. Одной из особенностей больших сенсорных сетей является непрерывный поток данных, поступающий с варьирующейся скоростью, что делает реализацию сбора, хранения и обработки данных сложной задачей [5]. Традиционный способ управления петабайтными данными с применением реляционных баз данных, хранимых на серверах, не масштабируется должным образом, и, чтобы преодолеть проблему взрывообразного роста объема и потоков данных, требуются новые решения. Это обуславливает необходимость создания программного обеспечения, способного выполнять задачи сбора, обработки и хранения информации от больших сенсорных сетей (в дальнейшем, система для обработки данных от больших сенсорных сетей).

Требования, предъявляемые к системе по обработке данных от больших сенсорных сетей [1,2]:

- горизонтальная масштабируемость;

- отказоустойчивость;

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

Одним из перспективных направлений для обработки данных от сенсорных сетей является архитектура Sensor-Cloud [2]. Отличительной особенностью архитектуры Sensor-Cloud являются виртуальные сенсоры. Виртуальные сенсоры могут быть реализованы на основе модели акторов, роль которых исполняют легковесные процессы. Вместе с тем, при разработке системы для обработки данных от больших сенсорных сетей на основе архитектуры Sensor-Cloud возникают следующие проблемы.

1. Как реализовать горизонтальное масштабирование системы и при этом минимизировать количество виртуальных сенсоров, которое необходимо перераспределить при добавлении новых серверов в систему.

2. Как организовать распределение виртуальных сенсоров между серверами.

3. Как организовать маршрутизацию данных, поступающих от физических устройств, к виртуальным сенсорам, обеспечив при этом минимальную задержку обработки данных.

4. Как организовать работу системы чтобы исключить потерю данных в случае отказа части серверов.

Необходимо провести исследование для выявления оптимальной стратегии распределения виртуальных сенсоров по серверам системы, при условии достижения горизонтальной масштабируемости, отказоустойчиво -сти и возможности обработки потоковых данных без предварительного сохранения с минимальной задержкой.

Для разделения данных между серверами используются такие подходы, как секционирование по диапазонам ключей, хеш-секционирование, round-robin, составное секционирование. Существует множество решений, позволяющих осуществлять горизонтальное масштабирование для баз данных. К ним относятся системы Amazon Dynamo [6] и Riak Core [7], использующие консистентное хеширования для распределения ключей между серверами и поиска сервера, на котором хранится ключ. Аналогичные задачи реализует алгоритм HRW хеширования [8]. Вместе с тем, поиск не выявил работ, посвященных проблеме распределения виртуальных сенсоров по серверам системы на основе архитектуры Sensor-Cloud.

Пусть в систему поступают данные от К узлов сенсорной сети, каждый их которых имеет уникальный идентификатор (ключ). В системе п > 2 серверов с именами Slt..., Sn, предназначенных для обработки и хранения информации от сенсоров. Пусть также поступающие от сенсоров данные равномерно распределяются между серверами системы за счет использования балансировщика нагрузки. Далее происходит первичная обработка поступивших данных, при которой вычисляется идентификатор устройства, отправившего данные. После этого для отправки данных к месту дальнейшей обработки, необходимо вычислить на каком из серверов системы расположен виртуальный сенсор, соответствующий данному устройству. После вычисления местонахождения виртуального сенсора сообщение передается на найденный сервер, после чего на нем производится обработка и сохранение сообщения.

Существуют следующие подходы к распределению данных между серверами системы.

1. Секционирование по диапазонам ключей.

2. Round-robin.

3. Хеш-секционирование.

4. Составное секционирование.

Поскольку распределение значений ключей заранее неизвестно, нельзя равномерно распределить диапазоны значений ключей по серверам. Следовательно, секционирование по диапазонам ключей не подходит для решения задачи. Для реализации алгоритма round-robin i-й виртуальный сенсор создается на сервере с номером

N = i div п.

Это обеспечивает равномерное распределение виртуальных сенсоров по кластеру. Вместе с тем, при данном подходе необходимо дополнительно хранить таблицу адресов, в которой каждому ключу сопоставляется соответствующий сервер. Соответственно данный подход ведет к появлению дополнительных расходов на чтение и запись в таблицу адресов со сложностью О (К). Данные операции при большом К могут занимать значительное время. При добавлении в систему нового сервера, необходимо полное перераспределение виртуальных сенсоров между серверами. Кроме

348

того, при хранении таблицы адресов на выделенном сервере возникают дополнительные временные затраты на доступ к данному серверу, а также теряется отказоустойчивость системы. При хранении нескольких копий таблицы возникают накладные расходы из-за необходимости синхронизации информации между копиями. При использовании хеш-секционирования необходимо хранить массив, в которой именам серверов соответствуют индексы от 0 до 71 — 1. Для поиска сервера, на котором запущен виртуальный сенсор с ключом key, вычисляется значение Н хеш-функции

Н = h(key).

Значение хеш-функции может использоваться в качестве ключа виртуального сенсора в системе. При необходимости фильтрации запросов, наличие виртуального сенсора, соответствующего данному ключу, может быть проверено с помощью фильтра Блума [9]. Вероятность ложного срабатывания Pfp для фильтра Блума составляет

Pfp = (1 - eJi)\

где Т - количество имеющихся в системе ключей; I — количество хеш-функций, используемых для фильтрации; m — размер битового массива [10]. После вычисления значения хеш-функции номер искомого сервера находится так:

N = h(key) mod п.

Сложность поиска имени сервера в массиве составляет 0(1). Хеш-секционирование обеспечивает равномерное распределение виртуальных сенсоров по кластеру и позволяет вычислять номер сервера, на котором запущен виртуальный сенсор, без необходимости хранения дополнительных таблиц. Минусом хеш-секционирования является необходимость практически полного перераспределения данных между серверами при изменении количества серверов в системе. Для устранения этого недостатка может применяться составное секционирование. Алгоритмами, реализующими хеширование, при котором перестройка хеш-таблицы не требует полного переназначения ключей, являются консистентное хеширование и HRW hashing.

В алгоритме консистентного хеширования одна и та же хеш-функция используется для хеширования названия серверов и ключей виртуальных сенсоров. В качестве хеш-функции можно использовать, к примеру, SHA-1 [11]. Множество значений хеш-функции обычно отображается в виде кольца, на котором отмечены точки, соответствующие значениям хеш-функции, взятой от имени серверов. Участки кольца между соседними точками представляют собой партиции - диапазоны хеш-функций от ключей, которые хранятся на сервере, чья точка находится ближе всех при обходе кольца по часовой стрелке. Для оптимизации времени определения сервера, на котором находится виртуальный сенсор, информация о значениях хеш-функций имен серверов может храниться в сбалансированном

бинарном дереве поиска. В этом случае для поиска местонахождения виртуального сенсора может быть использована successor operation со сложностью О (logn). Также для реализации равномерного распределения виртуальных сенсоров между серверами системы можно использовать стратегию, при которой каждому серверу системы соответствует m точек на кольце. Это может быть реализовано за счет использования m различных хеш-функций [12]. Также данная стратегия может быть реализована за счет разделения кольца на / партиций и установкой каждому серверу в соответствие

/

m = —

п

партиций. Сложность поиска ключа при этом увеличивается и становится равной О (log mri). Необходимо отметить, что если m не является целым числом, то количество партиций, выделенных каждому серверу, может отличаться. Однако на практике при выборе параметра

m « logn

распределение ключей по серверам системы близко к равномерному, т.е. доля ключей на каждом сервере составляет примерно

d = -[121.

п

Данные подходы увеличивают количество ключей, хранящихся в дереве, в m раз, но позволяют достичь равномерного распределения виртуальных сенсоров между серверами системы. При равномерном распределении виртуальных сенсоров между серверами, при удалении или добавлении одного сервера в систему, в среднем должны быть перераспределены

К

а = —

п

виртуальных сенсоров, по сравнению с практически всеми в случае использования простого хеш-секционирования.

HRW hashing. Для распределения виртуальных сенсоров между серверами системы может также быть использовано HRW hashing. Подобно консистентному хешированию, данный алгоритм позволяет перераспределять только

а = К /п

виртуальных сенсоров при изменении количества серверов в системе. Вместе с тем, для вычисления сервера, на котором находится соответствующий ключу key виртуальный сенсор при помощи HRW hashing, требуется вычисление значения хеш-функции

Ht = h

п раз по сравнению с одним разом при консистентном хешировании. Поскольку сенсорные сети характеризуются большим потоком сообщений от устройств, это ведет к увеличению задержки обработки данных в системе.

Кроме того, таблица с полученными значениями хеш-функции должна быть отсортирована с целью нахождения максимального значения хеш-функции. Сложность данной операции составляет 0(п logn).

Отказоустойчивость - свойство системы, заключающееся в том, что при отказе определенного количества серверов, система должна продолжать работать, а виртуальные сенсоры, принадлежащие вышедшему из строя серверу, должны быть перезапущены на других машинах. Отказоустойчивость может быть достигнута за счет запуска резервных виртуальных серверов на к серверах. Таким образом, при отказе к — 1 серверов система может продолжить работу.

В случае распределения виртуальных серверов в системе в соответствии с подходом round-robin таблица адресов возрастает в к раз и сложность поиска всех реплик составляет О (к * К). При использовании хеш-секционирования номера серверов, на которых необходимо хранить реплики, можно вычислить как

N = (h{key) mod п + i)mod п, где i принимает значения от 0 до к — 1. В случае применения алгоритма HRW hashing происходит вычисление

Ht = h(key,Si),

после чего таблица с полученными значениями сортируется по возрастанию значения хеш-функции. Для получения номеров серверов для хранения реплик, достаточно запросить к первых элементов отсортированной таблицы.

При использовании консистентного хеширования, сервера, на которых запускаются резервные виртуальные сенсоры или хранятся реплики базы данных, могут быть получены как первые к — 1 серверов, находящихся при движении по часовой стрелке от основного сервера, хранящего виртуальный сенсор. При этом количество ключей в сбалансированном бинарном дереве поиска, хранящем значения хеш-функций от имен серверов, увеличивается в к раз. Кроме того, выполнение successor operation при записи значений необходимо производить к раз: в первый раз вычисляется

Н0 = h

и находится соответствующий сервер SL и его хеш Н1, во второй и последующие итерации successor operation выполняется для Н1..Нк_1. Сложность поиска всех реплик при этом равна О (к log тп).

Помимо этого, отказоустойчивость может быть достигнута за счет хранения информации о виртуальных серверах в распределенной базе данных с репликацией данных на к серверах. При данном подходе, в случае отказа физического сервера процесс виртуального сенсора может быть перезапущен на одном из оставшихся в работе серверов, хранящих данные о нем. Восстановление потерянных реплик может осуществляться при помощи технологии read repair [13]. Данный подход значительно упрощается

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

Сравнительная таблица. В таблице приведены формулы для сравнения рассмотренных алгоритмов распределения виртуальных сенсоров между серверами системы.

Сравнение характеристик алгоритмов

Способ распределения виртуальных сенсоров Сложность определения местонахождения виртуального сенсора Среднее время задержки обработки данных Доля виртуальных сенсоров, которые необходимо перераспределить при добавлении/удалении сервера из системы

Round-robin 0(кК) с0 + сг1 * кК 1

Хеш-секционирование О (к) с0 + ch + chl * ^ п — 1 п

HRW hashing О (п log п). С0 + Ch * п + + cHRW1 *п* log(n) + + CHRW2 * ^ 1 п

Консистентное хеширование О (к log mri). c0 + ch + + cch * k * log(mn) 1 п

Обозначения, используемые в таблице:

ср - среднее время первичной обработки сообщения;

ct - среднее время передачи сообщения между серверами системы;

срг - среднее время обработки и сохранения сообщения;

с0 Ср "Ь с^ "Ь СрГ,

ch - среднее время вычисления хеш-функции; chl - среднее время доступа к массиву имен серверов; cHRW1 - временной коэффициент для сортировки таблицы; chrw2 ~ среднее время доступа к таблице с вычисленными значениями хеш-функции;

cch - временной коэффициент для выполнения successor operation. Из таблицы видно, что доля виртуальных сенсоров, которые необходимо перераспределить при добавлении/удалении сервера из системы, в алгоритмах консистентного хеширования и HRW hashing значительно меньше, чем при остальных подходах. Таким образом, учитывая требования к системе, можно заключить, что консистентное хеширование и HRW hashing лучше всего подходят для создания масштабируемой системы для

обработки данных от больших сенсорных сетей. Кроме того, при использовании консистентного хеширования среднее время задержки обработки данных меньше, чем при HRW hashing, что особенно сильно проявляется при большом значении параметра п.

Выводы

Были рассмотрены различные методы распределения виртуальных сенсоров между серверами в системе для обработки данных от больших сенсорных сетей на основе архитектуры Sensor-Cloud. Было установлено, что использование консистентного хеширования с выделением

/

772 — — 71

партиций для каждого сервера позволяет добиться практически равномерного распределения виртуальных сенсоров между серверами. Кроме того, данный подход позволяет горизонтально масштабировать систему, причем при добавлении/удалении сервера только

К

а = —

71

виртуальных сенсоров должны быть перераспределены между серверами. Отказоустойчивость может быть достигнута за счет репликации данных, что ведет к увеличению сложности поиска местонахождения виртуальных сенсоров. Для дальнейшей оценки применимости данного метода целесообразно рассмотреть возможность создания прототипа системы для обработки данных от больших сенсорных сетей и проведения для него нагрузочного тестирования.

Список литературы

1. Реализация экспериментально-моделирующего стенда для обработки и сохранения потоков данных от больших беспроводных сенсорных сетей / А.О. Армяков [и др.] // Труды 57-й Научной конференции МФТИ «Актуальные проблемы фундаментальных и прикладных наук в современном информационном обществе». 2014. С. 152 - 153.

2. Разработка и тестирование системы для обработки данных от больших беспроводных сенсорных сетей / А.О. Армяков [и др.] // Сборник конференции ВКО. 2015.

3. Wireless sensor network design for tactical military applications: remote large-scale environments / S.H. Lee [et al.] // Military Communications Conference, 2009. MILCOM 2009. IEEE, 2009. P. 1-7.

4. Alemdar H., Ersoy C. Wireless sensor networks for healthcare: A survey // Computer Networks. 2010. T. 54. №. 15. P. 2688 - 2710.

5. Processing of wearable sensor data on the cloud—a step towards scaling of continuous monitoring of health and well-being / B. Jit [et al.] // Proceedings of the 32nd Annual International Conference of the IEEE Engineering in Medicine and Biology Society (EMBC '10). 2010. P. 3860 - 3863.

353

6. Dynamo: amazon's highly available key-value store / G. Giuseppe DeCandia [et al.] // ACM SIGOPS operating systems review 41.6, 2007. P. 205220.

7. Klophaus R. Riak core: Building distributed applications without shared state // ACM SIGPLAN Commercial Users of Functional Programming. ACM, 2010. P. 14.

8. A Name-Based Mapping Scheme for Rendezvous / D. Thaler [et al.] // University of Michigan, Department of Electrical Engineering and Computer Science, Computer Science and Engineering Division, 1996. 32 p.

9. Bloom, Burton H. Space / time trade-offs in hash coding with allowable errors // Communications of the ACM 13.7. 1970. P. 422-426.

10. Rogaway P, Shrimpton T. Cryptographic hash-function basics: Definitions, implications, and separations for preimage resistance, second-preimage resistance, and collision resistance // International Workshop on Fast Software Encryption, 2004. P. 371-388.

11. Secure hash standard (SHS) // FIPS PUB. 180-4, 2012.

12. Roughgarden T., Valiant G. The Modern Algorithmic Toolbox Lecture #1: Introduction and Consistent Hashing, 2015. 12 p.

13. Consistency in the cloud: When money does matter! / H.E. Chihoub [et al.] // Cluster, Cloud and Grid Computing (CCGrid), 2013. 13th IEEE/ACM International Symposium on. IEEE 2013. IEEE, 2013. P. 352-359.

Ширко Антон Александрович, инженер, antonshirko@lfrtk.ru, Россия, Москва, Московский физико-технический институт (государственный университет),

Армяков Андрей Олегович, инженер, armyakov@,satissoft.ru, Россия, Москва, Московский физико-технический институт (государственный университет),

Байтин Андрей Александрович, мл. науч. сотрудник, baitin.aa@,mipt.ru, Россия, Москва, Московский физико-технический институт (государственный университет),

Нестеров Евгений Александрович, мл. науч. сотрудник, nesterov@satissoft. ru, Россия, Москва, Московский физико-технический институт (государственный университет),

Серебренников Константин Сергеевич, канд. техн. наук, вед. науч. сотрудник, serebrennikovasatissoft.ru, Россия, Москва, Московский физико-технический институт

DISTRIBUTION OF VIRTUAL SENSORS IN FAULT TOLERANT SYSTEM WITH SCALABILITY BUILD ON SENSOR-CLOUD ARCHITECTURE

A.A. Shirko, A.O. Armyakov, A.A. Baytin, E.A. Nesterov, K.S. Serebrennikov

354

The article is about exploring of different approaches of distributing virtual sensors on the cluster, build on Sensor-Cloud architecture. The requirements for system for processing data from large sensor networks are considered in the article. The complexity of locating virtual sensors, the average latency of data processing, and the proportion of virtual sensors that need to be redistributed when adding / removing a server from the system are calculated for each of distribution approaches. The authors conclude that using of consistent hashing allows for horizontal scaling, as well as the almost uniform distribution of virtual sensors across the servers of the system. In addition, this approach has a minimum average latency for data processing and the lowest complexity of locating virtual sensors.

Key words: Sensor-Cloud, virtual sensors, horizontal scalability, fault tolerance, consistent hashing, HRW hashing.

Shirko Anton Aleksandrovich, engineer, antonshirkoafrtk. ru, Russia, Moscow, Moscow Institute of Physics and Technology (State University),

Armyakov Andrey Ologovich, engineer, armyakov@satissoft. ru, Russia, Moscow, Moscow Institute of Physics and Technology (State University),

Baytin Andrey Alexandrovich, junior science researcher, baitin.aa@mipt.ru, Russia, Moscow, Moscow Institute of Physics and Technology (State University),

Nesterov Eugeniy Aleksandrovich, junior science researcher, nesterov@satissoft.ru, Russia, Moscow, Moscow Institute of Physics and Technology (State University),

Serebrennikov Konstantin Sergeevich, candidate of technical sciences, leading science researcher, serebrennikov@,satissoft. ru, Russia, Moscow, Moscow Institute of Physics and Technology