среда, 3 февраля 2016 г.

[prog.flame] Творческая переработка дурева про веб-хостинг на "Малинках"

Высказанные некоторое время назад тяпничные бредни про хостинг веб-магазинчиков на ферме из кучи Raspberry Pi вызвали довольно большой интерес :) А раз так, можно попробовать пойти еще дальше. И заглянуть в несколько других ниш, в которых применение таких одноплатных компьютеров, как Raspberry Pi, C.H.I.P или Orange Pi может иметь смысл. Ну или об этом хотя бы можно помечтать :)

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

А теперь представим, что кто-то из производителей серверного железа додумался строить гибридные системы: парочка мощных процессоров (типа средней руки Intel-ов или топовых многоядерных ARM-ов) со своей собственной RAM и туева хуча одноплатных слабеньких микрокомпьютеров класса Rapsberry Pi B+ (т.е. 2-4-х ядерный ARM на небольшой тактовой частоте + 2-4Gb RAM).

Мощные узлы в таком гибридном сервере будут управлять кластером из слабых одноплатных компьютеров, плюс на мощных узлах будут крутится load-balancer-ы и другие задачи, требующие высокой производительности. А на одноплатниках будет выполняться бизнес-логика по обработке отдельных транзакций.

Вычислительная мощь Raspberry Pi, конечно, не идет ни в какое сравнение с мощностью современных Core i7, не говоря уже про Xeon-ы. Но каждый Raspberry Pi вполне может держать десятк-другой транзакций. Т.к. там особо-то ничего и не требуется: получил запрос, проверил параметры, сделал запрос к подсистеме S1, получил ответ, проанализировал, сделал запрос к подсистеме S2, получил ответ, проанализировал... Т.е. мощи одного Raspberry Pi вполне может хватить, чтобы обрабатывать 20 транзнакций. И если в гибридном сервере стоит всего 10 одноплатников, это означает уже производительность в 200 транзакций. А если 100 одноплатников -- то в 2000 транзакций. Что уже совсем не мало.

Ну а если обработку транзакций писать не кривыми руками на Python-е, то данные показатели можно увеличить и еще больше. При этом стоимость сотни одноплатников типа Raspberry Pi будет составлять ~2.5k USD, что сравнимо со стоимостью не очень продвинутого сервера, на котором не так-то и просто будет выдать те самые 2000 транзакций.

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

Еще подобные гибридные сервера могут показать себя в такой области, как хостинги картинок и видео. Какой-нибудь ВКонтактик или Одноклассники засасывают в себя сотни тысяч фотографий и тысячи видеороликов ежедневно (если не ежечасно). Все это дело нужно сначала предварительно обработать (перегнать в единый формат), а затем отдавать пользователям в удобном для пользователей виде.

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


Еще одна интересная тема -- это разработка отказоустойчивых вычислительных систем.

Была в свое время такая компания -- Tandem (в последствии купленная HP и известная теперь под названием HP NonStop). Делала сервера высокой надежности. Идея состояла в полном дублировании узлов: два блока питания, два банка памяти, два жестких диска, два процессора. Все это работало в параллель.

Фокус в том, что система снабжалась специальными контроллерами, которые проверяли идентичность результатов параллельно работающих узлов. Например, если процессор1 после выполнения очередной инструкции записал в память по адресу A значение B и процессор2 сделал тоже самое, то все нормально, работа продолжается. Если же появляется несоответствие, то вычислительный узел объявляется сбойным. А так как в системе должно быть не менее двух узлов, то задачи со сбойного узла перемещаются на выжившие узлы.

Сервера Tandem стоили весьма не малых денег. Когда я столкнулся с этой темой в 2004-ом году, то вроде как самый слабенький сервер с двумя вычислительными узлами и минимумом памяти стоил где-то между 75k и 100k USD. Поэтому такие вещи позволяли себе покупать только "денежные" заказчики, вроде крупнейших мировых бирж и банков.

Почему-то мне кажется, что идеи Tandem-ов можно повторить с использованием одноплатных компьютеров, вроде Raspberry Pi или Orange Pi. Только результирующее решение будет стоить гораздо дешевле.

Хотя тут еще большой вопрос, сможет ли вся эта кухня работать на ОС общего назначения, вроде Linux или какой-то из BSD. Ведь для Tandem-а была разработана специализированная NonStop OS. И если приложение хотело использовать возможности этой NonStop OS, ему нужно было задействовать специфический API. Впрочем, это уже совсем другая история :)


Пора выделять сухой остаток. Есть ощущение, что эксперименты вокруг ARM-овских процессоров могут серьезно изменить ситуацию на рынке серверов. Но не только. Разработка софта в определенных прикладных областях так же может претерпеть изменения. Т.к. важность горизонтального масштабирования станет еще выше. А для этого может потребоваться пересмотреть подходы к разработке ПО. Да-да, нативные платформы и модель акторов здесь смогут рулить и педалить ;)

Комментариев нет: