GAEからクラウドのデータストアにアクセスしてますが、GAE上にディプロイしてるサーブレットは、2つ平行で同時に走る事もあるのでしょうか?


例えば、
ServletインスタンスA
データストアの値をインクリメントして
 データストアに格納

ServletインスタンスB
データストアの値をデクリリメントして
 データストアに格納

という処理が並走してしまい、おかしな結果になる事はありえるのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/12/23 14:15:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント50pt

実装が分からないと何とも言えませんが、単純にshardを増やすだけで並列処理は実行できます。

また、配列処理が行われていなくても、1つのエンティティまたは 1つのエンティティグループが非常に頻繁に更新される場合、データストアの競合は起こります。
回避策については以下をご覧ください。

データストアの競合を回避する(GAE公式)

https://developers.google.com/appengine/articles/scaling/contention?hl=ja

id:taroe No.2

回答回数1099ベストアンサー獲得回数132

ポイント50pt

>2つ平行で同時に走る事もあるのでしょうか

ありえます。

>という処理が並走してしまい、おかしな結果になる事はありえるのでしょうか?

対策しないとそうなります。


synchronizedを使用して、非同期に同時に動作しないような仕組みにするとかそういうことを考えるべきでしょう。

http://java.akjava.com/library/guava_libraries/suppliers

id:mahosuto No.4

回答回数789ベストアンサー獲得回数28

ポイント50pt

並行的に受け付けているらしいです。

http://mergedoc.sourceforge.jp/tomcat-servletapi-5-ja/javax/servlet/http/HttpServlet.html

ほかの方が言っているとをり対策をしないとおかしなことになるようです。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません