เชเซเชเชชเชฃ เชญเชพเชทเชพเชฎเชพเช เชเชเซเช-เชฒเซเชก เชชเซเชฐเซเชเซเชเซเชเซเชธ เชตเชฟเชเชธเชพเชตเชตเชพ เชฎเชพเชเซ เชตเชฟเชถเซเชท เช
เชญเชฟเชเชฎ เช
เชจเซ เชตเชฟเชถเชฟเชทเซเช เชธเชพเชงเชจเซเชจเชพ เชเชชเชฏเซเชเชจเซ เชเชฐเซเชฐ เชเซ, เชชเชฐเชเชคเซ เชเซเชฏเชพเชฐเซ PHP เชฎเชพเช เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชตเชพเชค เชเชตเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชเชเชฒเซ เชตเชฟเชเช เชฌเชจเซ เชถเชเซ เชเซ เชเซ เชคเชฎเชพเชฐเซ เชตเชฟเชเชพเชธ เชเชฐเชตเซ เชชเชกเชถเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ,
เชชเซเชฐเชธเชเชเชจเซ เชนเซเชฐเซ เชธเชฟเชฎเซเชซเชจเซ 2.3 เชซเซเชฐเซเชฎเชตเชฐเซเช เชชเชฐ เชเชงเชพเชฐเชฟเชค PHP เชเชชเซเชฒเชฟเชเซเชถเชจ เชเซ, เชเซ เช เชชเชกเซเช เชเชฐเชตเชพเชจเซ เชตเซเชฏเชตเชธเชพเชฏ เชฏเซเชเชจเชพเชเชฎเชพเช เชฌเชฟเชฒเชเซเชฒ เชธเชฎเชพเชตเชฟเชทเซเช เชจเชฅเซ. เชคเชฆเซเชฆเชจ เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชธเชคเซเชฐ เชธเชเชเซเชฐเชน เชเชชเชฐเชพเชเชค, เช เชชเซเชฐเซเชเซเชเซเชเชจเซ เชธเชเชชเซเชฐเซเชฃ เชเชชเชฏเซเช เชเชฐเซเชฏเซ "เชฌเชงเซเช เชเซเชถเซเชเช" เชจเซเชคเชฟ memcached เชฎเชพเช: เชกเซเชเชพเชฌเซเช เช เชจเซ API เชธเชฐเซเชตเชฐเซเชธเชจเซ เชตเชฟเชจเชเชคเซเชเชจเชพ เชเชตเชพเชฌเซ, เชตเชฟเชตเชฟเชง เชซเซเชฒเซเชเซเชธ, เชเซเชก เชเชเซเชเซเชเซเชฏเซเชถเชจเชจเซ เชธเชฟเชเชเซเชฐเชจเชพเชเช เชเชฐเชตเชพ เชฎเชพเชเซเชจเชพ เชคเชพเชณเชพเช เช เชจเซ เชเชฃเซเช เชฌเชงเซเช. เชเชตเซ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช, เชฎเซเชฎเชเซ เชถเชจเซเช เชญเชเชเชพเชฃ เชเชชเซเชฒเซเชเซเชถเชจเชจเซ เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซ เชเชพเชคเช เชฌเชจเซ เชเชพเชฏ เชเซ. เชตเชงเซเชฎเชพเช, เชเซเชถ เชจเซเชเชถเชพเชจ เชเชเชญเซเชฐ เชชเชฐเชฟเชฃเชพเชฎเซ เชคเชฐเชซ เชฆเซเชฐเซ เชเชพเชฏ เชเซ: เชกเซเชฌเซเชเชฎเชเชธ เชธเซเชฎ เชชเชฐ เชซเซเชเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ, API เชธเซเชตเชพเช เชตเชฟเชจเชเชคเซเช เชชเชฐ เชชเซเชฐเชคเชฟเชฌเชเชง เชฎเซเชเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซ เชเซ, เชตเชเซเชฐเซ. เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ เชธเซเชฅเชฟเชฐ เชเชฐเชตเชพเชฎเชพเช เชฆเชธ เชฎเชฟเชจเชฟเช เชฒเชพเชเซ เชถเชเซ เชเซ, เช เชจเซ เช เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชธเซเชตเชพ เชญเชฏเชเชเชฐ เชฐเซเชคเซ เชงเซเชฎเซ เช เชฅเชตเชพ เชธเชเชชเซเชฐเซเชฃเชชเชฃเซ เช เชจเซเชชเชฒเชฌเซเชง เชนเชถเซ.
เช เชฎเชพเชฐเซ เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชนเชคเซ เชฅเซเชกเชพ เชชเซเชฐเชฏเชคเซเชจเซ เชธเชพเชฅเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเชกเชพ เชธเซเชเซเชฒ เชเชฐเชตเชพเชจเซ เชเซเชทเชฎเชคเชพ, เชเชเชฒเซ เชเซ เชธเซเชคเซเชฐเซเชค เชเซเชกเชฎเชพเช เชจเซเชฏเซเชจเชคเชฎ เชซเซเชฐเชซเชพเชฐเซ เช เชจเซ เชธเชเชชเซเชฐเซเชฃ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพ เชธเชพเชเชตเซเชฒ เชเซ. เชเซเชถเชจเซ เชฎเชพเชคเซเชฐ เชจเชฟเชทเซเชซเชณเชคเชพเช เชฎเชพเชเซ เชชเซเชฐเชคเชฟเชฐเซเชงเช เช เชจเชนเซเช, เชชเชฃ เชคเซเชฎเชพเชเชฅเซ เชกเซเชเชพ เชจเซเชเชถเชพเชจ เชเชเชพเชกเชตเชพเชจเซ เชชเชฃ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ.
memcached เชชเซเชคเซ เชธเชพเชฅเซ เชถเซเช เชเซเชเซเช เชเซ?
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, PHP เชฎเชพเชเซ เชฎเซเชฎเชเซเชถเซเชก เชเชเซเชธเซเชเซเชเชถเชจ เชฌเซเชเซเชธเชจเซ เชฌเชนเชพเชฐ เชตเชฟเชคเชฐเชฟเชค เชกเซเชเชพ เช เชจเซ เชธเชคเซเชฐ เชธเซเชเซเชฐเซเชเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ. เชธเชพเชคเชคเซเชฏเชชเซเชฐเซเชฃ เชเซ เชนเซเชถเชฟเชเช เชฎเชพเชเซเชจเซ เชชเชฆเซเชงเชคเชฟ เชคเชฎเชจเซ เชเชฃเชพ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชธเชฎเชพเชจเชฐเซเชชเซ เชกเซเชเชพ เชฎเซเชเชตเชพเชจเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ, เชฆเชฐเซเช เชเซเชเซเชเชธ เชเซเชจเซ เชเซเชฅเชฎเชพเชเชฅเซ เชเซเชเซเชเชธ เชธเชฐเซเชตเชฐ เชชเชฐ เชตเชฟเชถเชฟเชทเซเช เชฐเซเชคเซ เชธเชเชฌเซเชงเชฟเชค เชเชฐเซ เชเซ, เช เชจเซ เชฌเชฟเชฒเซเช-เชเชจ เชซเซเชฒเชเชตเชฐ เชเซเชฒเซเชธ เชเซเชถเซเชเช เชธเซเชตเชพเชจเซ เชเชเซเช เชเชชเชฒเชฌเซเชงเชคเชพเชจเซ เชเชพเชคเชฐเซ เชเชฐเซ เชเซ (เชชเชฐเชเชคเซ, เชเชฎเชจเชธเซเชฌเซ, เชเซเช เชกเซเชเชพ เชจเชฅเซ).
เชธเชคเซเชฐ เชธเชเชเซเชฐเชน เชธเชพเชฅเซ เชตเชธเซเชคเซเช เชฅเซเชกเซ เชตเชงเซ เชธเชพเชฐเซ เชเซ: เชคเชฎเซ เชเซเช เชตเซ เชถเชเซ เชเซ memcached.sess_number_of_replicas
, เชเซเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ เชกเซเชเชพ เชเชเชธเชพเชฅเซ เช
เชจเซเช เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชธเชเชเซเชฐเชนเชฟเชค เชฅเชถเซ, เช
เชจเซ เชเช เชฎเซเชฎเชเซเชถเซเชก เชฆเชพเชเชฒเชพเชจเซ เชจเชฟเชทเซเชซเชณเชคเชพเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชกเซเชเชพ เช
เชจเซเชฏ เชฒเซเชเซ เชชเชพเชธเซเชฅเซ เชเซเชฐเชพเชจเซเชธเชซเชฐ เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. เชเซ เชเซ, เชเซ เชธเชฐเซเชตเชฐ เชกเซเชเชพ เชตเชฟเชจเชพ เชเชจเชฒเชพเชเชจ เชชเชพเชเซเช เชเชตเซ เชเซ (เชเซเชฎ เชเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชชเชเซ เชฅเชพเชฏ เชเซ), เชคเซ เชเซเชเชฒเซเช เชเซ เชคเซเชจเซ เชคเชฐเชซเซเชฃเชฎเชพเช เชชเซเชจเชเชตเชฟเชคเชฐเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. เชนเชเซเชเชคเชฎเชพเช เชเชจเซ เช
เชฐเซเชฅ เชฅเชถเซ เชธเชคเซเชฐ เชกเซเชเชพเชจเซ เชเซเช, เชเชพเชฐเชฃ เชเซ เชเซเชเซ เชเชตเชพเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เชฌเซเชเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชชเชฐ เชเชตเชพเชจเซ เชเซเช เชฐเชธเซเชคเซ เชจเชฅเซ.
เชธเซเชเชพเชจเซเชกเชฐเซเชก เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชเซเชฒเซเชธเชจเซ เชนเซเชคเซ เชฎเซเชเซเชฏเชคเซเชตเซ เชเซ เชเชกเซเช เชธเซเชเซเชฒเชฟเชเช: เชคเซเช เชคเชฎเชจเซ เชเซเชถเชจเซ เชตเชฟเชถเชพเชณ เชเชฆเชฎเชพเช เชตเชงเชพเชฐเชตเชพ เช เชจเซ เชตเชฟเชตเชฟเชง เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชนเซเชธเซเช เชเชฐเซเชฒเชพ เชเซเชกเชฎเชพเชเชฅเซ เชคเซเชจเซ เชเชเซเชธเซเชธ เชชเซเชฐเชฆเชพเชจ เชเชฐเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ. เชเซ เชเซ, เช เชฎเชพเชฐเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช, เชธเชเชเซเชฐเชนเชฟเชค เชกเซเชเชพเชจเซเช เชชเซเชฐเชฎเชพเชฃ เชเชฃเชพ เชเซเชเชพเชฌเชพเชเชเซเชธ เชเชฐเชคเชพเช เชตเชงเซ เชเชคเซเช เชจเชฅเซ, เช เชจเซ เชเช เช เชฅเชตเชพ เชฌเซ เชจเซเชกเซเชธเชจเซเช เชชเซเชฐเชฆเชฐเซเชถเชจ เชคเชฆเซเชฆเชจ เชชเชฐเซเชฏเชพเชชเซเชค เชเซ. เชคเชฆเชจเซเชธเชพเชฐ, เชเชพเชฐเซเชฏเชเชพเชฐเซ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช เชเชเชพเชฎเชพเช เชเชเซ เชเช เชเซเชถ เชฆเชพเชเชฒเชพเชจเซ เชเชพเชณเชตเชฃเซ เชเชฐเชคเซ เชตเชเชคเซ memcached เชจเซ เชเชชเชฒเชฌเซเชงเชคเชพ เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเชเชฎเชพเชคเซเชฐ เชเชชเชฏเซเชเซ เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชธเชพเชงเชจเซ เชนเซเช เชถเชเซ เชเซ. เชเซ เชเซ, เช เชคเชเชจเซ เชชเชฃ เชฒเชพเชญ เชเช เชพเชตเชตเซ เชถเชเซเชฏ เชจ เชนเชคเซ... เช เชนเซเช เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชคเชพ เชซเซเชฐเซเชฎเชตเชฐเซเชเชจเซ เชชเซเชฐเชพเชเซเชจเชคเชพเชจเซ เชฏเชพเชฆ เชเชฐเชตเชพ เชฏเซเชเซเชฏ เชเซ, เชคเซเชฅเซ เช เชธเชฐเซเชตเชฐเซเชธเชจเชพ เชชเซเชฒ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเซเชณเชตเชตเซ เช เชถเชเซเชฏ เชนเชคเซ. เชเชพเชฒเซ เชธเชคเซเชฐ เชกเซเชเชพเชจเซ เชเซเช เชตเชฟเชถเซ เชชเชฃ เชญเซเชฒเซ เชจ เชเชเช: เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเชพ เชตเชฟเชถเชพเชณ เชฒเซเชเชเชเชเชฅเซ เชเซเชฐเชพเชนเชเชจเซ เชเชเช เชฎเซเชเชเชพเช เชเช.
เชเชฆเชฐเซเชถ เชฐเซเชคเซ เชคเซ เชเชฐเซเชฐเซ เชนเชคเซเช เชฎเซเชฎเชเซเชถเซเชก เช
เชจเซ เชฌเชพเชฏเชชเชพเชธ เชชเซเชฐเชคเชฟเชเซเชคเชฟเชเชฎเชพเช เชฐเซเชเซเชฐเซเชกเชจเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟ เชญเซเชฒ เช
เชฅเชตเชพ เชญเซเชฒเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช. เช
เชฎเชจเซ เช เชตเซเชฏเซเชนเชฐเชเชจเชพ เชฒเชพเชเซ เชเชฐเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเซ
mcrouter
เชซเซเชธเชฌเซเช เชฆเซเชตเชพเชฐเชพ เชคเซเชจเซ เชธเชฎเชธเซเชฏเชพเช เชเชเซเชฒเชตเชพ เชฎเชพเชเซ เชตเชฟเชเชธเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฒ เช เชเช เชฎเซเชฎเชเซเชถเซเชก เชฐเชพเชเชเชฐ เชเซ. เชคเซ เชฎเซเชฎเชเซเชถเซเชก เชเซเชเซเชธเซเช เชชเซเชฐเซเชเซเชเซเชฒเชจเซ เชธเชชเซเชฐเซเช เชเชฐเซ เชเซ, เชเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ เชเซ เชธเซเชเซเชฒ memcached เชธเซเชฅเชพเชชเชจเซ เชชเชพเชเชฒ เชชเซเชฐเชฎเชพเชฃ เชฎเชพเชเซ. mcrouter เชจเซเช เชตเชฟเชเชคเชตเชพเชฐ เชตเชฐเซเชฃเชจ เชเชฎเชพเช เชฎเชณเซ เชถเชเซ เชเซ
- เชจเชเชฒ เชฐเซเชเซเชฐเซเชก;
- เชเซ เชเซเช เชญเซเชฒ เชฅเชพเชฏ เชคเซ เชเซเชฅเชจเชพ เช เชจเซเชฏ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชซเซเชฒเชฌเซเช เชเชฐเซ.
เชเชพเชฎเซ เชฒเชพเชเซ!
mcrouter เชฐเซเชชเชฐเซเชเชพเชเชเชจ
เชนเซเช เชธเซเชงเชพ เชฐเซเชชเชฐเซเชเชพ เชชเชฐ เชเชเชถ:
{
"pools": {
"pool00": {
"servers": [
"mc-0.mc:11211",
"mc-1.mc:11211",
"mc-2.mc:11211"
},
"pool01": {
"servers": [
"mc-1.mc:11211",
"mc-2.mc:11211",
"mc-0.mc:11211"
},
"pool02": {
"servers": [
"mc-2.mc:11211",
"mc-0.mc:11211",
"mc-1.mc:11211"
},
"route": {
"type": "OperationSelectorRoute",
"default_policy": "AllMajorityRoute|Pool|pool00",
"operation_policies": {
"get": {
"type": "RandomRoute",
"children": [
"MissFailoverRoute|Pool|pool02",
"MissFailoverRoute|Pool|pool00",
"MissFailoverRoute|Pool|pool01"
]
}
}
}
}
เชถเชพ เชฎเชพเชเซ เชคเซเชฐเชฃ เชชเซเชฒ? เชธเชฐเซเชตเชฐ เชถเชพ เชฎเชพเชเซ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชฅเชพเชฏ เชเซ? เชเชพเชฒเซ เชเชเซเชคเชฟ เชเชฐเซเช เชเซ เชคเซ เชเซเชตเซ เชฐเซเชคเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ.
- เช เชฐเซเชชเชฐเซเชเชพเชเชเชจเชฎเชพเช, mcrouter เช เชชเชพเชฅ เชชเชธเชเชฆ เชเชฐเซ เชเซ เชเซ เชเซเชฏเชพเช เชตเชฟเชจเชเชคเซ เชเชฆเซเชถเชจเชพ เชเชงเชพเชฐเซ เชตเชฟเชจเชเชคเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเชถเซ. เชคเซ เชตเซเชฏเชเซเชคเชฟ เชคเซเชจเซ เช เชตเชพเชค เชเชนเซ เชเซ
OperationSelectorRoute
. - GET เชตเชฟเชจเชเชคเซเช เชนเซเชจเซเชกเชฒเชฐ เชชเชพเชธเซ เชเชพเชฏ เชเซ
RandomRoute
เชเซ เชฐเซเชจเซเชกเชฎเชฒเซ เชเชฐเซ เชเชฌเซเชเซเชเซเชเซเชธ เชตเชเซเชเซ เชชเซเชฒ เช เชฅเชตเชพ เชฎเชพเชฐเซเช เชชเชธเชเชฆ เชเชฐเซ เชเซchildren
. เช เชเชฐเซเชจเซเช เชฆเชฐเซเช เชเชเช เชฌเชฆเชฒเชพเชฎเชพเช เชนเซเชจเซเชกเชฒเชฐ เชเซMissFailoverRoute
, เชเซ เชชเซเชฒเชจเชพ เชฆเชฐเซเช เชธเชฐเซเชตเชฐเชฎเชพเชเชฅเซ เชชเชธเชพเชฐ เชฅเชถเซ เชเซเชฏเชพเช เชธเซเชงเซ เชคเซเชจเซ เชกเซเชเชพ เชธเชพเชฅเซ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชจ เชฎเชณเซ, เชเซ เชเซเชฒเชพเชฏเชเชเชจเซ เชชเชฐเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. - เชเซ เชเชชเชฃเซ เชตเชฟเชถเชฟเชทเซเช เชฐเซเชคเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช
MissFailoverRoute
เชคเซเชฐเชฃ เชธเชฐเซเชตเชฐเซเชธเชจเชพ เชชเซเชฒ เชธเชพเชฅเซ, เชชเชเซ เชฌเชงเซ เชตเชฟเชจเชเชคเซเช เชชเซเชฐเชฅเชฎ เชฎเซเชฎเชเซเชถเซเชก เชฆเชพเชเชฒเชพเชฎเชพเช เชเชตเชถเซ, เช เชจเซ เชฌเชพเชเซเชจเซ เชตเชฟเชจเชเชคเซเช เชถเซเชท เชงเซเชฐเชฃเซ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ เชเซเชฏเชพเชฐเซ เชกเซเชเชพ เชจ เชนเซเชฏ. เชเชตเชพ เช เชญเชฟเชเชฎ เชคเชฐเชซ เชฆเซเชฐเซ เชเชถเซ เชธเซเชเชฟเชฎเชพเช เชชเซเชฐเชฅเชฎ เชธเชฐเซเชตเชฐ เชชเชฐ เช เชคเชฟเชถเชฏ เชฒเซเชก, เชคเซเชฅเซ เช เชฒเช-เช เชฒเช เชธเชฟเชเซเชตเชจเซเชธเชฎเชพเช เชธเชฐเชจเชพเชฎเชพเช เชธเชพเชฅเซ เชคเซเชฐเชฃ เชชเซเชฒ เชเชจเชฐเซเช เชเชฐเชตเชพเชจเซ เช เชจเซ เชคเซเชฎเชจเซ เชฐเซเชจเซเชกเชฎเชฒเซ เชชเชธเชเชฆ เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช. - เช
เชจเซเชฏ เชคเชฎเชพเชฎ เชตเชฟเชจเชเชคเซเช (เช
เชจเซ เช เชเช เชฐเซเชเซเชฐเซเชก เชเซ) เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ
AllMajorityRoute
. เช เชนเซเชจเซเชกเชฒเชฐ เชชเซเชฒเชฎเชพเชเชจเชพ เชคเชฎเชพเชฎ เชธเชฐเซเชตเชฐเชจเซ เชตเชฟเชจเชเชคเซเช เชฎเซเชเชฒเซ เชเซ เช เชจเซ เชคเซเชฎเชพเชเชฅเซ เชเชเชพเชฎเชพเช เชเชเชพ N/2 + 1 เชจเชพ เชชเซเชฐเชคเชฟเชธเชพเชฆเซเชจเซ เชฐเชพเชน เชเซเช เชเซ. เชเชชเชฏเซเช เชฅเซAllSyncRoute
เชฒเซเชเชจ เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซ เชคเซเชฏเชเซ เชฆเซเชตเชพเชจเซ เชนเชคเซ, เชเชพเชฐเชฃ เชเซ เช เชชเชฆเซเชงเชคเชฟเชจเซ เชนเชเชพเชฐเชพเชคเซเชฎเช เชชเซเชฐเชคเชฟเชธเชพเชฆเชจเซ เชเชฐเซเชฐ เชเซ ะฒัะตั เชเซเชฅเชฎเชพเช เชธเชฐเซเชตเชฐเซเชธ - เช เชจเซเชฏเชฅเชพ เชคเซ เชชเชฐเชค เชเชตเชถเซSERVER_ERROR
. เชเซเชเซ mcrouter เชเชชเชฒเชฌเซเชง เชเซเชถเชฎเชพเช เชกเซเชเชพ เชเชฎเซเชฐเชถเซ, เชเซเชฒเชฟเชเช PHP เชซเชเชเซเชถเชจ เชญเซเชฒ เชชเชฐเชค เชเชฐเชถเซ เช เชจเซ เชจเซเชเชฟเชธ เชเชจเชฐเซเช เชเชฐเชถเซ.AllMajorityRoute
เชคเซ เชเชเชฒเซเช เชเชกเช เชจเชฅเซ เช เชจเซ เชเชชเชฐ เชตเชฐเซเชฃเชตเซเชฒ เชธเชฎเชธเซเชฏเชพเช เชตเชฟเชจเชพ เช เชกเชงเชพ เชเซเชเชฒเชพ เชเชเชฎเซเชจเซ เชธเซเชตเชพเชฎเชพเชเชฅเซ เชฌเชนเชพเชฐ เชเชพเชขเชตเชพเชจเซ เชฎเชเชเซเชฐเซ เชเชชเซ เชเซ.
เชฎเซเชเซเชฏ เชเซเชฐเชฒเชพเชญ เช เชธเซเชเซเชฎ เช เชเซ เชเซ เชเซ เชเซเชถเชฎเชพเช เชเชฐเซเชเชฐ เชเซเช เชกเซเชเชพ เชจ เชนเซเชฏ, เชคเซ เชเซเชฒเชพเชฏเชจเซเชเชจเซ เชฆเชฐเซเช เชตเชฟเชจเชเชคเซ เชฎเชพเชเซ N เชฎเซเชฎเชเซเชถเชจเซ เชตเชฟเชจเชเชคเซเช เชเชฐเซเชเชฐ เชเชเซเชเชฟเชเซเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ - เชฎเชพเชเซ เชฌเชงเชพ เชฎเชพเชเซ เชชเซเชฒเชฎเชพเช เชธเชฐเซเชตเชฐเซเชธ. เช เชฎเซ เชชเซเชฒเชฎเชพเช เชธเชฐเซเชตเชฐเชจเซ เชธเชเชเซเชฏเชพ เชเชเชพเชกเซ เชถเชเซเช เชเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฌเซ เชธเซเชงเซ: เชธเชเชเซเชฐเชนเชจเซ เชตเชฟเชถเซเชตเชธเชจเซเชฏเชคเชพ เชฌเชฒเชฟเชฆเชพเชจ เชเชชเซเชจเซ, เช เชฎเชจเซ เชฎเชณเซ เชเซะพเชตเชฟเชจเชเชคเซเชเชฅเซ เชเซเชเชคเซ เชเซ เชธเซเชงเซ เชตเชงเซ เชเชกเชช เช เชจเซ เชเชเซ เชญเชพเชฐ.
NB: เชคเชฎเซ mcrouter เชถเซเชเชตเชพ เชฎเชพเชเซ เชเชชเชฏเซเชเซ เชฒเชฟเชเชเซเชธ เชชเชฃ เชถเซเชงเซ เชถเชเซ เชเซ
เชฎเซเชเซเชฐเซเชเชเชฐ เชฌเชจเชพเชตเชตเซเช เช เชจเซ เชเชฒเชพเชตเชตเซเช
เช
เชฎเชพเชฐเซ เชเชชเซเชฒเซเชเซเชถเชจ (เช
เชจเซ เชชเซเชคเซ เชฎเซเชฎเชเซเชถเซเชก) เชเซเชฌเชฐเชจเซเชเซเชธเชฎเชพเช เชเชพเชฒเซ เชเซ - เชคเชฆเชจเซเชธเชพเชฐ, mcrouter เชชเชฃ เชคเซเชฏเชพเช เชธเซเชฅเชฟเชค เชเซ. เชฎเชพเชเซ เชเชจเซเชเซเชจเชฐ เชเชธเซเชฎเซเชฌเชฒเซ เช
เชฎเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช
NB: เชฒเซเชเชฎเชพเช เชเชชเซเชฒเซ เชฏเชพเชฆเซเช เชญเชเชกเชพเชฐเชฎเชพเช เชชเซเชฐเชเชพเชถเชฟเชค เชฅเชพเชฏ เชเซ
configVersion: 1
project: mcrouter
deploy:
namespace: '[[ env ]]'
helmRelease: '[[ project ]]-[[ env ]]'
---
image: mcrouter
from: ubuntu:16.04
mount:
- from: tmp_dir
to: /var/lib/apt/lists
- from: build_dir
to: /var/cache/apt
ansible:
beforeInstall:
- name: Install prerequisites
apt:
name: [ 'apt-transport-https', 'tzdata', 'locales' ]
update_cache: yes
- name: Add mcrouter APT key
apt_key:
url: https://facebook.github.io/mcrouter/debrepo/xenial/PUBLIC.KEY
- name: Add mcrouter Repo
apt_repository:
repo: deb https://facebook.github.io/mcrouter/debrepo/xenial xenial contrib
filename: mcrouter
update_cache: yes
- name: Set timezone
timezone:
name: "Europe/Moscow"
- name: Ensure a locale exists
locale_gen:
name: en_US.UTF-8
state: present
install:
- name: Install mcrouter
apt:
name: [ 'mcrouter' ]
... เช เชจเซ เชคเซเชจเซ เชธเซเชเซเช เชเชฐเซ เชธเซเชเชพเชจ เชเชพเชฐเซเช. เชฐเชธเชชเซเชฐเชฆ เชตเชพเชค เช เชเซ เชเซ เชชเซเชฐเชคเชฟเชเซเชคเชฟเชเชจเซ เชธเชเชเซเชฏเชพเชจเชพ เชเชงเชพเชฐเซ เชฎเชพเชคเซเชฐ เชเช เชฐเซเชชเชฐเซเชเชพ เชเชจเชฐเซเชเชฐ เชเซ (เชเซ เชเซเชเชจเซ เชชเชพเชธเซ เชตเชงเซ เชฒเซเชเซเชจเชฟเช เช เชจเซ เชญเชตเซเชฏ เชตเชฟเชเชฒเซเชช เชนเซเชฏ, เชคเซ เชคเซเชจเซ เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เชถเซเชฐ เชเชฐเซ):
{{- $count := (pluck .Values.global.env .Values.memcached.replicas | first | default .Values.memcached.replicas._default | int) -}}
{{- $pools := dict -}}
{{- $servers := list -}}
{{- /* ะะฐะฟะพะปะฝัะตะผ ะผะฐััะธะฒ ะดะฒัะผั ะบะพะฟะธัะผะธ ัะตัะฒะตัะพะฒ: "0 1 2 0 1 2" */ -}}
{{- range until 2 -}}
{{- range $i, $_ := until $count -}}
{{- $servers = append $servers (printf "mc-%d.mc:11211" $i) -}}
{{- end -}}
{{- end -}}
{{- /* ะกะผะตัะฐััั ะฟะพ ะผะฐััะธะฒั, ะฟะพะปััะฐะตะผ N ััะตะทะพะฒ: "[0 1 2] [1 2 0] [2 0 1]" */ -}}
{{- range $i, $_ := until $count -}}
{{- $pool := dict "servers" (slice $servers $i (add $i $count)) -}}
{{- $_ := set $pools (printf "MissFailoverRoute|Pool|pool%02d" $i) $pool -}}
{{- end -}}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: mcrouter
data:
config.json: |
{
"pools": {{- $pools | toJson | replace "MissFailoverRoute|Pool|" "" -}},
"route": {
"type": "OperationSelectorRoute",
"default_policy": "AllMajorityRoute|Pool|pool00",
"operation_policies": {
"get": {
"type": "RandomRoute",
"children": {{- keys $pools | toJson }}
}
}
}
}
เช เชฎเซ เชคเซเชจเซ เชชเชฐเซเชเซเชทเชฃ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช เชฐเซเชฒ เชเชเช เชเชฐเซเช เชเซเช เช เชจเซ เชคเชชเชพเชธเซ:
# php -a
Interactive mode enabled
php > # ะัะพะฒะตััะตะผ ะทะฐะฟะธัั ะธ ััะตะฝะธะต
php > $m = new Memcached();
php > $m->addServer('mcrouter', 11211);
php > var_dump($m->set('test', 'value'));
bool(true)
php > var_dump($m->get('test'));
string(5) "value"
php > # ะ ะฐะฑะพัะฐะตั! ะขะตััะธััะตะผ ัะฐะฑะพัั ัะตััะธะน:
php > ini_set('session.save_handler', 'memcached');
php > ini_set('session.save_path', 'mcrouter:11211');
php > var_dump(session_start());
PHP Warning: Uncaught Error: Failed to create session ID: memcached (path: mcrouter:11211) in php shell code:1
Stack trace:
#0 php shell code(1): session_start()
#1 {main}
thrown in php shell code on line 1
php > # ะะต ะทะฐะฒะพะดะธัััโฆ ะะพะฟัะพะฑัะตะผ ะทะฐะดะฐัั session_id:
php > session_id("zzz");
php > var_dump(session_start());
PHP Warning: session_start(): Cannot send session cookie - headers already sent by (output started at php shell code:1) in php shell code on line 1
PHP Warning: session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning: session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning: session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning: session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning: session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning: session_start(): Failed to write session lock: UNKNOWN READ FAILURE in php shell code on line 1
PHP Warning: session_start(): Unable to clear session lock record in php shell code on line 1
PHP Warning: session_start(): Failed to read session data: memcached (path: mcrouter:11211) in php shell code on line 1
bool(false)
php >
เชญเซเชฒเชจเชพ เชเซเชเซเชธเซเชเชจเซ เชถเซเชง เชเชฐเชตเชพเชฅเซ เชเซเช เชชเชฐเชฟเชฃเชพเชฎ เชฎเชณเซเชฏเซเช เชจเชฅเซ, เชชเชฐเชเชคเซ เชเซเชตเซเชฐเซ เชฎเชพเชเซ โ
NB: memcached เชฎเชพเช ASCII เชชเซเชฐเซเชเซเชเซเชฒ เชฌเชพเชเชจเชฐเซ เชชเซเชฐเซเชเซเชเซเชฒ เชเชฐเชคเชพ เชงเซเชฎเซเช เชเซ, เช เชจเซ เชธเซเชธเชเชเชค เชเซ เชนเซเชถเชฟเชเชเชจเชพ เชชเซเชฐเชฎเชพเชฃเชญเซเชค เชฎเชพเชงเซเชฏเชฎเซ เชซเชเซเชค เชฌเชพเชเชจเชฐเซ เชชเซเชฐเซเชเซเชเซเชฒ เชธเชพเชฅเซ เช เชเชพเชฎ เชเชฐเซ เชเซ. เชชเชฐเชเชคเซ เช เชเซเชเซเชเชธ เชเซเชธ เชฎเชพเชเซ เชธเชฎเชธเซเชฏเชพ เชเชญเซ เชเชฐเชคเซเช เชจเชฅเซ.
เชฏเซเชเซเชคเชฟ เชฌเซเชเชฎเชพเช เชเซ: เชคเชฎเชพเชฐเซ เชซเชเซเชค ASCII เชชเซเชฐเซเชเซเชเซเชฒ เชชเชฐ เชธเซเชตเชฟเช เชเชฐเชตเชพเชจเซเช เชเซ เช
เชจเซ เชฌเชงเซเช เชเชพเชฎ เชเชฐเชถเซ.... เชเซ เชเซ, เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชฎเชพเช เชเชตเชพเชฌเซ เชถเซเชงเชตเชพเชจเซ เชเชฆเชค
เชนเชพ, เชธเชพเชเซ เชตเชฟเชเชฒเซเชช เชจเชพเชฎ เชเซ memcached.sess_binary_protocol
. เชคเซ เช
เชเซเชทเชฎ เชนเซเชตเซเช เชเชตเชถเซเชฏเช เชเซ, เชเซเชจเชพ เชชเชเซ เชธเชคเซเชฐเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเชถเซ. เชเซ เชฌเชพเชเซ เชเซ เชคเซ PHP เชธเชพเชฅเซเชจเชพ เชชเซเชกเชฎเชพเช mcrouter เชธเชพเชฅเซเชจเชพ เชเชจเซเชเซเชจเชฐเชจเซ เชฎเซเชเชตเชพเชจเซเช เชเซ!
เชจเชฟเชทเซเชเชฐเซเชท
เชเชฎ, เชฎเชพเชคเซเชฐ เชฎเชพเชณเชเชพเชเซเชฏ เชซเซเชฐเชซเชพเชฐเซ เชธเชพเชฅเซ เช เชฎเซ เชธเชฎเชธเซเชฏเชพเชจเซ เชนเชฒ เชเชฐเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชนเชคเชพ: เชฎเซเชฎเชเซเชถเซเชก เชซเซเชฒเซเช เชเซเชฒเชฐเชจเซเชธ เชธเชพเชฅเซเชจเซ เชฎเซเชฆเซเชฆเซ เชเชเซเชฒเชพเช เชเชฏเซ เชเซ, เช เชจเซ เชเซเชถ เชธเซเชเซเชฐเซเชเชจเซ เชตเชฟเชถเซเชตเชธเชจเซเชฏเชคเชพเชฎเชพเช เชตเชงเชพเชฐเซ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ. เชเชชเซเชฒเชฟเชเซเชถเชจ เชฎเชพเชเซเชจเชพ เชธเซเชชเชทเซเช เชซเชพเชฏเชฆเชพเช เชเชชเชฐเชพเชเชค, เช เชชเซเชฒเซเชเชซเซเชฐเซเชฎ เชชเชฐ เชเชพเชฎ เชเชฐเชคเซ เชตเชเชคเซ เชฆเชพเชตเชชเซเช เชฎเชพเชเซ เชเชเซเชฏเชพ เชเชชเซ เชเซ: เชเซเชฏเชพเชฐเซ เชฌเชงเชพ เชเชเชเซ เชชเชพเชธเซ เช เชจเชพเชฎเชค เชนเซเชฏ เชเซ, เชคเซเชฏเชพเชฐเซ เชเชกเชฎเชฟเชจเชฟเชธเซเชเซเชฐเซเชเชฐเชจเซเช เชเซเชตเชจ เชเซเชฌ เช เชธเชฐเชณ เชฌเชจเซ เชเซ. เชนเชพ, เช เชชเชฆเซเชงเชคเชฟเชฎเชพเช เชคเซเชจเซ เชเชพเชฎเซเช เชชเชฃ เชเซ, เชคเซ "เชเซเชฐเช" เชเซเชตเซ เชฆเซเชเชพเช เชถเชเซ เชเซ, เชชเชฐเชเชคเซ เชเซ เชคเซ เชชเซเชธเชพ เชฌเชเชพเชตเซ เชเซ, เชธเชฎเชธเซเชฏเชพเชจเซ เชฆเชซเชจเชพเชตเซ เชเซ เช เชจเซ เชจเชตเซ เชธเชฎเชธเซเชฏเชพเชเชจเซเช เชเชพเชฐเชฃ เชจเชฅเซ - เชถเชพ เชฎเชพเชเซ เชจเชนเซเช?
PS
เช เชฎเชพเชฐเชพ เชฌเซเชฒเซเช เชชเชฐ เชชเชฃ เชตเชพเชเชเซ:
- "dapp เชธเชพเชฅเซ เชชเซเชฐเซเชเซเชเชฟเชธ เชเชฐเซ" (เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชธเชฟเชฎเซเชซเซเชจเซ-เชกเซเชฎเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ):
เชญเชพเช 1 (เชธเชฐเชณ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเชตเซ) ะธเชญเชพเช 2 (เชนเซเชฒเซเชฎเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชฌเชฐเชจเซเชเซเชธ เชชเชฐ เชกเซเชเชฐ เชเชฌเซเช เชเชฎเชพเชตเชตเซ) ; - ยซ
เชเซเชฌเชฐเชจเซเชเซเชธ เชธเชพเชฅเซเชจเชพ เชเซเชตเชจเชฎเชพเชเชฅเซ: เชเซเชตเซ เชฐเซเชคเซ HTTP เชธเชฐเซเชตเชฐเซ เชธเซเชชเซเชจเชฟเชฏเชพเชฐเซเชกเซเชธเชจเซ เชคเชฐเชซเซเชฃ เชเชฐเซ เชจเชฅเซ ยป.
เชธเซเชฐเซเชธ: www.habr.com