АНТОН КАРЕВ, инженер кибербезопасности, vedacoder@mail.ru
Многопоточный клиент-сервер для распределенных вычислений
Механизм распределенных вычислений, способный выжать максимум из доступной вычислительной инфраструктуры, всегда в цене
Давно минули те времена, когда вычислительные задачи решались на одном – пусть и очень мощном – компьютере. Сейчас в тренде – распределенные вычисления. Такие вычисления используются для решения самых разнообразных задач: как сугубо теоретических, так и в высшей степени практических. Какая бы вычислительная задача ни стояла, начиная с поиска сверхбольших простых чисел и заканчивая майнингом криптовалюты, сегодня балом правят именно распределенные вычисления.
Причем такое «цифровое сотрудничество» не ограничивается одними лишь компьютерами. Для большей эффективности распределенных вычислений иногда задействуется даже дополнительное узкоспециализированное оборудование. Например, в случае майнинга криптовалюты используются ASIC-модули, которые ничего, кроме как добывать криптовалюту, в принципе делать не умеют. Преимущество подобных узкоспециализированных модулей в том, что при решении конкретной узкой задачи они способны дать серьезную фору даже очень производительному компьютеру, потребляя при этом куда меньшую мощность.
Так или иначе, из чего бы ни состояла вычислительная инфраструктура – будь то просто компьютеры или же их симбиоз с дополнительными узкоспециализированными модулями, – определяющую роль в успехе распределенных вычислений играет софт, способный грамотно объединить все доступные вычислительные ресурсы; софт, способный выжать израспределенной системы максимум ее возможностей при минимуме накладных расходов. Представленная ниже модель многопоточного клиент-сервера – это скромная попытка удовлетворить спрос на подобный софт. Практическая ценность данной модели весьма разнообразна, однако предложенная реализация абстрагирована от каких-либо специализированных задач. Полезная нагрузка в данном случае заменена функцией Sleep, а исходные данные для вычислений – случайным числом.
Предполагается, что читатель уже знаком с основами программирования сокетов и основами синхронизации при программировании многопоточных систем. Поэтому мы не будем останавливаться на описании работы этих инструментов, а сосредоточим свое внимание на концептуальных моментах.
Статью целиком читайте в журнале «Системный администратор», №01-02 за 2016 г. на страницах 93-95.
PDF-версию данного номера можно приобрести в нашем магазине.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|