แแแแแกแแแแ แแแแแ แแแฆแแแ แแแขแแแ แแแแก แแ แแแฅแขแแแแก แจแแแฃแจแแแแแ แแแแแฎแแแก แแแแกแแแฃแแ แแแฃแ แแแแแแแแก แแ แกแแแชแแแแฃแ แ แฎแแแกแแฌแงแแแแแก แแแแแงแแแแแแก, แแแแ แแ แ แแแแกแแช แกแแฅแแ แแฎแแแ PHP-แจแ แแแแแแแชแแแแก, แกแแขแฃแแชแแ แจแแแซแแแแ แแแแแแแ แแแแฌแแแแแแก, แ แแ แแฅแแแ แฃแแแ แแแแแแแแแ แแ, แแแแแแแแแ,
แจแแแแฎแแแแแก แแแแ แ แแ แแก PHP แแแแแแแชแแ, แ แแแแแแช แแแคแฃแซแแแแฃแแแ symfony 2.3 แฉแแ แฉแแแ, แ แแแแแแช แกแแแ แแแ แแ แจแแแแก แแแแแฎแแแแแก แแแแแแก แแแแแแแจแ. แกแแกแแแก แกแแแแแแ แกแขแแแแแ แขแฃแแ แจแแแแฎแแแก แแแ แแ, แแ แแ แแแฅแขแแ แกแ แฃแแแ แแแแแแงแแแ "แงแแแแแคแ แแก แฅแแจแแ แแแแก" แแแแแขแแแ memcached-แจแ: แแแแแชแแแแ แแแแแก แแ API แกแแ แแแ แแแแก แแแแฎแแแแแแแ แแแกแฃแฎแแแ, แกแฎแแแแแกแฎแแ แแ แแจแแแ, แกแแแแขแแแ แแแแแก แจแแกแ แฃแแแแแก แกแแแฅแ แแแแแแชแแแกแแแแก แแ แแ แแแแแ แกแฎแแ. แแกแแ แกแแขแฃแแชแแแจแ, แแแแฅแแจแแก แแแจแแ แคแแขแแแฃแ แ แฎแแแแ แแแแแแแชแแแก แแฃแจแแแแแกแแแแก. แแแ แแ แแแแกแ, แฅแแจแแก แแแแแ แแแ แแฌแแแแก แกแแ แแแแฃแ แจแแแแแแแก: DBMS แแฌแงแแแก แแคแแแฅแแแแก แแแแแ แแแแ, API แกแแ แแแกแแแ แแฌแงแแแแ แแแแฎแแแแแแแก แแแ แซแแแแแก แแ แ.แจ. แกแแขแฃแแชแแแก แกแขแแแแแแแแชแแแก แจแแกแแซแแแ แแแแแแ แฌแฃแแ แแแกแญแแ แแแก แแ แแ แแ แแแก แแแแแแแแแแแจแ แกแแ แแแกแ แกแแจแแแแแ แแแแ แแ แกแ แฃแแแแ แแแฃแฌแแแแแแแ แแฅแแแแ.
แฉแแแ แแแญแแ แแแแแแ แฃแแ แฃแแแแแงแแคแ แแแแแแแชแแแก แฐแแ แแแแแขแแแฃแ แ แแแกแจแขแแแแก แจแแกแแซแแแแแแแ แแชแแ แ แซแแแแกแฎแแแแแ, แ.แ. แกแแฌแงแแก แแแแจแ แแแแแแแแฃแ แ แชแแแแแแแแแแ แแ แกแ แฃแแ แคแฃแแฅแชแแแแแแฃแ แ แจแแแแ แฉแฃแแแแแ. แแแแแแแแ แฅแแจแ แแ แ แแฎแแแแ แฌแแ แฃแแแขแแแแแแแกแแแแ แแแแ แแแ, แแ แแแแ แจแแแชแแแแ แแแแแแฃแแแแแ แแแแงแแแแแ แแแกแแแ แแแแแชแแแแแแก แแแแแ แแแ.
แ แแกแ แแ แแแแ แแแแแ แแแแฅแแจแ?
แแแแแแแ, PHP-แแก memcached แแแคแแ แแแแแ แแฎแแ แก แฃแญแแ แก แแแแแฌแแแแแฃแ แแแแแชแแแแแก แแ แกแแกแแแก แจแแแแฎแแแก แงแฃแแแแแ. แแแกแแฆแแแแก แแแแแแแแแแ แฃแแ แฐแแจแแ แแแแก แแแฅแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแแแ แแ แแแแแแแกแแ แแแแแชแแแแแ แแแแ แกแแ แแแ แแ, แชแแแกแแฎแแ แแแแแ แแแ แแแแแแฃแ แแแแแ แแขแฃแ แแแแแแจแก แฏแแฃแคแแก แแแแแ แแขแฃแ แกแแ แแแ แแ, แฎแแแ แฉแแจแแแแแฃแแ failover แแแกแขแ แฃแแแแขแแแ แฃแแ แฃแแแแแงแแคแก แฅแแจแแ แแแแก แกแแ แแแกแแก แแแฆแแ แฎแแแแแกแแฌแแแแแแแแก (แแแแ แแ, แกแแแฌแฃแฎแแ แแ, แแแแแชแแแแแ แแ แแ แแก).
แกแแกแแแแแก แจแแแแฎแแแกแแแ แแแแแแจแแ แแแแ แงแแแแแคแแ แ แชแแขแแแ แฃแแแแแกแแ: แจแแแแซแแแแ แแแแคแแแฃแ แแชแแ memcached.sess_number_of_replicas
, แ แแก แจแแแแแแแแช แแแแแชแแแแแ แแ แแแ แแฃแแแ แ แแแแแแแแ แกแแ แแแ แแ แจแแแแแฎแแแ แแ แแ แแ แแแแฅแแจแแก แแแกแขแแแชแแแก แฌแแ แฃแแแขแแแแแแแก แจแแแแฎแแแแแจแ แแแแแชแแแแแ แแแแแแชแแแ แกแฎแแแแแกแแแ. แแฃแแชแ, แแฃ แกแแ แแแ แ แแแขแแ แแแขแจแ แแแแ แฃแแแแแ แแแแแชแแแแ แแแ แแจแ (แ แแแแ แช แฉแแแฃแแแแ แแ แฎแแแแ แแแแแขแแแ แแแแก แจแแแแแ), แแแแแแ แแ แแแกแแฆแแแ แแแแแแแฌแแแแแแ แแแก แกแแกแแ แแแแแแ. แกแแแแแแแแแแจแ แแก แแแจแแแแก แกแแกแแแก แแแแแชแแแแแแก แแแแแ แแแ, แ แแแแแ แแ แแ แกแแแแแก แแแ แกแฎแแ แ แแแแแแแแ "แฌแแกแแแแก" แจแแแแฎแแแแแจแ แแแแแขแแแแแแก แจแแแแฎแแแแแจแ.
แกแขแแแแแ แขแฃแแ แแแแแแแแแแแก แแแกแขแ แฃแแแแขแแแ แซแแ แแแแแแ แแแแแ แแฃแแแ แฐแแ แแแแแขแแแฃแ แ แกแแแแแ แแแ: แแกแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแแ แแแ แฅแแจแ แแแแแแขแฃแ แแแแแแแแแ แแ แฃแแ แฃแแแแแงแแ แแแกแแ แฌแแแแแ แกแฎแแแแแกแฎแแ แกแแ แแแ แแ แแแแแแแกแแแฃแแ แแแแแแแ. แแฃแแชแ, แฉแแแแก แกแแขแฃแแชแแแจแ, แจแแแแฎแฃแแ แแแแแชแแแแแแก แแแชแฃแแแแ แแ แแฆแแแแขแแแ แ แแแแแแแแ แแแแแแแแขแก แแ แแ แแ แแ แแ แ แแแแแซแแก แจแแกแ แฃแแแแ แกแแแกแแแแ แกแแแแแ แแกแแ. แจแแกแแแแแแกแแ, แแ แแแแแ แแ แกแแกแแ แแแแแ แกแขแแแแแ แขแฃแแ แฎแแแกแแฌแงแแแแ แจแแแซแแแแ แแงแแก แแแแฅแแจแแก แฎแแแแแกแแฌแแแแแแแแก แฃแแ แฃแแแแแกแแงแแคแแ, แแแแแแฃแ แแ แแ แฅแแจแ แแแกแขแแแชแแแก แกแแแฃแจแแ แแแแแแแ แแแแแจแ แจแแแแ แฉแฃแแแแแกแแก. แแฃแแชแ แแ แจแแกแแซแแแแแแแแ แกแแ แแแแแแแแช แแ แแแ แแแฎแแ แฎแแ... แแฅ แฃแแแ แแแแแฎแกแแแแ แแ แแแฅแขแจแ แแแแแงแแแแแฃแแ แคแ แแแแแ แแก แกแแซแแแแ, แ แแก แแแแแช แจแแฃแซแแแแแแ แแแฎแแ แแแแแแแชแแแก แกแแ แแแ แแแแก แแฃแแแแ แแฃแจแแแแ. แแกแแแ แแ แแแแแแแฌแงแแ แกแแกแแแก แแแแแชแแแแแแก แแแแแ แแแ: แแแแฎแแแ แแแแแแ แแแแแ แแแ แแแ แแแแฎแแแ แแแแแแ แแแกแแฃแ แ แแแแแกแแแแแแ.
แแแแแแฃแ แจแแแแฎแแแแแจแ แกแแญแแ แ แแงแ แฉแแแแฌแแ แแแแก แ แแแแแแแชแแ แแแแฅแแจแแ แแแฃแ แแ แ แแแแแแแแแก แแแแ แแแก แแแแแ แจแแชแแแแแก แแ แจแแชแแแแแก แจแแแแฎแแแแแจแ. แแแแแแฎแแแ แ แแ แกแขแ แแขแแแแแก แแแแฎแแ แชแแแแแแแจแ
แแแแ แแฃแขแแ แ
แแก แแ แแก memcached แ แแฃแขแแ แ, แ แแแแแแช แจแแแฅแแแ Facebook-แแก แแแแ แแแกแ แแ แแแแแแแแแก แแแแแกแแญแ แแแแ. แแแ แแฎแแ แก แฃแญแแ แก แแแแฅแแจแแ แแแฃแ แขแแฅแกแขแฃแ แแ แแขแแแแแก, แ แแช แกแแจแฃแแแแแแก แแซแแแแ แแแกแจแขแแแฃแ แ memcached แแแกแขแแแแชแแแแ แแแแฃแ แ แแ แแแแ แชแแแแแ. แแแแ แแฃแขแแ แแก แแแขแแแฃแ แ แแฆแฌแแ แ แจแแแแซแแแแ แแฎแแแแ แแฅ
- แ แแแแแแแชแแแก แฉแแแแฌแแ แ;
- แจแแชแแแแแก แจแแแแฎแแแแแจแ แจแแชแแแแแ แฏแแฃแคแจแ แกแฎแแ แกแแ แแแ แแแแ.
แจแแฃแแแฅแแ แกแแฅแแแก!
แแแแ แแฃแขแแ แแก แแแแคแแแฃแ แแชแแ
แแแ แแแแแ แแแแคแแแฃแ แแชแแแแ แแแแแแแ:
{
"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: แแกแแแ แจแแแแซแแแแ แแแแแแ แกแแกแแ แแแแแ แแแฃแแแแ แแแแ แแฃแขแแ แแก แจแแกแแกแฌแแแแแ
แแแแ แแฃแขแแ แแก แแจแแแแแ แแ แแแจแแแแ
แฉแแแแ แแแแแแแชแแ (แแ แแแแแ memcached) แแฃแจแแแแก Kubernetes-แจแ - แจแแกแแแแแแกแแ, แแฅแแ แแแแแแ แแแแก 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: ASCII แแ แแขแแแแแ memcached-แจแ แฃแคแ แ แแแแแ, แแแแ แ แแ แแแแแ แแ แแแกแแฆแแแแก แแแแแแแแแแ แฃแแ แฐแแจแแ แแแแก แกแขแแแแแ แขแฃแแ แกแแจแฃแแแแแแแ แแฃแจแแแแก แแฎแแแแ แแ แแแแ แแ แแขแแแแแแแ. แแแแ แแ แแก แแ แฅแแแแก แแ แแแแแแแแก แแแแแ แแขแฃแแ แจแแแแฎแแแแแกแแแแก.
แฎแ แแแ แฉแแแแแจแแ: แกแแแแแ แแกแแ แแแแแฎแแแแแ ASCII แแ แแขแแแแแแ แแ แงแแแแแคแแ แ แแแฃแจแแแแแก.... แแฃแแชแ, แแ แจแแแแฎแแแแแจแ, แแแกแฃแฎแแแแก แซแแแแแก แฉแแแแ
แแแแฎ, แกแฌแแ แ แแแ แแแแขแแก แกแแฎแแแแ memcached.sess_binary_protocol
. แแก แฃแแแ แแงแแก แแแแแ แแฃแแ, แ แแก แจแแแแแแแช แกแแกแแแแ แแแแฌแงแแแก แแฃแจแแแแแก. แ แฉแแแ แแฎแแแแ แแแแขแแแแแ แแก mcrouter-แแ แฉแแกแแ แแแแจแ PHP-แแ!
แแแกแแแแ
แแแ แแแแ, แแฎแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แฃแแ แชแแแแแแแแแแ แฉแแแ แจแแแซแแแแ แแ แแแแแแแก แแแแแญแ แ: แแแแฅแแจแแ แแแฃแแ แจแแชแแแแแแแก แขแแแแ แแแขแแแแก แกแแแแแฎแ แแแแแแ แแแฃแแแ แแ แแแแแแ แแ แฅแแจแ แจแแแแฎแแแก แกแแแแแแแแแ. แแแแแแแชแแแกแแแแก แแจแแแ แ แฃแแแ แแขแแกแแแแแแก แแแ แแ, แแแแ แแแแแแ แแ แแแแก แแแแแแ แแแกแชแ แแแแขแคแแ แแแแ แแฃแจแแแแแกแแก: แ แแแแกแแช แงแแแแ แแแแแแแแแขแก แแฅแแก แ แแแแ แแ, แแแแแแแกแขแ แแขแแ แแก แชแฎแแแ แแแ แแแแจแแแแแแแแแ แแแแแ แขแแแแแฃแแแ. แแแแฎ, แแ แแแแแแกแแช แแฅแแก แแแแแกแ แแแแแแแแแแแแแ, แจแแแซแแแแ โแงแแแแ แฏแแแกโ แฐแแแแแแก, แแแแ แแ แแฃ แแก แแแแแแแแก แคแฃแแก, แแแแแ แฎแแแก แแ แแแแแแแก แแ แแ แแฌแแแแก แแฎแแแก - แ แแขแแแแช แแ แ?
PS
แแกแแแ แฌแแแแแแฎแแ แฉแแแแก แแแแแแ:
- "แแแแ แฏแแจแแ dapp-แแ" (แแแแแแแแแ แกแแแคแแแ-แแแแ แแแแแงแแแแแแ):
แแแฌแแแ 1 (แแแ แขแแแ แแแแแแแชแแแแแก แจแแฅแแแ) ะธแแแฌแแแ 2 (แแแแแ แแก แกแฃแ แแแแแแก แแแแแแแกแแแ Kubernetes-แแ Helm-แแก แแแแแงแแแแแแ) ; - ยซ
Kubernetes-แแแ แชแฎแแแ แแแแแแ: แ แแแแ แแ แแแฎแ แแแแแ HTTP แกแแ แแแ แ แแกแแแแแแแแก ".
แฌแงแแ แ: www.habr.com