Ich habe verschiedene Dinge recherchiert und diskutiert, wenn ich über die Compute Engine auf den Datenspeicher zugreifen möchte, also werde ich ein Protokoll darüber führen.
Derzeit gibt es ungefähr zwei Möglichkeiten:
Es gibt eine Cloud Datastore-API, aber warum nicht die App Engine dazwischen stellen? Es scheint gedacht zu sein. Aufgrund von Umständen wie der Tatsache, dass die Cloud Datastore-API nicht gut genug ist und der Zugriff von der App Engine auf den Datenspeicher schnell ist, habe ich die App Engine dazwischen gefunden. Es war besser, es zu kneifen oder so etwas.
Das ist aber auch eine alte Geschichte. Ich weiß nicht, was jetzt los ist! Also habe ich verschiedene Dinge ausprobiert.
Ich habe versucht, durch einen einfachen Vorgang des Abrufs einer Entität durch Angabe des Schlüssels zu vergleichen. Da wir es nicht genau gemessen haben, denken Sie bitte, dass jeder Wert um etwa 20 bis 30 ms abweichen kann.
Als ich es von meinem Macbook Pro als Ausgangspunkt aus ausprobierte, waren die Ergebnisse wie folgt.
Cloud Datastore API | Über App Engine | Über App Engine(Mit Memcache) | |
---|---|---|---|
Local | Über 1000 ms | Über 200 ms | Über 170 ms |
Zu diesem Zeitpunkt war ich völlig verzweifelt, dass die Cloud Datastore-API nicht mehr gut war, aber mein Senior in der Firma war neben mir und sagte "Es tut mir leid!". Also ging ich in die US-Region [^ 1], um zu rechnen. Ich habe eine Instanz von Engine erstellt und mein Bestes versucht. Das Ergebnis ist hier.
[^ 1]: Der Datenspeicher lebt in den USA und in der EU. Erstellen wir also eine Instanz in der Nähe
Cloud Datastore API | Über App Engine | Über App Engine(Mit Memcache) | |
---|---|---|---|
GCE (US) | 50~Über 200 ms | 45~Über 50 ms | 15~Über 20 ms |
Es ist ein wenig schlampig, weil die Zeit kurz ist und es schwierig wird, es zu messen, aber ich bin der Meinung, dass die Geschwindigkeit der Cloud Datastore-API irgendwie akzeptabel geworden ist.
Die Geschwindigkeit der Cloud Datastore-API ist jedoch nicht stabil, und wenn sie schnell ist, ist sie mit der über App Engine vergleichbar. Wenn sie jedoch langsam ist, kann sie etwa 200 ms dauern, sodass ich den Grund dafür nicht verstehe. Es war. Wenn Memcache über App Engine funktioniert, spart es fast die gesamte Zeit (ca. 30 ms), um über App Engine auf den Datenspeicher zuzugreifen, sodass es schnell geht.
Wenn Sie viele zwischenspeicherbare Anforderungen haben, kann memcache viel Arbeit leisten. Es dauerte ungefähr 30 ms, um die Daten von der App Engine abzurufen, aber es dauerte nur 2 ms, um sie aus dem Cache abzurufen. Es ist auch vorteilhaft, dass keine Lesebetriebsgebühr anfällt.
Wenn Sie in der Stapelverarbeitung viele Daten parallel verarbeiten möchten, kostet dies etwas, da Sie eine Instanz von App Engine erweitern.
Die Implementierung ist einfach und für eine App Engine-Instanz fallen natürlich keine Gebühren an. Der Zugriff über die Compute Engine erfolgt möglicherweise so schnell wie über die App Engine.
Es gibt keinen Memcache. gcloud-py Documentation reicht nicht aus, um zu glauben, dass dies der Anfang des Universums ist [^ 2].
[^ 2]: Wenn Sie genau hinschauen, sind die meisten Elemente Links zum Quellcode.
Wenn Sie nur an die Geschwindigkeit denken, ist es vorerst etwas schneller, App Engine zu durchlaufen. In einigen Situationen scheint es jedoch auch eine Option zu sein, die Cloud Datastore-API direkt von Compute Engine aus zu aktivieren. ..
Wenn der Memcache nicht funktioniert, z. B. die Eingabe von Daten in einem Stapelverarbeitungsprozess, scheint es einfacher zu implementieren und kostengünstiger zu sein, den Cloud-Datenspeicher direkt aufzurufen.
Die Installation von gcloud-python erfolgt grundsätzlich
pip install gcloud
Das ist in Ordnung, aber es scheint eine neuere im Hauptzweig von GitHub zu geben.
Wenn Sie sich Code im Hauptzweig ansehen, verwenden Sie ihn, wenn es einen solchen gRPC gibt Eine neue Beschreibung wie diese wurde hinzugefügt [^ 3].
[^ 3]: Ab dem 28.08.2016 wurde diese Funktion in Version 0.18.1, die mit pip geliefert wird, nicht implementiert.
damit
pip install git+https://github.com/GoogleCloudPlatform/gcloud-python
Ich habe auch gcloud-python ausprobiert, das direkt vom Hauptzweig von GitHub installiert wurde, und festgestellt, dass es bis zu 20 ms schneller war und ziemlich gut mit via App Engine übereinstimmt.
Ich hatte das Gefühl, dass die Geschwindigkeit nicht wie üblich sehr stabil war, aber ich habe das Gefühl, dass ich mich sehr bemühe, die Leistung zu verbessern, und freue mich darauf.
Recommended Posts