2014-09-04 7 views
0

J'ai une application GAE Golang qui devrait être capable de gérer des centaines de requêtes simultanées, et pour chaque requête, je travaille sur l'entrée puis je la stocke dans le datastore . En utilisant la file d'attente de tâches (appengine/delay lib), j'obtiens de très bonnes performances, mais il semble toujours très inefficace d'effectuer des insertions à une seule ligne pour chaque requête (même si les insertions sont différées).Golang sur le magasin de données App Engine - Utilisation de PutMulti pour améliorer les performances

Si ce n'était pas un moteur d'application, j'ajouterais probablement la sortie d'un fichier, et de temps en temps je chargerais le fichier dans la base de données en utilisant un travail cron/un autre type de service planifié.

Mes questions sont les suivantes:

  1. Y at-il un système équivalent, je peux mettre en œuvre sur le moteur d'application? J'étais pensant - peut-être que je devrais écrire certaines des lignes à memecache, et alors toutes les deux secondes, je vais charger en vrac toutes les lignes de là et purger le cache.
  2. Est-ce vraiment nécessaire? Le datastore peut-il gérer des milliers d'écritures simultanées - une demande d'écriture par http que mon application obtient?

Répondre

1

Cela dépend vraiment de votre configuration. Utilisez-vous des requêtes ancêtres? Si oui, vous êtes limité à 1 écriture par seconde par ancêtre (et tous les enfants, petits enfants). Le magasin de données a une file d'attente naturelle, donc si vous essayez d'écrire trop rapidement, il sera mis en file d'attente. Cela ne devient un problème que si vous écrivez trop rapidement. Vous pouvez lire quelques bonnes pratiques here.

Si vous pensez que vous allez dépasser cette limite, utilisez un pull queues avec async multi puts. Vous mettriez chaque entité dans la file d'attente. Avec un module sauvegardé (délais d'attente de 10 minutes), vous pouvez saisir les entrées par lots (10-50-100 ...) et y faire un put_async par lots. Il va gérer les mettre à la bonne vitesse. Pendant que vous travaillez, vous pouvez faire la queue pour le lot suivant. Juste se méfier du temps mort.

Questions connexes