Язык программирования для выбора для реализации алгоритмов распределенной передачи сообщений
По сути, я хотел бы реализовать следующие алгоритмы и проанализировать, как система, построенная с использованием этих алгоритмов, ведет себя в различных условиях.
- Протокол сплетни
- Несколько паксо
- Последовательное хеширование
Мой интерес здесь к этим алгоритмам. Я в основном ищу язык программирования, который позволил бы мне написать эти алгоритмы быстро и глубоко понять эти алгоритмы.
Какой язык мне выбрать? Ява, Скала, Эрланг или что-нибудь еще.
В настоящее время я знаю Java и C++.
4 ответа
Вы можете попробовать реализовать протоколы в Erlang.
- Процесс общения очень элегантно запекается на языке и виртуальной машине. Асинхронная передача сообщений между двумя процессами elrang либо в одной виртуальной машине, либо между виртуальными машинами в семантически эквивалентном.
- Кодирование в аспектах отказоустойчивости / логики повторов и т. Д. Алгоритма является легким делом на эрланге. Инкапсулируйте все в легковесные процессы и используйте специальные процессы, называемые супервизорами, чтобы перезапустить их.
- Сериализация объектов Erlang действительно проста. Вам не нужно явно кодировать логику сериализации (например, реализовывать Serializable в Java).
- Дистрибутив Erlang поставляется с модулем rpc, который позволяет вам вызывать функции на удаленных виртуальных машинах.
- Оболочка Эльранга - это настоящий богослужитель. Вы можете прикрепить оболочку к любой удаленной виртуальной машине. Оболочка позволяет вам профилировать внутренние таблицы / структуры данных. Виртуальная машина также обладает чрезвычайно сложными функциями отладки и трассировки, которые доступны вам через оболочку.
- Вы можете взглянуть на Riak, хранилище данных NoSQL с открытым исходным кодом, написанное на Erlang по образцу Amazon Dynamo. Он реализует как согласованное хеширование, так и протокол Gossip.
О да! Вы можете начать программирование Erlang, посмотрев на них:
- Выучите немного Erlang для хорошего блага
- Erlang Book Часть 1
- Учебник по программированию Эрланга Ориелли (Франческо Чезарини и Саймон Томпсон)
- Учебник по программированию на эрланге Джо Армстронга
Эти ссылки выше предоставят вам ресурсы для всех программ 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 и начать работу.
Взгляни на: