เบเบฒเบเบเบฑเบเบเบฐเบเบฒเปเบเบเบเบฒเบเบเบตเปเบกเบตเบเบฒเบเปเบซเบผเบเบชเบนเบเปเบเบเบฒเบชเบฒเปเบเบเปเปเบเบฒเบกเบฎเบฝเบเบฎเปเบญเบเปเบซเปเบกเบตเบงเบดเบเบตเบเบฒเบเบเบดเปเบชเบเปเบฅเบฐเบเบฒเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบกเบทเบเบดเปเบชเบ, เปเบเปเปเบเปเบงเบฅเบฒเบเบตเปเบกเบฑเบเบกเบฒเบเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบ PHP, เบชเบฐเบเบฒเบเบฐเบเบฒเบเบชเบฒเบกเบฒเบเบฎเปเบฒเบเปเบฎเบเบเบถเปเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฑเบเบเบฐเบเบฒ, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ,.
hero เบเบญเบเปเบญเบเบฒเบเปเบกเปเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ PHP เปเบเบเบญเบตเบเปเบชเปเบเบญเบ symfony 2.3, เปเบเบดเปเบเบเปเปเปเบเปเบฅเบงเบกเบขเบนเปเปเบเปเบเบเบเบฒเบเบเบธเบฅเบฐเบเบดเบเบเบตเปเบเบฐเบเบฑเบเบเบธเบ. เบเบญเบ เปเปเบทเบญ เปเบเบเบฒเบเบเปเบญเบเปเบเบฑเบเบเปเปเบกเบนเบเบกเบฒเบเบเบฐเบเบฒเบเบเบตเปเบเปเบญเบเบเปเบฒเบ, เปเบเบเบเบฒเบเบเบตเปเปเบเป เบเบณ เปเบเปเบขเปเบฒเบเปเบเบฑเบกเบเบตเป เบเบฐเปเบเบเบฒเบ "เปเบเบฑเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบ". เปเบ memcached: เบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเปเปเบเบฒเบเบฎเปเบญเบเบเปเบเบฑเบเบเบฒเบเบเปเปเบกเบนเบเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ API, เบเบธเบเบเปเบฒเบเป, locks เบชเปเบฒเบฅเบฑเบเบเบฒเบ synchronizing เบเบฒเบเบเบฐเบเบดเบเบฑเบเบฅเบฐเบซเบฑเบเปเบฅเบฐเบญเบทเปเบเป. เปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบฑเปเบเบเปเบฒเบง, เบเบฒเบเปเบเบเปเบเบเบเบญเบ memcached เบเบฒเบเปเบเบฑเบเบญเบฑเบเบเบฐเบฅเบฒเบเบเปเปเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบชเบนเบเปเบชเบ cache เบเปเบฒเปเบเบชเบนเปเบเบปเบเบชเบฐเบเปเบญเบเบเบตเปเบฎเปเบฒเบเปเบฎเบ: DBMS เปเบฅเบตเปเบกเบฅเบฐเปเบเบตเบเบขเบนเป seams, เบเปเบฅเบดเบเบฒเบ API เปเบฅเบตเปเบกเบซเปเบฒเบกเบเบฒเบเบฎเปเบญเบเบเป, เปเบฅเบฐเบญเบทเปเบเป. เบชเบฐเบเบฝเบเบฅเบฐเบเบฒเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบญเบฒเบเบเบฐเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเบชเบดเบเบเบฒเบเบต, เปเบฅเบฐเปเบเบฅเบฐเบซเบงเปเบฒเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบฐเบเปเบฒเบซเบผเบฒเบเบซเบผเบทเบเปเปเบกเบตเปเบซเปเบซเบกเบปเบ.
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบชเบฐเบซเบเบญเบ เบเบงเบฒเบกโเบชเบฒโเบกเบฒเบโเปเบโเบเบฒเบโเบเบฐโเบซเบเบฒเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบเบฒเบกโเบฅเบงเบโเบเบญเบโเบเบตเปโเบกเบตโเบเบงเบฒเบกโเบเบฐโเบเบฒโเบเบฒเบกโเบเบฝเบโเปเบฅเบฑเบโเบเปเบญเบโ, i.e. เบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบซเบเปเบญเบเบเบตเปเบชเบธเบเบเบฑเบเบฅเบฐเบซเบฑเบเปเบซเบผเปเบเปเบฅเบฐเบซเบเปเบฒเบเบตเปเปเบเบฑเบกเบเบตเปเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบงเป. เปเบฎเบฑเบเปเบซเป cache เบเปเปเบเบฝเบเปเบเปเบเบปเบเบเบฒเบเบเปเปเบเบฑเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบฅเบง, เปเบเปเบเบฑเบเบเบฐเบเบฒเบเบฒเบกเบซเบผเบธเบเบเปเบญเบเบเบฒเบเบชเบนเบเปเบชเบเบเปเปเบกเบนเบเบเบฒเบเบกเบฑเบ.
เบกเบตเบซเบเบฑเบเบเบดเบเบเบฒเบเบเบฑเบ memcached เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ?
เปเบเบเบเบปเปเบงเปเบ, เบเบฒเบเบเบฐเบซเบเบฒเบ memcached เบชเปเบฒเบฅเบฑเบ PHP เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเปเปเบกเบนเบเบเบตเปเปเบเบเบขเบฒเบเปเบฅเบฐเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบญเบเบเบฐเบเบธเบกเบญเบญเบเบเบฒเบเบเปเบญเบ. เบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ hashing เบฅเบฐเบซเบฑเบเบเบตเปเบชเบญเบเบเปเบญเบเบเปเบงเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบงเบฒเบเบเปเปเบกเบนเบเปเบเปเปเบเบปเปเบฒเบเบฝเบกเบเบฑเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบเบงเบเบซเบผเบฒเบ, เปเบเปเปเบเปเบเปเบฅเบฐเบฅเบฐเบซเบฑเบเบชเบฐเปเบเบฒเบฐเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบชเบฐเปเบเบฒเบฐเบเบฒเบเบเบธเปเบก, เปเบฅเบฐเปเบเบทเปเบญเบเบกเบทเบฅเบปเปเบกเปเบซเบฅเบงเปเบเบเบปเบงเบฎเบฑเบเบเบฐเบเบฑเบเบงเปเบฒเบกเบตเบเบฒเบเบเปเบฅเบดเบเบฒเบ caching เบชเบนเบ (เปเบเป, เปเบเปเบซเบเปเบฒเปเบชเบเบเบฒเบ, เบเปเปโเบกเบตโเบเปเปโเบกเบนเบ).
เบชเบดเปเบเบเบตเปเบเบตเบเบงเปเบฒเปเบฅเบฑเบเบเปเบญเบเบเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเบเบเบฑเบ: เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเปเบเบเปเบฒเปเบเป memcached.sess_number_of_replicas
, เปเบเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเบเบตเปเบเปเปเบกเบนเบเบเบฐเบเบทเบเปเบเบฑเบเปเบงเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเบผเบฒเบเบเบฑเปเบ, เปเบฅเบฐเปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบฒเบกเบฅเบปเปเบกเปเบซเบผเบงเบเบญเบเบซเบเบถเปเบ memcached instance, เบเปเปเบกเบนเบเบเบฐเบเบทเบเปเบญเบเบเบฒเบเบเบปเบเบญเบทเปเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฑเบเบกเบฒเบญเบญเบเปเบฅเบเปเปเบเบเบเปเปเบกเบตเบเปเปเบกเบนเบ (เบเบฒเบกเบเบปเบเบเบฐเบเบดเบเบฐเปเบเบตเบเบเบถเปเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป), เบเบฒเบเบเบฐเปเบเบเบฐเบเบทเบเปเบเบเบขเบฒเบเบเบทเบเปเบซเบกเป. เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบเบตเปเบเบฐเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ เบเบฒเบเบชเบนเบเปเบชเบเบเปเปเบกเบนเบเปเบเบเบเบฑเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเปเปเบกเบตเบเบฒเบเบเบตเปเบเบฐ "เปเบ" เบเบฑเบ replica เบญเบทเปเบเปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบฒเบเบเบฒเบ.
เปเบเบทเปเบญเบเบกเบทเบซเปเบญเบเบชเบฐเบซเบกเบธเบเบกเบฒเบเบเบฐเบเบฒเบเปเบกเปเบเปเบเปเบชเปเบเบปเปเบเบเป เปเบเบงเบเบญเบ scaling: เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบตเปเบก cache เบเบฑเบเบเบฐเบซเบเบฒเบ gigantic เปเบฅเบฐเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบกเบฑเบเบเบฒเบเบฅเบฐเบซเบฑเบเปเบฎเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบฐเบฅเบดเบกเบฒเบเบเบญเบเบเปเปเบกเบนเบเบเบตเปเปเบเบฑเบเปเบงเปเบเปเปเปเบเบตเบเบซเบผเบฒเบ gigabyte, เปเบฅเบฐเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบซเบเบถเปเบเบซเบผเบทเบชเบญเบ nodes เปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเบฝเบเบเป. เบเบฑเปเบเบเบฑเปเบ, เปเบเบทเปเบญเบเบกเบทเบกเบฒเบเบเบฐเบเบฒเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบเบฝเบเปเบเปเบชเบฒเบกเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบกเบต memcached เปเบเบเบฐเบเบฐเบเบตเปเบฎเบฑเบเบชเบฒเบขเปเบฒเบเบซเบเปเบญเบเบซเบเบถเปเบ cache instance เปเบเบชเบฐเบเบฒเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเปเบเปเบเบฐเปเบซเบเบเบเบฒเบเปเบญเบเบฒเบเบเบตเป ... เปเบเบเบตเปเบเบตเปเบกเบฑเบเบเบงเบเบเบฐเปเบเบฑเบเบเบฒเบเบฅเบฐเบเบถเบเปเบเบดเบเบงเบฑเบเบเบธเบเบนเบฎเบฒเบเบเบญเบเบเบญเบเบเบตเปเปเบเปเปเบเปเบเบเบเบฒเบ, เปเบเบดเปเบเปเบเบฑเบเปเบซเบเบเบปเบเบเบตเปเบงเปเบฒเบกเบฑเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบตเปเบเบฐเปเบซเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบญเบเบชเบฐเบเบธเบเปเบเบต. เบขเปเบฒเบฅเบทเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเบนเบเปเบชเบเบเปเปเบกเบนเบเบเบญเบเปเบเบเบเบฑเบ: เบเบฒเบเบญเบเบฅเบนเบเบเปเบฒเปเบเปเบเบดเบเบเบฒเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเบเบญเบเบเบนเปเปเบเปเบขเปเบฒเบเบซเบผเบงเบเบซเบผเบฒเบ.
เปเบเบเบซเบฅเบฑเบเบเบฒเบเปเบฅเปเบง, เบกเบฑเบเปเบกเปเบเบเปเบญเบเบเบฒเบ replication เบเบญเบเบเบฑเบเบเบถเบเปเบ memcached เปเบฅเบฐ bypassing replicas เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบซเบผเบทเบเบงเบฒเบกเบเบดเบเบเบฒเบ. เบเปเบงเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฑเบเบเบธเบเบเบฐเบชเบฒเบเบเบตเป
mcouter
เบเบตเปเปเบกเปเบ router memcached เบเบตเปเบเบฑเบเบเบฐเบเบฒเปเบเบ Facebook เปเบเบทเปเบญเปเบเปเปเบเบเบฑเบเบซเบฒเบเบญเบเบกเบฑเบ. เบกเบฑเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบญเบฐเบเบธเบชเบฑเบเบเบฒเบเปเปเบเบงเบฒเบก memcached, เปเบเบดเปเบเบญเบฐเบเบธเบเบฒเบเปเบซเป เบเบฒเบโเบเบดเบโเบเบฑเปเบ memcached เบเบฐโเบซเบเบฒเบโ เบเบฑเบเบญเบฑเบเบเบฒเบชเปเบงเบเบเปเบฒ. เบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบ mcouter เบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบ
- replicate เบเบฑเบเบเบถเบ;
- เบเบฑเบเบเบทเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบญเบทเปเบเปเบเบเบธเปเบกเบเปเบฒเบกเบตเบเปเปเบเบดเบเบเบฒเบเปเบเบตเบเบเบทเปเบ.
เปเบโเปเบฎเบฑเบโเบงเบฝเบ!
เบเบฒเบเบเบฑเปเบเบเปเบฒ mcouter
เบเปเบญเบเบเบฐเปเบเบเบปเบเบเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒ:
{
"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"
]
}
}
}
}
เปเบเบฑเบเบซเบเบฑเบเบชเบฒเบกเบชเบฐเบเบธเบเปเบเบต? เปเบเบฑเบเบซเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบถเปเบเบเปเปเบฒเบเบฑเบ? เปเบซเปเบเบดเบเบญเบญเบเบงเปเบฒเบกเบฑเบเปเบฎเบฑเบเบงเบฝเบเปเบเบงเปเบ.
- เปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบตเป, mcouter เปเบฅเบทเบญเบเปเบชเบฑเปเบเบเบฒเบเบเบตเปเบเบฐเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเปเปเบเบเบญเบตเบเปเบชเปเบเปเบฒเบชเบฑเปเบเบเบฒเบเบฎเปเบญเบเบเป. เบเบนเปเบเบฒเบเบเบญเบเบฅเบฒเบงเบเบตเป
OperationSelectorRoute
. - เปเบญเบปเบฒเบเปเบฒเบฎเปเบญเบเบเปเปเบเบซเบฒเบเบปเบงเบเบฑเบเบเบฒเบ
RandomRoute
เปเบเบดเปเบเปเบฅเบทเบญเบเบชเบฐเบเบธเบเปเบเบตเบซเบผเบทเปเบชเบฑเปเบเบเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบงเบฑเบเบเบธ array เปเบเบเบชเบธเปเบกchildren
. เปเบเปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเบเบญเบเบญเบฒเปเบฃเบเบตเปเปเบกเปเบเบเบปเบงเบเบฑเบเบเบฒเบMissFailoverRoute
, เปเบเบดเปเบเบเบฐเบเปเบฒเบเปเบเปเบฅเบฐเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบชเบฐเบเบธเบเปเบเบตเบเบปเบเบเปเบงเบฒเบกเบฑเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเบฑเบเบเปเปเบกเบนเบ, เปเบเบดเปเบเบเบฐเบเบทเบเบชเบปเปเบเบเบฑเบเบฅเบนเบเบเปเบฒ. - เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเปเบชเบฐเปเบเบฒเบฐ
MissFailoverRoute
เบเปเบงเบเบชเบฐเบเบธเบเปเบเบตเบเบญเบเบชเบฒเบกเปเบเบตเบเปเบงเบต, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฒเบเบฎเปเบญเบเบเปเบเบฑเบเบซเบกเบปเบเบเบฐเบกเบฒเบเปเบฒเบญเบดเบเบเบฑเบเบเบปเบงเบขเปเบฒเบ memcached เบเปเบฒเบญเบดเบ, เปเบฅเบฐเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบฎเปเบญเบเบเปเบเบปเบเบเบทเปเบเบเบฒเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบเปเบงเบฅเบฒเบเบตเปเบเปเปเบกเบตเบเปเปเบกเบนเบ. เบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเบเบฐเบเปเบฒเปเบเบชเบนเป เบเบฒเบเปเบซเบผเบเบซเบผเบฒเบเปเบเบตเบเปเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเป, เบชเบฐเบเบฑเปเบเบกเบฑเบเปเบเปเบเบทเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเบชเปเบฒเบเบชเบฒเบกเบชเบฐเบเบธเบเปเบเบตเบเบตเปเบกเบตเบเบตเปเบขเบนเปเปเบเบฅเปเบฒเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเปเบฅเบฐเปเบฅเบทเบญเบเปเบญเบปเบฒเบเบงเบเบกเบฑเบเปเบเบเบชเบธเปเบก. - เบเบฒเบเบฎเปเบญเบเบเปเบญเบทเปเบเปเบเบฑเบเบซเบกเบปเบ (เปเบฅเบฐเบเบตเปเปเบกเปเบเบเบฑเบเบเบถเบ) เปเบกเปเบเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเปเบเป
AllMajorityRoute
. เบเบปเบงเบเบฑเบเบเบฒเบเบเบตเปเบชเบปเปเบเบเปเบฒเบฎเปเบญเบเบเปเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบฑเบเบซเบกเบปเบเปเบเบชเบฐเบเบธเบเปเบเบตเปเบฅเบฐเบฅเปเบเปเบฒเบเปเบฒเบเบญเบเบเบฒเบเบขเปเบฒเบเบซเบเปเบญเบ N/2 + 1 เบเบญเบเบเบงเบเปเบเบปเบฒ. เบเบฒเบโเบเบฒเบโเบเปเบฒโเปเบเปโAllSyncRoute
เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเบตเบโเบเบฒเบโเบเบฒเบโเบเบฝเบโเปเบเปโเบเบทเบโเบเบฐโเบเบดเปเบกโเปเบงเปโ, เบเบฑเบโเบเบฑเปเบโเปเบเปโเบงเบดโเบเบตโเบเบฒเบโเบเบตเปโเบฎเบฝเบโเบฎเปเบญเบโเปเบซเปโเบกเบตโเบเบฒเบโเบเบญเบโเบชเบฐโเบซเบเบญเบโเปเบโเบเบฒเบโเบเบงเบโเบเบฒเบโ ะฒัะตั เปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเบธเปเบก - เบเปเบฒเบเปเปเบเบฑเปเบเบเบฑเปเบเบกเบฑเบเบเบฐเบเบฑเบเบเบทเบเบกเบฒSERVER_ERROR
. เปเบเบดเบเปเบกเปเบเบงเปเบฒ mcouter เบเบฐเปเบเบตเปเบกเบเปเปเบกเบนเบเปเบชเปเบเบฒเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเบกเบตเบขเบนเป, เบซเบเปเบฒเบเบตเปเปเบญเบตเปเบ PHP เบเบฐเบชเบปเปเบเบเบทเบเบเปเปเบเบดเบเบเบฒเบ เปเบฅเบฐเบเบฐเบชเปเบฒเบเปเบเปเบเบเบฒเบ.AllMajorityRoute
เปเบกเปเบเบเปเปเปเบเบฑเปเบกเบเบงเบเปเบฅเบฐเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเบดเบเปเบเบดเปเบเบซเบเบถเปเบเบเบญเบเบซเบเปเบงเบเบเบฒเบเบเบตเปเบเบฐเปเบญเบปเบฒเบญเบญเบเบเบฒเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบเบเปเปเบกเบตเบเบฑเบเบซเบฒเบเบตเปเปเบเปเบญเบฐเบเบดเบเบฒเบเบเปเบฒเบเปเบเบดเบ.
เบเปเปเปเบชเบเบซเบผเบฑเบ เปเบเบโเบเบฒเบโเบเบตเปโเปเบกเปเบโเบงเปเบฒโเบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเปโเบกเบตโเบเปเปโเบกเบนเบโเบเบตเปโเปเบเปโเบเบดเบโเปเบโเบเบฒเบโเบเบงเบฒเบกโเบเปเบฒโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบฎเปเบญเบโเบเปโเบเบญเบโเบฅเบนเบโเบเปเบฒ N เบเบฒเบโเบฎเปเบญเบโเบเปโเบเบญเบ memcached เปเบเปโเบฅเบฐโเบเบปเบโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบ - to เบเบฑเบเบเบธเบเบเบปเบ เปเบเบตเบเปเบงเบตเปเบเบชเบฐเบเบธเบเปเบเบต. เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบซเบผเบธเบเบเปเบญเบเบเปเบฒเบเบงเบเบเบญเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบชเบฐเบเบธเบเปเบเบต, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบเบฑเบเบชเบญเบ: เบเบฒเบเปเบชเบเบชเบฐเบฅเบฐเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบทเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ.ะพเบเบงเบฒเบกเปเบงเบเบตเปเบชเบนเบเบเบถเปเบเปเบฅเบฐเบเบฒเบเปเบซเบผเบเบซเบเปเบญเบเบฅเบปเบเบเบฒเบเบเบฒเบเบฎเปเบญเบเบเปเปเบเบซเบฒเบเบฐเปเบเบเบตเปเบเบฒเบเบซเบฒเบเปเบ.
NB: เบเปเบฒเบเบญเบฒเบเบเบฐเบเบญเบเบซเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฎเบฝเบเบฎเบนเป mcouter
เบเบฒเบเบเปเปเบชเปเบฒเบเปเบฅเบฐเปเบฅเปเบ mcouter
เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ (เปเบฅเบฐ memcached เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบ) เปเบฅเปเบเบขเบนเปเปเบ Kubernetes - เบเบฒเบกเบเบงเบฒเบกเปเบซเบกเบฒเบฐเบชเบปเบก, mcrouter เบเปเปเบเบฑเปเบเบขเบนเปเบเบตเปเบเบฑเปเบ. เบชเปเบฒเบฅเบฑเบ เบเบฒเบเบเบฐเบเบญเบเบเบฒเบเบฐเบเบฐ เบเบงเบเปเบฎเบปเบฒเปเบเป
NB: เบฅเบฒเบเบเบทเปเบเบตเปเปเบซเปเบขเบนเปเปเบเบเบปเบเบเบงเบฒเบกเปเบเปเบเบทเบเบเบฑเบเบเบตเบกเบกเบฒเบขเบนเปเปเบ repository
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' ]
... เปเบฅเบฐเปเบเปเบกเบกเบฑเบเบญเบญเบ เบเบฒเบเบฐเบฅเบฒเบเบซเบกเบงเบเบเบฑเบเบเบฐเบเบปเบ. เบชเบดเปเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเปเบกเปเบเบงเปเบฒเบกเบตเบเบฝเบเปเบเป config generator เปเบเบเบญเบตเบเปเบชเปเบเปเบฒเบเบงเบเบเบญเบ replicas (เบเปเบฒเปเบเบกเบตเบเบฒเบเปเบฅเบทเบญเบ laconic เปเบฅเบฐ elegant เบซเบผเบฒเบ, เปเบเปเบเบเบฑเบเบกเบฑเบเปเบเบเปเบฒเปเบซเบฑเบ):
{{- $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: เปเบเบฃเปเบเบเป ASCII เปเบ memcached เปเบกเปเบเบเปเบฒเบเบงเปเบฒ binary one, เปเบฅเบฐเบกเบฒเบเบเบฐเบเบฒเบเบงเบดเบเบตเบเบฒเบ hashing key เบเบตเปเบชเบญเบเบเปเบญเบเบเบฝเบเปเบเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ binary protocol. เปเบเปเบเบตเปเบเปเปเปเบเปเบชเปเบฒเบเบเบฑเบเบซเบฒเบชเปเบฒเบฅเบฑเบเบเปเบฅเบฐเบเบตเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบ.
เปเบเบฑเบโเบฅเบฑเบโเปเบกเปเบโเบขเบนเปโเปเบโเบเบปเบโ: เบเบฑเบโเบซเบกเบปเบโเบเบตเปโเบเปเบฒเบโเบกเบตโเปเบเบทเปเบญโเปเบฎเบฑเบโเปเบกเปเบโเบชเบฐโเบซเบผเบฑเบโเบเบฑเบโเบญเบฐโเบเบธโเบชเบฑเบโเบเบฒ ASCII เปเบฅเบฐโเบเบธเบโเบชเบดเปเบโเบเบธเบโเบขเปเบฒเบโเบเบฐโเปเบฎเบฑเบโเบงเบฝเบ .... เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบดเปเบชเบเบญเบเบเบฒเบเบเบญเบเบซเบฒเบเปเบฒเบเบญเบเปเบ
เปเบกเปเบเปเบฅเปเบง, เบเบทเปเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบทเบเบเปเบญเบเปเบกเปเบ memcached.sess_binary_protocol
. เบกเบฑเบเบเปเบญเบเบเบทเบเบเบดเบเปเบเปเบเบฒเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบญเบเบเบฐเบเบธเบกเบเบฐเปเบฅเบตเปเบกเปเบฎเบฑเบเบงเบฝเบ. เบชเบดเปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเปเบญเบปเบฒเบเบฑเบเปเบชเปเบเบฑเบ mcouter เปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบเปเบงเบ PHP!
เบชเบฐเบซเบฅเบธเบ
เบเบฑเปเบเบเบฑเปเบ, เบเบฝเบเปเบเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบเบทเปเบเบเบฒเบเปเบเบเบฅเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒเปเบเป: เบเบฑเบเบซเบฒเบเบฑเบเบเบงเบฒเบกเบเบปเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบญเบ memcached เปเบเปเบเบทเบเปเบเปเปเบเปเบฅเปเบง, เปเบฅเบฐเบเบงเบฒเบกเบซเบเปเบฒเปเบเบทเปเบญเบเบทเบเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ cache เปเบเปเปเบเบตเปเบกเบเบถเปเบ. เบเบญเบเปเบซเบเบทเบญเปเบเบเบฒเบเบเปเปเปเบเปเบเบฝเบเบเบตเปเบเบฑเบเปเบเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เบเบตเปเปเบฎเบฑเบเปเบซเปเบซเปเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบ maneuver เปเบเปเบงเบฅเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเปเบงเบเบต: เปเบเปเบงเบฅเบฒเบเบตเปเบญเบปเบเบเบฐเบเบญเบเบเบฑเบเบซเบกเบปเบเบกเบตเบชเบฐเบซเบเบงเบเปเบงเป, เบเบตเบงเบดเบเบเบญเบเบเบนเปเบเปเบฅเบดเบซเบฒเบเปเบกเปเบเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบ. เปเบกเปเบเปเบฅเปเบง, เบงเบดเบเบตเบเบฒเบเบเบตเปเบเบฑเบเบกเบตเบเปเปเบเบปเบเบเปเบญเบเบเบญเบเบกเบฑเบ, เบกเบฑเบเบญเบฒเบเบเบฐเบเปเบฒเบเบเบท "เปเบกเปเบเปเบญเบ", เปเบเปเบเปเบฒเบกเบฑเบเบเบฐเบซเบเบฑเบเปเบเบดเบ, เบเบฑเบเบเบฑเบเบซเบฒเปเบฅเบฐเบเปเปเปเบฎเบฑเบเปเบซเปเปเบเบตเบเปเบซเบกเป - เปเบเบฑเบเบซเบเบฑเบ?
PS
เบญเปเบฒเบเบเบฑเบเบขเบนเปเปเบ blog เบเบญเบเบเบงเบเปเบฎเบปเบฒ:
- "เบเบฐเบเบดเบเบฑเบเบเบฑเบ dapp" (เปเบเป symfony-demo เปเบเบฑเบเบเบปเบงเบขเปเบฒเบ):
เบเบฒเบโเบเบต 1 (เบเบฒเบโเบเปเปโเบชเปเบฒเบโเบเปเบฒโเบฎเปเบญเบโเบชเบฐโเบซเบกเบฑเบโเบเปเบฒเบโเบเบฒเบโ) ะธเบเบฒเบโเบเบต 2 (เบเบฒเบโเบเปเบฒโเปเบเปโเบฎเบนเบโเบเบฒเบ Docker เบเบฑเบ Kubernetes เบเบฒเบโเบเปเบฒโเปเบเป Helmโ) ; - ยซ
เบเบฒเบเบเบตเบงเบดเบเบเบฑเบ Kubernetes: เบงเบดเบเบตเบเบตเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ HTTP เบเปเปเบกเบฑเบเบเบฒเบงเบชเบฐเปเบเบ ".
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com