2010-04-11 2 views
7

Мы хотим переписать базу данных kodingen.com с помощью Go, которая в настоящее время является Java, работает как демон с использованием jsvc.Портирование приложения Java для Go - любой совет?

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

Однако, задача довольно проста

  • команды чтения оболочки из базы данных MySQL
  • очереди и выполнять их параллельно
  • сохранить каждый выход оболочки в базу данных

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

Что бы вы посоветовали? C еще лучше?

+3

Эй вы, ребята, я слышал качки на TWIST? В любом случае, просто любопытно: что случилось с Java? И зачем идти? Просто любопытно. – cletus

+1

Да, я тот, кого избивали :) Но после этого мы сделали OAF в топ5 в Нью-Йорке, Джейсон и Тайлер были хороши. Во всяком случае, причина в том, что JVM ест 1,2 ГБ оперативной памяти, что в противном случае было бы демоном 100 кбит. Есть много других причин, таких как случайный сбой из-за apache exec commons и т. Д. Если у вас есть альтернативное решение, пожалуйста, поделитесь здесь, или вы также можете отправить мне письмо. – Devrim

+2

Также, почему Go, а не C? Потому что, наблюдая за технологическим разговором Go, Роб Пайк рассмотрел все причины, по которым я никогда не касался C, и сказал, что он их удалил. и добавил все то, что я хотел, было там на системном языке, он сказал, что добавил их. – Devrim

ответ

3

Мне нравится много ходить и внесли свой вклад в проект. Тем не менее, я думаю, вы должны рассмотреть несколько вещей о Go, прежде чем окунуться в него наверняка.

  • Go по-прежнему является нестабильным языком. Его синтаксис, функции и пакеты могут быть изменены. Убедитесь, что вы готовы идти в ногу с этим, если вы решите использовать его.
  • Сбор мусора Go, по-прежнему незрелый. Использование памяти должно быть лучше, чем 1,2 ГБ, но, вероятно, оно не приблизит вас к уровням C.
  • Нет базовой поддержки MySQL (или любой другой базы данных). Существует несколько неофициальных проектов пакетов MySQL. Самые последние обновленные: GoMySQL и Go-MySQL-Client-Library. Я ничего не знаю о том, насколько они полны или стабильны.

Что касается очередей и выполнения параллельно, я думаю, что это то, что Go сможет сделать довольно хорошо. Вероятно, вы используете пакет exec для выполнения и распараллеливания с goroutines.

1

Я согласен с @Chickencha

На данный момент у меня нет никаких планов, чтобы обновить мой [1]: http://github.com/chbfiv/libmysqlgo "libmysqlgo" проект. Взносы приветствуются, но я слишком занят. Я бы рекомендовал использовать более активные проекты mysql go.

1

С идти langugage FAQ:

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

Как я знаю, сборщик мусора Go и планировщик еще не готов. И его компилятор недостаточно оптимизирован, во всяком случае, C компилятор был улучшен в течение 20 лет. Если вы хотите использовать его на производственной площадке, то лучше ждать зрелости.

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

EDIT: Прежде чем перейти на другой язык, как насчет проведения экспериментов с предстоящим JDK 7. В сборке мусора есть некоторые улучшения. Вы можете проверить, лучше ли управление памятью в вашем случае.

+0

Спасибо Стивен, JDK7 выглядит хорошо, но нам нужен демон linux, а не программа, работающая в закрытой среде (jvm) и взаимодействующая с системой через неизвестные. Чтобы проиллюстрировать мою мысль, представьте себе, насколько абсурдным было бы, если бы apache был написан на Java. – Devrim

1

Я думаю, что с недавним добавлением паники/восстановления, Go начинает стать жизнеспособным вариантом для веб-сайтов. Я использовал несколько простых приложений для facebook с помощью Go, но это разочаровывает то, что приложение полностью исчезло из-за ошибки ключа карты или исключения из null-указателя. С паникой/восстановлением можно будет управлять сбоями.

О ваших требованиях - это должно быть хорошо для команд mysql и shell. Но будьте готовы исправить некоторые библиотеки :)

Смежные вопросы