2010-02-01 6 views
-1

Pour l'un de nos projets, nous avons besoin de tirer d'énormes données sur les stocks en temps réel à partir de 4 serveurs distants sur deux pays. Le processus trivial ici, vérifiez les sources pour un intervalle régulier et enregistrez la mise à jour à la base de données.Quelle est la meilleure technologie possible pour tirer des données énormes de 4 serveurs distants

Mais comme ce sont les données de stock en temps réel de plus de 1000 entreprises, je dois tirer chaque seconde, ce qui n'est pas bon en cas de mémoire, la bande passante je pense.

S'il vous plaît me donner la suggestion sur laquelle la technologie/plateforme [Nous sommes flexibles ici. PHP, Python, Java, PERL - n'importe lequel d'entre eux sera OK pour nous] nous devrions choisir, cela peut être réalisé facilement et avec de meilleures performances.

Répondre

1

Il est peu probable qu'une technologie particulière soit meilleure sur toutes les autres de manière significative, ce qui en fait un choix clair. Vous devez le concevoir de manière appropriée. Le langage que vous utiliserez aura peu de conséquences.

En outre, votre question est vraiment impossible sans avoir accès à plus d'informations que ce que vous avez fourni dans votre question (et que vous ne pouvez pas fournir ici).

+0

@Moron, pensez à changer ce nom ;-D – pavium

+0

Si je le fais, tous les commentaires @Moron que je recevrais deviendront soudain impolis :-) –

2

Si vous voulez, d'énormes données en temps réel, les chances sont que le protocole compte beaucoup plus que la langue. Cependant, voici quelques aspects que vous pourriez souhaiter prendre en compte:

  • HTTP n'a jamais été destiné à d'énormes données ou en temps réel, donc si vous pouvez utiliser quelque chose de plus approprié, vous êtes probablement mieux avec un autre protocole - du haut de ma tête et si je me souviens bien, FTP est un exemple de protocole plus favorable à la bande passante que HTTP, bien qu'il ne soit certainement pas le meilleur
  • étant donné le réglage de traction permanente, vous êtes probablement mieux dans un langage qui contient des primitives pour les E/S asynchrones et est robuste par rapport aux threads.

personnellement je vais pour Erlang: intégré dans les protocoles à grande vitesse pour la distribution de données, tout asynchrone et probablement la meilleure mise en œuvre de la distribution et de la concurrence de ce côté du monde universitaire.

Si vous êtes limité à la liste des langues que vous avez fournies, je vais pour Java. L'E/S est un peu compliquée mais plutôt puissante, la bibliothèque contient tellement d'objets qu'elle doit avoir ce dont vous avez besoin quelque part, elle permet des E/S asynchrones et gère assez bien les threads.

Cela dit, je concentre plus sur le protocole que la langue. Peu importe la langue que vous utilisez, il y a forcément une bibliothèque pour votre protocole.

+0

Merci beaucoup. –

1

Lancez quelques noms pour pouvoir explorer: HTTP, XMPP, AMQP, ZeroMQ. Pour ce qui est de la mise en œuvre, les éléments codés dans Erlang qui ont un support de cluster pourraient bien convenir.

0

Comme mentionné, le protocole est plus important que la technologie. En fonction de mon expérience, vous allez probablement envoyer des données très similaires à des intervalles rapides (éventuellement non standard) afin que vous puissiez, avec un peu d'effort, développer un schéma de données/contenu léger et envoyer tout en binaire brut. S'il vous plaît évitez JSON/XML pour vos données, il est trop gros et trop lent pour ne pas trop bénéficier, sauf si vous avez beaucoup de ressources et de bande passante.

Choisissez un protocole qui va être rapide en faisant ainsi (je ne peux pas offrir beaucoup de suggestions ici, ne pas faire HTTP cependant).

Questions connexes