Я студентка факультета компьютерных наук, в настоящее время я учусь на последнем курсе. Как и мой последний проект года, я думаю о создании математической вычислительной среды, подобной matlab , в качестве SAAS , которая поддерживает матричные манипуляции, отображение функций и данных, операции обработки изображений и т. Д. Проект будет создан в Java + Scala. Scala будет использоваться для DSL приложения. Остальная часть приложения будет запрограммирована на Java.
Я думал о реализации этой системы на движке приложений Google, чтобы мы могли распараллеливать различные алгоритмы на нескольких серверах и, таким образом, получать более быстрые результаты. Однако у меня нет никакого предшествующего опыта веб-разработки (за исключением некоторых простых сайтов на PHP).
Итак, у меня возникли следующие ключевые вопросы:
Я знаю, что вопрос очень субъективный, но я все же прошу вас всех не закрыть его, так как я очень запутался в отношении своего проекта и мне нужен совет специалиста.
Любой гепатит был бы очень признателен!
Спасибо!
Это абсолютно логично, и есть два существующих проекта, которые запускают числовые процедуры в облаке.
Biocep (бесплатно, запускает R & Scilab на EC2 или Eucalyptus) и Monkey Analytics (коммерческий, запускает R, Octave или Python на EC2).
Примерно полгода назад я задумал сделать такую штуку.
Мысли закончились ничем, кроме кода на http://code.google.com/p/metaplasm ...
На самом деле, сложность GAE заключается в том, что вычисления должны быть нарезанный на тридцатисекундные срезы без разделяемой памяти (только кэш памяти и база данных). После того, как вы это сделаете, все остальное пройдет гладко: -)
У вас могут возникнуть проблемы с этим типом сервиса в GAE, поскольку он довольно ограничивает то, что вам разрешено делать в песочнице. Из Документов GAE
Приложение App Engine не может:
Из-за этого может быть сложно предлагать типы услуг, которые вы описываете. Масштабирование, которое предлагает GAE, позволяет увеличить количество запросов, которые вы можете обрабатывать, но на самом деле не предлагает вам хороших инструментов для масштабирования ресурсов ЦП для одного запроса.
Кажется, идея для проекта интересная, удачи.
App Engine, вероятно, не подходит для этого. App Engine ориентирован на веб-приложения, в которых каждый запрос выполняет небольшой объем вычислений, но вам необходимо обслуживать много из них - большинство традиционных веб-приложений, таких как сайты социальных сетей, блоги, веб-игры и т. Д. и так далее и тому подобное. Он не нацелен на службы, которым необходимо выполнять интенсивные вычисления для одного пользовательского запроса, и, хотя у него есть службы для параллельной фоновой обработки, они асинхронны, что, вероятно, также не то, что вы хотите для вашего варианта использования.
Я бы порекомендовал взглянуть на другие облачные среды, такие как Amazon EC2, на предмет необходимой вам вычислительной мощности и параллелизма. Тем не менее, App Engine по-прежнему будет выполнять замечательную работу в качестве интерфейса для такой службы! Например, вы можете использовать приложение App Engine для управления заданиями, отправки их на серверные ВМ и включения и выключения экземпляров виртуальных машин в зависимости от нагрузки.
Почему бы не попробовать распределенную вычислительную систему с открытым исходным кодом BOINC?
Она позволяет использовать несколько платформ, несколько сред хостинга и услуги всех видов численных вычислений рабочие места в зависимости от параллельных сред.
Более того, Вам не нужны какие-либо знания в области веб-разработки. Вам нужно просто создать новый проект в BOINC и попробовать запустить его в существующей среде добровольных вычислений.
Для меня нет смысла писать остальное на Java. Я думаю, что именно здесь Scala будет иметь наибольшее значение.