Язык программирования для выбора для реализации алгоритмов распределенной передачи сообщений

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

  • Протокол сплетни
  • Несколько паксо
  • Последовательное хеширование

Мой интерес здесь к этим алгоритмам. Я в основном ищу язык программирования, который позволил бы мне написать эти алгоритмы быстро и глубоко понять эти алгоритмы.

Какой язык мне выбрать? Ява, Скала, Эрланг или что-нибудь еще.

В настоящее время я знаю Java и C++.

4 ответа

Решение

Вы можете попробовать реализовать протоколы в Erlang.

  • Процесс общения очень элегантно запекается на языке и виртуальной машине. Асинхронная передача сообщений между двумя процессами elrang либо в одной виртуальной машине, либо между виртуальными машинами в семантически эквивалентном.
  • Кодирование в аспектах отказоустойчивости / логики повторов и т. Д. Алгоритма является легким делом на эрланге. Инкапсулируйте все в легковесные процессы и используйте специальные процессы, называемые супервизорами, чтобы перезапустить их.
  • Сериализация объектов Erlang действительно проста. Вам не нужно явно кодировать логику сериализации (например, реализовывать Serializable в Java).
  • Дистрибутив Erlang поставляется с модулем rpc, который позволяет вам вызывать функции на удаленных виртуальных машинах.
  • Оболочка Эльранга - это настоящий богослужитель. Вы можете прикрепить оболочку к любой удаленной виртуальной машине. Оболочка позволяет вам профилировать внутренние таблицы / структуры данных. Виртуальная машина также обладает чрезвычайно сложными функциями отладки и трассировки, которые доступны вам через оболочку.
  • Вы можете взглянуть на Riak, хранилище данных NoSQL с открытым исходным кодом, написанное на Erlang по образцу Amazon Dynamo. Он реализует как согласованное хеширование, так и протокол Gossip.

О да! Вы можете начать программирование Erlang, посмотрев на них:

  1. Выучите немного Erlang для хорошего блага
  2. Erlang Book Часть 1
  3. Учебник по программированию Эрланга Ориелли (Франческо Чезарини и Саймон Томпсон)
  4. Учебник по программированию на эрланге Джо Армстронга

Эти ссылки выше предоставят вам ресурсы для всех программ Erlang, которые вам могут понадобиться. Однако я предлагаю вам начать с Joe Armstrongs Programming Erlang Text Bookи, как вы читаете, используйте веб-сайт: Learn you some erlang for great good (ссылка № 1 выше) в качестве ссылки для дальнейшего понимания структур данных.

Вы можете скачать Erlang здесь: Erlang Скачать официальную страницу.

Вам могут понадобиться другие ссылки и ресурсы (приложения, библиотеки и т. Д.), Большинство из которых проиндексированы здесь: веб-сайт Erlang/OTP .com.

Иногда вы всегда можете задать любой вопрос о Stackru здесь, или вы можете искать инструменты и библиотеки из sourceforge.

Все эти протоколы уже были реализованы в различных проектах Erlang. См. Mnesia, Riak, CouchDB, Scalaris для получения более подробной информации (не все протоколы в каждом проекте). Я не могу представить более дружественную среду для такого рода протокольных экспериментов, чем Эрланг.

Вы определились со своей библиотекой для передачи сообщений? Если вы заинтересованы в MPI, вы можете использовать как версии Java, так и версии C++.

MPI выполняет для вас множество заданий, таких как рассылка сообщений и получение ответов, что важно для ваших алгоритмов. В результате я рекомендую вам найти подходящую версию MPI для C++ или Java и начать работу.

Взгляни на:

Другие вопросы по тегам