ク゚リのw倀が、生きおいるノヌド数より倧きい堎合

111 views
Skip to first unread message

Tetsutaro Watanabe

unread,
Jan 28, 2014, 11:28:01 AM1/28/14
to mongo...@googlegroups.com
枡郚です。

質問させおください。

たず私の理解ですが、
rubyのクラむアントなどで、ク゚リのwオプションを指定するず、
wの数だけのレプリカに曞き蟌んでから、リタヌンが返っおくる挙動になるず理解しおいたす。
たた、wオプションが、レプリカ内の生きおいるノヌド数よりも倚い堎合は、
い぀たでたっおもリタヌンが返っおこないずいう挙動になるず理解しおいたす。
実際動かしたしたがそうなりたす

私の理解が正しいずしお、質問です。
以䞋の芁件を満たすアプリケヌションを䜜る堎合、どうするのがベストでしょうか

・レプリカセットは2台のデヌタノヌドず1台のアヌビタ。
・通垞時は2台以䞊に曞き蟌み保蚌したいため、アプリケヌションからは垞にw=2 でク゚リを投げる。
・デヌタノヌドが1台死んだ堎合は、2台ぞの曞き蟌みはしなくお良いので、1台だけ曞き終わったらリタヌンしおほしい。

これを実珟するには、ク゚リを投げる前にレプリカセットの状態を確認し、
デヌタノヌドが台ずも健圚ならw=2、そうでないならw=1ず、
ク゚リを投げ倉えるしかないのでしょうか

知恵を貞しおいただけたら幞いです。

Fukuzaki Akinobu

unread,
Jan 28, 2014, 5:50:09 PM1/28/14
to mongo...@googlegroups.com
枡郚さん、お疲れさたです。
犏厎です。

私自身はrubyのクラむアントで圓該の凊理をした事がありたせんが、システム蚭蚈の芳点から意芋を。

wオプションによる曞き蟌みノヌド数制埡は信頌性蚭蚈においお、キヌの条件ずなりたす。
䜕故なら、ある時点である情報がwで指定されたノヌド数に必ず保存されおいる前提保存されお
いなければクラむアントがそれを認識しおおり、それに察応する凊眮が斜されおいる状態でもある
を䜜り出しおくれるため、ノヌドそのものの信頌性の数倀を蚭定できれば、䞊列系の信頌性の倀が
算出できお、皌働率などの算出ができるためです。

ですので、枡郚さんが挙げおおられる芁件の「状況に応じお必芁ノヌド数が倉わる」ずいうのが
そもそも信頌性の前提条件どおしでカニバリをしおしたい、結果的に䜎い信頌性のほうにシステムを
よせおしたっおいるず思いたす。

ですので、芁件の敎理が必芁ず考えたす。

A案、アヌビタがあるので垞にw=2ず考える
B案、実はそこたで信頌性が高い必芁は無いのでw=1ず考える

AずBずでは信頌性は倧きく異なりたすが、B案で算出された信頌性で十分なシステム芁件ならば
B案でも問題無いのです。

ただ、

http://docs.mongodb.org/manual/core/replica-set-write-concern/

を芋お芋たずころ、タむムアりトっおのもあるので、

C案、デヌタノヌドが片肺の時は若干レスポンスが悪くなるがw=2で垞に投げるタむムアりト蚭定付きで

っお案も出おきたす。
ただ、これは信頌性蚭蚈の芳点では意味が無く、か぀レスポンスが遅くなるケヌスがあるため、
ナヌザヌビリティ的にも良く無いです。しかも、信頌性はw=1ずほが䞀緒

いかがでしょうか。

2014/01/29 1:28、Tetsutaro Watanabe <fet...@gmail.com> のメヌル
> --
> このメヌルは Google グルヌプのグルヌプ「MongoDB JP」の登録者に送られおいたす。
> このグルヌプから退䌚し、メヌルの受信を停止するには、mongodb-jp+...@googlegroups.com にメヌルを送信したす。
> このグルヌプに投皿するには、mongo...@googlegroups.com にメヌルを送信しおください。
> http://groups.google.com/group/mongodb-jp からこのグルヌプにアクセスしおください。
> その他のオプションに぀いおは、https://groups.google.com/groups/opt_out にアクセスしおください。

------------------------------------------------------------------
Akki
Akinobu Fukuzaki

Tetsutaro Watanabe

unread,
Jan 28, 2014, 8:26:14 PM1/28/14
to mongo...@googlegroups.com
枡郚です。

犏厎さん回答ありがずうございたす。

> ですので、芁件の敎理が必芁ず考えたす。

すこし䌝え方が悪かったようです。もう少し芁件を正確に曞くず以䞋の通りです。

■芁件
・レプリカセットは2台のデヌタノヌドず1台のアヌビタ。
・デヌタを耇補し、単䞀障害(デヌタノヌド1台死亡)時でもデヌタロストが発生しないようにする。
・単䞀障害発生から埩旧たでの間は、デヌタが耇補されおいない状態を蚱容する。
・単䞀障害発生時(フェヌルオヌバヌ䞭)に限りレスポンスタむムの悪化は蚱容するが、その埌(1台による瞮退運甚時)はレスポンスタむムは元に戻る必芁がある

実は、この芁件はMySQLの準同期レプリケヌションを䜿うず達成できたす。
 準同期レプリケヌションは必ずノヌド以䞊にデヌタの存圚を保蚌したす(w=2ず同じ)が、
 レプリケヌション先が障害になった堎合は、自動的に非同期レプリケヌションにモヌド(w=1ず同じ)に倉わりたす。

それず同じこずがMongoDBでできないかず考えおいたす。

> A案、アヌビタがあるので垞にw=2ず考える
→アヌビタヌはレプリケヌションの察象ではないので、その考え方はできないず思いたす。

> B案、実はそこたで信頌性が高い必芁は無いのでw=1ず考える
→いえ、䞊蚘の通りの信頌性が必芁です。

> C案、デヌタノヌドが片肺の時は若干レスポンスが悪くなるがw=2で垞に投げるタむムアりト蚭定付きで
→これはレスポンスタむムに関する芁件を満たせないのでだめですね。。。



2014幎1月29日 7:50 Fukuzaki Akinobu <akki.t...@gmail.com>:

Fukuzaki Akinobu

unread,
Jan 28, 2014, 9:13:43 PM1/28/14
to mongo...@googlegroups.com
枡郚さん、お疲れさたです。
犏厎です。

なるほど。

芁件ずしおは
・二重障害発生時は党損あるいはアヌビタに残っおいる状態ぞの巻き戻しを蚱容
・二重障害は発生しない前提ず出来るくらい埩旧時間が短い
のどちらかが入るず思っおよろしいでしょうか。

その前提で話を進めるず、

w=1で満たせないケヌスは
・マスタヌからスレヌブにレプリケヌションできる前にマスタヌが壊れるケヌス
が問題になりたすね。

うヌヌん、C案でタむムアりトをずっず短くするじゃだめですかね


===============================
Akinobu Fukuzaki



2014/01/29 10:26、Tetsutaro Watanabe <fet...@gmail.com> のメヌル

Hiroaki Kubota

unread,
Jan 29, 2014, 2:53:01 AM1/29/14
to mongo...@googlegroups.com

窪田です。

それは無理ですね。

䜕床か同じ議論が起こっおたすが、writeconcernはデヌタの保党が目的の機胜で、敎合性ではありたせん。

必ず新しいデヌタが欲しい堎合はPrimaryから読むべきです。

2014/01/29 1:28 "Tetsutaro Watanabe" <fet...@gmail.com>:

Hiroaki Kubota

unread,
Jan 29, 2014, 2:55:33 AM1/29/14
to mongo...@googlegroups.com

远蚘
 個人的にはアヌビタヌ远加よりhiddenノヌドの方がオススメですね。。
 䜿い道が圧倒的に倚いです。

2014/01/29 16:53 "Hiroaki Kubota" <cat.s...@gmail.com>:

Tetsutaro Watanabe

unread,
Jan 29, 2014, 6:48:32 PM1/29/14
to mongo...@googlegroups.com
窪田さん、犏厎さん

枡郚です。

回答ありがずうございたした。
やはり䞍可胜ですか。
でも、MongoDBのそういうシンプルな所嫌いじゃないです。

仰る通りhiddenを䜜れたらよいのですが、デヌタノヌドを増やすのはむンパクトが倧きいため、hiddenを぀くるかw=1にするか怜蚎したいず思いたす。

ありがずうございたした。


2014幎1月29日 16:55 Hiroaki Kubota <cat.s...@gmail.com>:

Fukuzaki Akinobu

unread,
Jan 29, 2014, 7:24:37 PM1/29/14
to mongo...@googlegroups.com
枡郚さん、窪田さん、お疲れさたです。
犏厎です。

私も勉匷になりたした
ありがずうございたす。

2014/01/30 8:48、Tetsutaro Watanabe <fet...@gmail.com> のメヌル
------------------------------------------------------------------
Akki
Akinobu Fukuzaki

Reply all
Reply to author
Forward
0 new messages