7
votes

Portage d'une application Java pour aller - des conseils?

Nous voulons réécrire Kodingen.com Backend avec Go qui est actuellement Java, en cours d'exécution comme Daemon avec JSVC .

Je n'ai jamais touché de C dans ma vie, je n'ai que vécu à Java alors je Je ne sais pas si c'est quelque chose que je devrais même commencer.

Cependant, la tâche est assez simple

  • Lire les commandes Shell à partir de la base de données MySQL
  • la file d'attente et les exécuter en parallèle
  • Enregistrez chaque sortie shell dans la base de données

    C'est ça. De sorte que ces besoins simples me donnent espoir que je peux commencer en utilisant cette langue merveilleuse.

    Que feriez-vous conseiller? Est toujours meilleur?


8 commentaires

Hey es-tu les gars que j'ai entendu parler de torsion? Quoi qu'il en soit, juste curieux: qu'est-ce qui ne va pas avec Java? Et pourquoi aller? Juste curieux.


Oui, je suis celui qui a été battu :) Mais nous l'avons fait à OAF dans Top5 à New York, juste après cela, Jason et Tyler étaient agréables. Quoi qu'il en soit, la raison est que JVM mange 1,2 Go de RAM ce qui serait autrement de 100k C démon. Il existe de nombreuses autres raisons telles que des crash aléatoires dus à Apache Exec Commons, etc. Si vous avez une solution alternative, veuillez partager ici ou que vous pouvez me mailer aussi ..


Aussi, pourquoi aller et non c? Parce que, en regardant la discussion de Tech de Go, Rob Pike couvrait toutes les raisons pour lesquelles je n'ai jamais touché C et dit-il les enlevé. Et ajouté tout ce que j'ai souhaité était là dans une langue système, il a dit qu'il les a ajoutés.


Félicitations pour la NYC OAF. Je n'avais pas entendu ça. 1.2 Go est vraiment élevé. Cela me fait penser que vous fuyez la mémoire quelque part. C'est juste pour courir des commandes shell ?? Quelque chose ne va pas si oui. Est-ce pour la compilation de code? Démarrer / arrêter les serveurs ou les instances EC2 ou quelque chose?


Je ne peux pas vous dire grand chose ici, mais fondamentalement, il vérifie la charge du serveur en fonction de celle des actions. cette partie est bien. Mais exécuter des commandes Shell de JVM est un cauchemar ... Avez-vous eu votre JSVC vous-même? Si oui, comment était votre expérience? Pourriez-vous l'obtenir jusqu'à 50K 100K taille?


Je n'ai utilisé que le wrapper de service Java, car il s'agit d'un moyen assez pratique de définir des options JVM et de redémarrer le serveur lorsqu'il se bloque. Je n'ai jamais utilisé JSVC. Je suis vraiment surpris de l'utilisation de la mémoire. La plupart des utilisations de la mémoire doivent être transitoires en ce sens qu'un processus est fourchu, il fonctionne, il sort. Je ne peux pas imaginer pourquoi le processus du contrôleur deviendrait jusqu'à> 1 Go.


BTW Je ne discute pas pour ou contre Go. Je ne connais pas vraiment beaucoup de choses sur Go, mais Java aura beaucoup plus grand soutien de la bibliothèque et je suspect (mais je ne sais pas pour certains) que vous avez une question qui peut être directement abordée. Je n'entres pas sur une empreinte 100 000, mais vous devriez obtenir beaucoup moins (par ordre de magnitude) que 1,2 Go. BTW N'hésitez pas à me contacter (suivez le lien de mon profil).


@ecounisys oui c'est vraiment. Faites une recherche sur Google Techtalk Rob Pike et le voir pour vous-même.


4 Réponses :


3
votes

J'aime aller beaucoup aller et avoir apporté des contributions au projet. Cependant, je pense que vous devriez envisager quelques choses sur Go avant de m'installer à coup sûr.

  • Go est toujours une langue instable. Sa syntaxe, ses fonctionnalités et ses packages sont tous sujets à changement. Assurez-vous que vous êtes prêt à suivre cela si vous choisissez de l'utiliser.
  • La collection des ordures d'aller est toujours immature. Votre utilisation de la mémoire devrait être meilleure que 1,2 Go, mais elle ne vous mènera probablement pas près des niveaux C.
  • Il n'y a pas de support de base pour MySQL (ou toute autre base de données). Il existe plusieurs projets de forfait MySQL non officiels. Les plus récemment mis à jour sont GOMYSQL et GO-MySQL-Client-Bibliothèque . Je ne sais rien à quel point ils sont complets ou stables.

    Quant à la mise en file d'attente et en exécutant en parallèle, je pense que c'est quelque chose à faire pourra bien faire. Vous utiliserez probablement le EXEC Package à exécuter et à paralléliser avec goroutines.


0 commentaires

1
votes

Je suis d'accord avec @chickencha

À ce stade, je n'ai aucune intention de mettre à jour mon [1]: http://github.com/chbfiv / libmysqlgo projet "libmysqlgo". Les contributions sont les bienvenues, mais je suis trop occupé ATM. Je recommanderais d'utiliser des projets MySQL Go plus actifs.


0 commentaires

1
votes

de la FAQ de Go Langugage:

Le projet Go a été conçu pour faire Il est plus facile d'écrire le genre de serveurs et d'autres logiciels Google utilise en interne, mais la mise en œuvre n'est pas assez mature encore pour utilisation de la production à grande échelle.

Comme je le sais, le collectionneur de déchets et le planificateur d'aller est pas encore prêt. Et son compilateur n'est pas assez optimisé, de toute façon, le compilateur C a été amélioré depuis 20 ans. Si vous souhaitez l'utiliser sur un site de production, vous attendez d'être aussi mature, c'est mieux.

Mais cela ne veut pas dire aller n'est pas une bonne langue à apprendre. En fait, je l'utilise avec plaisir pour développer des utilitaires utiles.

Edit: Avant de passer à une autre langue, que diriez-vous de faire des expériences avec le prochain JDK 7. Il y a quelques améliorations dans la collecte des ordures. Vous pouvez vérifier que la gestion de la mémoire est meilleure dans votre cas.


1 commentaires

Merci Stephen, JDK7 a l'air bien, mais ce dont nous avons besoin, c'est qu'un démon Linux n'est pas un programme qui fonctionne dans un environnement fermé (JVM) et des interfaces avec le système à travers certaines inconnues. Pour illustrer mon point, imaginez à quel point ce serait absurde si Apache était écrit en Java.



1
votes

Je pense que avec l'ajout récent de panique / récupération, commence à devenir une option viable pour les backends de site Web. J'ai exécuté quelques applications simples Facebook à partir, mais il est frustrant que l'application entière diminue pour quelque chose comme une erreur de clé de carte ou une exception de pointeur Null. Avec panique / récupération, il sera possible de gérer des accidents.

À propos de vos besoins - Cela devrait être bien pour les commandes MySQL et Shell. Mais soyez prêt à corriger certaines bibliothèques :)


0 commentaires