ืึธืืขืจ ืืื ืืืจ ืืขืฉืจืืื ืึท ืงืืืขื ื C ++ ืืืืืืึธืืขืง ืคึฟืึทืจ ZooKeeper, etcd ืืื Consul KV
ืืื ืืขืจ ืืืขืื ืคืื ืคืื ืื ืืขืจืืขืืืืื ืกืืกืืขืืขื, ืขืก ืืขื ืขื ืึท ื ืืืขืจ ืคืื ืืืคึผืืฉ ืืึทืกืงืก: ืกืืึธืจืื ื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืขื ืืึทืฅ ืคืื ืื ืงื ืืื, ืึธื ืคืืจืื ื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื ื ืึธืืื, ืืืืขืงืืื ื ืคืึธืืื ื ืึธืืื, ืืฉืืืื ื ืึท ืคืืจืขืจ
ืืื ืขืกืึทื ืก, ืึทืืข ืื ืกืืกืืขืืขื ืืขื ืขื ืฉืืื-ืืึธืืขืจืึทื ื, ืืื ืขืึทืจืืืึทืืืข ืฉืืืกื-ืืืขืจื ืกืืึธืจื. ืืึธืืฉ ืืืืขืจ ืืึทืื ืืึธืืขืืก ืืึธืื ืืึทืืืึทืืืง ืืืคืขืจืึทื ืกืื, ืืืึธืก ืืืจ ืืืขืื ืืืกืงืืืืจื ืฉืคึผืขืืขืจ, ืืื ืกืึธืืืืข ืื ืืขืืืข ืคึผืจืึทืงืืืฉ ืคึผืจืึธืืืขืืก. ืืึธื, ืืขืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืืึธืก ื ืืฆื ืื ืงืึธืืึธืจืืึทื ืืืฉืึทื ืืื ืกื ืืื ืืืื ืฆื ืืืื ืขืจ ืคืื ืืื, ืืืึธืก ืงืขื ืคืืจื ืฆื ืื ื ืืื ืฆื ืฉืืืฆื ืขืืืขืืข ืกืืกืืขืืขื ืืื ืืืื ืืึทืื ืฆืขื ืืขืจ ืืืึธืก ืกืึธืืืืข ืื ืืขืืืข ืคึผืจืึธืืืขืืก ืคึฟืึทืจ ืคืึทืจืฉืืืขื ืข ืึทืคึผืืึทืงืืืฉืึทื ื.
ืืขืจ ืืขืืึทื ืง ืฆื ืกืึธืืืืข ืืขื ืคึผืจืึธืืืขื ืืื ืขืจืืืืฉืึทื ืืืืึทื ืืื ืึทื ืึทืืกืืจืึทืืืึทื ืงืึทื ืกืึทืืืื ื ืึทืืขื ืืืจ, ืืื ืขืก ืืื ืืขืคืืื ืฆื ืืื ืื, ืึท ืงืืืื ืืึทื ืฉืึทืคึฟื ืคืื ืกืืืืขื ืื, ืฆื ืื ืกืืจืืืขื ื ืขืก, ืืืึธืก ืืื ืืืึธืก ืืื ืืืขื ืจืขืื ืืืขืื.
ืืืจ ืืขืจืืื ืฆื ืฉืึทืคึฟื ืึท ืืืืืืึธืืขืง ืืืึธืก ืืื ืึท ืคึผืจืึธืกื ืฆืืืื ื ืคึฟืึทืจ ืืจืืขืื ืืื ZooKeeper, etcd ืืื Consul KV. ืื ืืืืืืึธืืขืง ืืื ืืขืฉืจืืื ืืื C ++, ืึธืืขืจ ืขืก ืืขื ืขื ืคึผืืึทื ื ืฆื ืึทืจืืืขืจืคืืจื ืขืก ืฆื ืื ืืขืจืข ืฉืคึผืจืึทืื.
ืืึทืืึท ืืึธืืขืืก
ืฆื ืึทื ืืืืืงืืขื ืึท ืคึผืจืึธืกื ืฆืืืื ื ืคึฟืึทืจ ืืจืื ืคืึทืจืฉืืืขื ืข ืกืืกืืขืืขื, ืืืจ ืืึทืจืคึฟื ืฆื ืคึฟืึทืจืฉืืืื ืืืึธืก ืืื ืืึธืื ืืื ืคึผืจืึธืกื ืืื ืืื ืืื ืึทื ืืขืจืฉ. ืืื ืก ืคืืืืจ ืขืก ืืืืก.
ืืึธืึธืงืขืขืคึผืขืจ
ืื ืฉืืืกืืขื ืืขื ืขื ืึธืจืืึทื ืืืืจื ืืื ืึท ืืืื ืืื ืืขื ืขื ืืขืจืืคื ื ืึธืืื. ืึทืงืงืึธืจืืื ืืื, ืคึฟืึทืจ ืึท ื ืึธืืข ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืืืึทื ืงืื ืืขืจ. ืื ืึทืคึผืขืจืืืฉืึทื ื ืคืื ืงืจืืืืืื ื ืึท ืื ืึธืืข (ืฉืึทืคึฟื) ืืื ืืฉืึทื ืืื ื ืึท ืืืขืจื (ืกืขืืืึทืืึท) ืืขื ืขื ืืคืืขืฉืืืื: ืืืืื ืืืืืกืืื ื ืฉืืืกืืขื ืงืขื ืขื ืืืื ืืืืขื ืขื ืืื ืืขืืืื. ืืืึทืืฉืื ืงืขื ืขื ืืืื ืึทืืึทืืฉื ืฆื ืื ืึทืคึผืขืจืืืฉืึทื ื ืคืื ืงืึธื ืืจืึธืืืจื ืื ืขืงืืืกืืขื ืฅ ืคืื ืึท ื ืึธืืข, ืืืืขื ืขื ืึท ืืืขืจื ืืื ืืึทืงืืืขื ืงืื ืืขืจ. ืืืึทื ืืื ืึท ืืืื-ืฆืืึทื ืฆืื ืื ืึทื ืคืืจื ืืืขื ืื ืืืขืจืกืืข ืคืื โโืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืึทืื ืืืืฃ ืื ืกืขืจืืืขืจ ืขื ืืขืจืื ืืขื. ืขืคืขืืขืจืึทื ื ืึธืืื ืืขื ืขื ืืขื ืืฆื ืฆื ืืขืืขืงื ืคืืืืืขืจื. ืืื ืืขื ืขื ืืืื ืฆื ืืขืจ ืกืขืกืืข ืคืื โโืืขืจ ืงืืืขื ื ืืืึธืก ืืืฉืืคื ืืื. ืืืขื ืึท ืงืืืขื ื ืงืืึธืืืื ืึท ืกืขืกืืข ืึธืืขืจ ืกืืึทืคึผืก ื ืึธืืืึทืคืืืื ื ZooKeeper ืคืื ืืืื ืขืงืืืกืืขื ืฅ, ืื ื ืึธืืื ืืขื ืขื ืืืืืึธืืึทืืืฉ ืืืืกืืขืืขืงื. ืคึผืฉืื ืืจืึทื ืืึทืงืฉืึทื ื ืืขื ืขื ืืขืฉืืืฆื - ืึท ืกืืื ืคืื ืึทืคึผืขืจืืืฉืึทื ื ืึทื ืึทืืข ืืขืจืึธืื ืึธืืขืจ ืืืจืืคืึทื ืืืื ืืึธืก ืืื ื ืื ืืขืืืขื ืคึฟืึทืจ ืืืึท ืืื ืืกืืขืจ ืืืื ืขืจ ืคืื ืืื.
ืขืืงื
ืื ืืขืืืขืืึธืคึผืขืจืก ืคืื ืืขื ืกืืกืืขื ืืขื ืขื ืงืืืจ ืื ืกืคึผืืืขืจื ืืืจื ZooKeeper, ืืื ืืขืจืืืขืจ ืืึธืื ืึทืืฅ ืึทื ืืขืจืฉ. ืขืก ืืื ืงืืื ืืืืขืจืึทืจืงื ืคืื ืฉืืืกืืขื, ืึธืืขืจ ืืื ืคืึธืจืขื ืึท ืืขืงืกืืงืึทืืจืึทืคืืงืึทืืื ืึธืจืืขืจื ืืึทื ื. ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืึธืืขืจ ืืืกืืขืงื ืึทืืข ืฉืืืกืืขื ืืืึธืก ืืขืืขืจื ืฆื ืึท ืืืืขืจ ืงืืื. ืื ืกืืจืืงืืืจ ืงืขื ืืืกืงืืืขื ืืึธืื ืข, ืึธืืขืจ ืขืก ืืื ืคืืงืืืฉ ืืืืขืจ ืืงืกืคึผืจืขืกืืื, ืืื ืึท ืืืืขืจืึทืจืงืึทืงืึทื ืืืื ืื ื ืงืขื ืขื ืืืื ืืืืื ืขืืืึทืืืืืื ืืืจื ืขืก.
etcd ืืื ื ืืฉื ืึท ื ืึธืจืืึทื ืคืึทืจืืืืึทืื-ืืื-ืฉืืขืื ืึธืคึผืขืจืึทืฆืืข, ืึธืืขืจ ืขืก ืืื ืขืคึผืขืก ืืขืกืขืจ: ืืจืึทื ืืึทืงืฉืึทื ื. ืคืื ืงืืจืก, ืืื ืขืงืกืืกืืืจื ืืื ืึทืืข ืืจืื ืกืืกืืขืืขื, ืึธืืขืจ ืขืืง ืืจืึทื ืืึทืงืฉืึทื ื ืืขื ืขื ืกืคึผืขืฆืืขื ืืื. ืืื ืฆืื ืืืคืฉืืขืื ืืื ืคืื ืืจืืึท ืืืึทืงืก: ืืฉืขืง, ืืฆืืื, ืืืจืืคืึทื. ืืขืจ ืขืจืฉืืขืจ ืืืึธืง ืึผืืื ืึท ืกืืื ืคืื ืืืืื ืืื ืืขื, ืื ืจืืข ืืื ืืจืื - ืึทืคึผืขืจืืืฉืึทื ื. ืื ืืจืึทื ืกืึทืงืืืึธื ืืื ืขืงืกืึทืงืืืืึทื ืึทืืึธืืืฉืข. ืืืื ืึทืืข ืืืืื ืืื ืืขื ืืขื ืขื ืืืช, ืืขืจ ืืฆืืื ืืืึธืง ืืื ืขืงืกืึทืงืืืืึทื, ืึทื ืืขืจืฉ ืื ืืืจืืคืึทื ืืืึธืง ืืื ืขืงืกืึทืงืืืืึทื. ืืื ืึทืคึผื 3.3, ืืฆืืื ืืื ืืืจืืคืึทื ืืืึทืงืก ืงืขื ืขื ืึทื ืืืึทืืื ื ืขืกืืขื ืืจืึทื ืืึทืงืฉืึทื ื. ืึทื ืืื, ืขืก ืืื ืืขืืืขื ืฆื ืึทืืึธืืืฉืข ืืืกืคืืจื ืงืึทื ืืืฉืึทื ืึทื ืงืึทื ืกืืจืึทืงืฉืึทื ื ืคืื ืึผืืขื ืึทืจืืืืจืึทืจืืฉ ื ืขืกืืื ื ืืืจืื. ืืืจ ืงืขื ื ืืขืจื ืขื ืืขืจ ืืืขืื ืืืึธืก ืืฉืขืงืก ืืื ืึทืคึผืขืจืืืฉืึทื ื ืขืงืกืืกืืืจื
ืืืึทืืฉืื ืขืงืกืืกืืืจื ืืึธ ืืืื, ืืึธืืฉ ืืื ืืขื ืขื ืึท ืืืกื ืืขืจ ืงืึธืืคึผืืืฆืืจื ืืื ืืขื ืขื ืจืืืืึทืืึทื. ืืึธืก ืืืืกื, ื ืึธื ืื ืกืืึธืืื ื ืึท ืืืึทื ืืืืฃ ืึท ืฉืืืกื ืงืืื, ืืืจ ืืืขื ืืึทืงืืืขื ืึทืืข ืืขืจืืืึทื ืืืงืื ืืขื ืืื ืืขื ืงืืื ืืื ืืืจ ืืึธืื ืืึทืื ืื ืืืึทื, ืืื ื ืืฉื ืืืืื ืืขืจ ืขืจืฉืืขืจ. ืืื ืขืืง, ืื ืึทื ืึทืืึธื ืคืื ZooKeeper ืงืืืขื ื ืกืขืฉืึทื ื ืืขื ืขื ืืืกืื.
ืงืึธื ืกืื ืง.ืื.
ืขืก ืืื ืืืื ืงืืื ืฉืืจืขื ื ืืืืขืจืึทืจืงืึทืงืึทื ืกืืจืืงืืืจ ืืึธ, ืึธืืขืจ ืงืึธื ืกืื ืงืขื ืขื ืืึทืื ืื ืืืืกืืขื ืึทื ืขืก ืืืืืกืฅ: ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืืื ืืืกืืขืงื ืึทืืข ืงืื ืืื ืื ืกืคึผืขืกืืคืืขื ืคึผืจืขืคืืงืก, ืืึธืก ืืื, ืึทืจืืขื ืืื ืึท "ืกืืืืจื" ืคืื ืื ืฉืืืกื. ืึทืืึท ืคึฟืจืืื ืืขื ืขื ืืขืจืืคื ืจืขืงืืจืกืืืืข. ืืื ืึทืืืฉืึทื, ืงืึธื ืกืื ืงืขื ืขื ืืืืกืงืืืึทืื ืืืืื ืฉืืืกืืขื ืืืึธืก ืืึธื ื ืื ืึทื ืืืึทืืื ืื ืกืคึผืขืกืืคืืขื ืืึทืจืึทืงืืขืจ ื ืึธื ืื ืคึผืจืขืคืืงืก, ืืืึธืก ืงืึธืจืึทืกืคึผืึทื ืื ืฆื ืืึทืงืืืขื ืืึทืืืืง "ืงืื ืืขืจ". ืืืขืจ ืขืก ืืื ืืืื ืฆื ืืขืืขื ืงืขื ืึทื ืืึธืก ืืื ืคึผืื ืงื ืืขืจ ืืืืกืืขื ืคืื ืึท ืืืืขืจืึทืจืงืึทืงืึทื ืกืืจืืงืืืจ: ืขืก ืืื ืืึทื ืฅ ืืขืืืขื ืฆื ืฉืึทืคึฟื ืึท ืฉืืืกื ืืืื ืืืื ืคืึธืืขืจ ืืื ื ืืฉื ืขืงืกืืกืืืจื ืึธืืขืจ ืืืกืืขืงื ืึท ืฉืืืกื ืืื ืงืื ืืขืจ, ืืื ืื ืงืื ืืขืจ ืืืขืื ืคืึธืจืืขืฆื ืฆื ืืืื ืกืืึธืจื ืืื ืื ืกืืกืืขื.
ืึทื ืฉืืึธื ืืืึทืืฉืื, ืงืึธื ืกืื ืืื ืืืึทืงืื ื ืืืืคึผ ืจืืงืืืขืก. ืืื ืขืกืึทื ืก, ืืึธืก ืืขื ืขื ืคึผืจืึธืกื ืจืืคื ืฆื ืื ืืึทืื ืืืืขื ืขื ืืืคึฟื, ืคึฟืึทืจ ืืืึธืก, ืฆืืืืืขื ืืื ืื ืืขืจืข ืคึผืึทืจืึทืืขืืขืจืก, ืื ืืขืฆืืข ืืืงืื ื ืืืขืจืกืืข ืคืื โโืื ืืึทืื ืืื ืื ืืขืืืืื. ืืืื ืื ืงืจืึทื ื ืืืขืจืกืืข ืคืื โโืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืืึทืื ืืืืฃ ืื ืกืขืจืืืขืจ ืืื ืืจืขืกืขืจ ืืื ืื ืกืคึผืขืกืืคืืขื ืืืื ืขืจ, ืืขืจ ืขื ืืคืขืจ ืืื ืืื ืืืืืขืงืขืจื, ืึทื ืืขืจืฉ - ืืืขื ืื ืืืขืจื ืขื ืืขืจืื ืืขื. ืขืก ืืขื ืขื ืืืื ืกืขืฉืึทื ื ืืืึธืก ืงืขื ืขื ืืืื ืึทืืึทืืฉื ืฆื ืฉืืืกืืขื ืืื ืงืืื ืฆืืื. ืขืก ืืื ืืืื ืฆื ืืืืขืจืงื ืึทื ื ืื ืขื ืืขื ืขืืง ืืื ZooKeeper, ืืื ืืืืืืื ื ืกืขืฉืึทื ื ืคืืจื ืฆื ืื ืืืกืืขืงื ืคืื ืคึฟืึทืจืืื ืื ืฉืืืกืืขื, ืขืก ืืื ืึท ืืึธืืข ืืื ืืืึธืก ืื ืกืขืกืืข ืืื ืคืฉืื ืึทื ืืื ืงืขื ืคึฟืื ืืื. ืื ืืืฆื
ืคึผืึทืืื ื ืขืก ืึทืืข ืฆืืืึทืืขื
ZooKeeper ืืื ืื ืืขืจืกื ืฉืืจืขื ื ืืึทืื ืืึธืืขื. ืื ืืงืกืคึผืจืขืกืืื ืงืืื ืงืืืืจืื ืื ืืืฆื ืืื ืขืืง ืงืขื ืขื ื ืื ืืืื ืืคืขืงืืืืืื ืขืืืึทืืืืืื ืืื ZooKeeper ืึธืืขืจ ืงืึธื ืกืื. ืืจืืื ื ืฆื ืื ืงืึธืจืคึผืขืจืืื ืื ืืขืกืืขืจ ืคืื ืึทืืข ืื ืกืขืจืืืืกืขืก, ืืืจ ืขื ืืืงื ืืื ืืื ืึท ืฆืืืื ื ืึผืืขื ืขืงืืืืืืึทืืขื ื ืฆื ืื ZooKeeper ืฆืืืื ื ืืื ืื ืคืืืืขื ืืข ืืึทืืืืืืง ืืืืกื ืขืืขื:
ืกืืงืืืึทื ืก, ืงืึทื ืืืื ืขืจ ืืื ืืื ื ืึธืืื ื ืื ืืขืฉืืืฆื- ACLs ืืขื ืขื ื ืืฉื ืืขืฉืืืฆื
- ืืขืจ ืฉืืขืื ืืืคึฟื ืงืจืืืืฅ ืึท ืฉืืืกื ืืืื ืขืก ืืื ื ืืฉื ืขืงืกืืกืืืจื (ืืื ZK setData ืงืขืจื ืึท ืืขืืช ืืื ืืขื ืคืึทื)
- ืฉืืขืื ืืื ืงืึทืก ืืขืืืึธืืก ืืขื ืขื ืืคืืขืฉืืืื (ืืื ZK ืืื ืืขื ืขื ืืกืขื ืฉืึทืื ืื ืืขืืืข ืืึทื)
- ืื ืืขืงื ืืืคึฟื ืืืืืกืื ืึท ื ืึธืืข ืฆืืืืืขื ืืื ืืืื ืกืืืืจืืข (ืืื ZK ืืืกืืขืงื ืงืขืจื ืึท ืืขืืช ืืืื ืืขืจ ื ืึธืืข ืืื ืงืื ืืขืจ)
- ืคึฟืึทืจ ืืขืืขืจ ืฉืืืกื ืขืก ืืื ืืืืื ืืืื ืืืขืจืกืืข - ืื ืืืขืจื ืืืขืจืกืืข (ืืื ZK
ืขืก ืืขื ืขื ืืจืืึท ืคืื ืืื )
ืื ืจืืืืฉืขืงืฉืึทื ืคืื ืกืึทืงืืืขื ืืฉืึทื ื ืึธืืื ืืื ืจืขืื ืฆื ืืขื ืคืึทืงื ืึทื ืขืืง ืืื ืงืึธื ืกืื ืืึธื ื ืื ืืึธืื ืึท ืืขืืืื-ืืื ืฉืืืฆื ืคึฟืึทืจ ืืื, ืืื ืืื ืงืขื ืขื ืืืื ืืืืื ืืืคึผืืึทืืขื ืึทื ืืืจื ืื ืืึทื ืืฆืขืจ ืืืืฃ ืฉืคึผืืฅ ืคืื ืื ืจืืืึทืืืื ื ืืืืืืึธืืขืง ืฆืืืื ื.
ืืืคึผืืึทืืขื ืืื ื ื ืึทืืืจ ืขื ืืขื ืฆื ZooKeeper ืืืขื ืืืืืืื ื ืึท ืืืขืจืืขืงืก ืืืึธืื ืืึทืจืคื ืึท ืืึทืืื ืืขืจ ืงืื ื ืืึธืืืึทื ืง ืคึฟืึทืจ ืืขืืขืจ ืฉืืืกื ืืื ืขืืง ืืื ืงืึธื ืกืื. ืืื ื ืืืจ ืืขืคืจืืืื ืฆื ืืืกืืืืื ืกืืึธืจืื ื ืืขืืึท ืืื ืคึฟืึธืจืืึทืฆืืข, ืขืก ืืื ืืึทืฉืืึธืกื ืฆื ืืืกืืขืงื ืื ืืื ืฆืข ืกืืืืจืืข.
ืกืึทืืึทืืืื ืคืื ืืืคึผืืึทืืขื ืืืืฉืึทื
ืืื ืก ื ืขืืขื ืึท ื ืขืขื ืืขืจ ืงืืง ืืื ืขืืืขืืข ืึทืกืคึผืขืงืฅ ืคืื ืืืคึผืืึทืืขื ืื ื ืื ืืืืืืึธืืขืง ืฆืืืื ื ืืื ืคืึทืจืฉืืืขื ืข ืกืืกืืขืืขื.
ืืืืขืจืึทืจืงื ืืื ืขืืง
ืึธื ืืึทืืื ืึท ืืืืขืจืึทืจืงืึทืงืึทื ืืืื ืื ื ืืื ืขืืง ืืื ืืขืืืขื ืืืื ืขืจ ืคืื ืื ืืขืจืกื ืืฉืืงืึทืืืข ืืึทืกืงืก. ืงืืื ืงืืืืจืื ืืึทืื ืขืก ืืจืื ื ืฆื ืฆืืจืืงืงืจืืื ืึท ืจืฉืืื ืคืื ืฉืืืกืืขื ืืื ืึท ืกืคึผืขืกืืคืืขื ืคึผืจืขืคืืงืก. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืืืจ ืืึทืจืคึฟื ืึทืืฅ ืืืึธืก ืกืืึทืจืฅ ืืื "/foo"
, ืืืจ ืืขื ื ืึทืกืงืื ื ืคึฟืึทืจ ืึท ืงืืื ["/foo", "/fop")
. ืึธืืขืจ ืืึธืก ืืืึธืื ืฆืืจืืงืงืืืขื ืื ืืื ืฆืข ืกืืืืจืืข ืคืื โโโโืืขื ืฉืืืกื, ืืืึธืก ืงืขื ื ืืฉื ืืืื ืคึผืึทืกืืง ืืืื ืื ืกืืืืจืืข ืืื ืืจืืืก. ืืื ืขืจืฉืืขืจ ืืืจ ืคึผืืึทื ื ืขื ืฆื ื ืืฆื ืึท ืฉืืืกื ืืืืขืจืืขืฆืื ื ืืขืงืึทื ืืืึทื,
"/foo" -> "u01/foo"
"/foo/bar" -> "u02/foo/bar"
ืืขืจืืืขืจ ืืึทืงืืืขื ืึทืืข ืืึทืืืืง ืงืื ืืขืจ ืคืื ืื ืฉืืืกื "/foo"
ืืขืืืขื ืืืจื ืจืืงืืืขืกืืื ื ืึท ืงืืื ["u02/foo/", "u02/foo0")
. ืืึธ, ืืื ASCII "0"
ืฉืืืื ืืืืื ื ืึธื "/"
.
ืืืขืจ ืืื ืฆื ืื ืกืืจืืืขื ื ืื ืืึทืืืึทืืืงืื ื ืคืื ืึท ืืืขืจืืขืงืก ืืื ืืขื ืคืึทื? ืขืก ืืืจื ืก ืืืืก ืึทื ืืืจ ืืึทืจืคึฟื ืฆื ืืืกืืขืงื ืึทืืข ืจืืื ืืืฉืึทื ืคืื ืืขื ืืืคึผ ["uXX/foo/", "uXX/foo0")
ืคึฟืึทืจ XX ืคืื 01 ืฆื FF. ืืื ืืขืืึธืื ืืืจ ืืขืืืคื ืืื
ืืื ืึท ืจืขืืืืืึทื, ืึท ืคึผืฉืื ืฉืืืกื ืงืึทื ืืืขืจืืฉืึทื ืกืืกืืขื ืืื ืื ืืืขื ืืึทื, ืืืึธืก ืืขืืืื ืขืก ืืขืืืขื ืฆื ืืคืขืงืืืืืื ืื ืกืืจืืืขื ื ืืืืืข ืืืืืืื ื ืึท ืฉืืืกื ืืื ืืึทืงืืืขื ืึท ืจืฉืืื ืคืื ืงืื ืืขืจ. ืขืก ืืื ืืขื ืื ืฆื ืืืืื ืึท ืกืคึผืขืฆืืขื ืืึทืจืึทืงืืขืจ ืืืืืขืจ ืื ืืขืฆืืข ืกืืืขื. ืืืฉื:
"/very" -> "/u00very"
"/very/long" -> "/very/u00long"
"/very/long/path" -> "/very/long/u00path"
ืืขืจื ืึธื ืืืกืืขืงื ืื ืฉืืืกื "/very"
ืืืขืจื ืืืืกืืขืืขืงื "/u00very"
ืืื ืงืืื ["/very/", "/very0")
, ืืื ืืึทืงืืืขื ืึทืืข ืงืื ืืขืจ - ืืื ืึท ืืงืฉื ืคึฟืึทืจ ืฉืืืกืืขื ืคืื ืื ืงืืื ["/very/u00", "/very/u01")
.
ืจืืืืืืื ื ืึท ืฉืืืกื ืืื ZooKeeper
ืืื ืืื ืฉืืื ืืขืจืืื ื, ืืื ZooKeeper ืืืจ ืงืขื ืขื ื ืืฉื ืืืกืืขืงื ืึท ื ืึธืืข ืืืื ืขืก ืืื ืงืื ืืขืจ. ืืืจ ืืืืื ืฆื ืืืกืืขืงื ืืขื ืฉืืืกื ืฆืืืืืขื ืืื ืื ืกืืืืจืืข. ืืืืก ืืื ืืื ืืื? ืืืจ ืืึธื ืืึธืก ืืื ืึธืคึผืืืืืื. ืขืจืฉืืขืจ, ืืืจ ืจืขืงืืจืกืืืืขืื ืืืจืืคืึธืจ ืื ืกืืืืจืืข, ืืืงืืืขื ืื ืงืื ืืขืจ ืคืื ืืขืืขืจ ืืืขืจืืขืงืก ืืื ืึท ืืึทืืื ืืขืจ ืึธื ืคึฟืจืขื. ืืขืจื ืึธื ืืืจ ืืืืขื ืึท ืืจืึทื ืกืึทืงืืืึธื ืึทื ืคืจืืืื ืฆื ืืืกืืขืงื ืึทืืข ื ืึธืืื ืคืื ืื ืกืืืืจืืข ืืื ืื ืจืืืืืง ืกืืจ. ืคืื ืงืืจืก, ืขื ืืขืจืื ืืขื ืงืขื ืขื ืคึผืึทืกืืจื ืฆืืืืฉื ืืืืขื ืขื ืึท ืกืืืืจืืข ืืื ืืืกืืขืงื ืขืก. ืืื ืืขื ืคืึทื, ืื ืืจืึทื ืกืึทืงืืืึธื ืืืขื ืคืึทืจืืึธืื. ืืขืจืฆื, ืื ืกืืืืจืืข ืงืขื ืืืืฉื ืืขืฉืึทืก ืื ืืืืขื ืขื ืคึผืจืึธืฆืขืก. ื ืืงืฉื ืคึฟืึทืจ ืื ืงืื ืืขืจ ืคืื ืืขืจ ืืืืึทืืขืจ ื ืึธืืข ืงืขื ืฆืืจืืงืงืืืขื ืึท ืืขืืช ืืืื, ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืขื ื ืึธืืข ืืื ืฉืืื ืืืืกืืขืืขืงื. ืืื ืืืืืข ืงืึทืกืขืก, ืืืจ ืืืืขืจืืืจื ืื ืืื ืฆืข ืคึผืจืึธืฆืขืก ืืืืืขืจ.
ืืขืจ ืฆืืืึทื ื ืืืื ืืืืืืื ื ืึท ืฉืืืกื ืืืืขืจ ืื ืืคืขืงืืืื ืืืื ืขืก ืืื ืงืื ืืขืจ, ืืื ืืคืืื ืืขืจ ืึทืืื ืืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืื ืฆื ืึทืจืืขืื ืืื ืื ืกืืืืจืืข, ืืืืืืื ื ืืื ืงืจืืืืืื ื ืฉืืืกืืขื. ืึธืืขืจ, ืืึธืก ืขืจืืืืื ืืื ืื ืฆื ืืืกืืืืื ืงืึทืืคึผืืึทืงืืืืื ื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืื ืืขืจืข ืืขืืืึธืืก ืืื ืขืืง ืืื ืงืึธื ืกืื.
ืฉืืขืื ืืื ZooKeeper
ืืื ZooKeeper ืขืก ืืขื ืขื ืืึทืืื ืืขืจ ืืขืืืึธืืก ืืืึธืก ืึทืจืืขื ืืื ืื ืืืื ืกืืจืืงืืืจ (ืฉืึทืคึฟื, ืืืกืืขืงื, getChildren) ืืื ืืืึธืก ืึทืจืืขื ืืื ืืึทืื ืืื ื ืึธืืื (setData, getData). ืืืฉืืคื, ืืืกืืขืงื ืึธืืขืจ ืฉืืขืื ืืึทืืึท - ืืืื ืขืก ืืื ื ืืฉื ืฉืืื ืขืงืกืืกืืืจื. ืืืจ ืืึธืื ืืขืืืจืคื ืึท ืกืืื ืืืคึฟื ืืืึธืก ืงืขื ืขื ืืืื ืืขืจืืคึฟื ืึธื ืืจืืืื ืืืขืื ืืขื ืืืึทืืืึทื ืคืื ืึท ืฉืืืกื.
ืืืื ืึธืคึผืฆืืข ืืื ืฆื ื ืขืืขื ืึทื ืึธืคึผืืืืืกืืืฉ ืฆืืืึทื ื, ืืื ืืื ืืืืืฉืึทื. ืงืืง ืืืื ืึท ื ืึธืืข ืืืืืกืฅ. ืืืื ืืืืืกืฅ, ืจืืคื setData, ืึทื ืืขืจืฉ ืฉืึทืคึฟื. ืืืื ืืขืจ ืืขืฆืืขืจ ืืืคึฟื ืืึธื ืืืืืขืงืขืจื ืึท ืืขืืช, ืืืืขืจืืืจื ืขืก ืึทืืข ืืืืขืจ ืืืืืขืจ. ืืขืจ ืขืจืฉืืขืจ ืืึทื ืฆื ืืึธื ืืื ืึทื ืื ืขืงืืืกืืขื ืฅ ืคึผืจืืืืจื ืืื ืืืืืกื. ืืืจ ืงืขื ืขื ืืื ืจืืคื ืฉืึทืคึฟื. ืืฆืืื ืงืึทืืคึผืืืฉืึทื ืืืขื ืืืื ืขื ืึทื ืื ื ืึธืืข ืืื ื ืืฉื ืขืงืกืืกืืืจื ืืื ืขืก ืืื ืืขืืืขื ืืืฉืืคื. ืึทื ืืขืจืฉ, ืฉืึทืคึฟื ืืืขื ืฆืืจืืงืงืืืขื ืื ืฆืื ืขืืขื ืืขืืช, ื ืึธื ืืืึธืก ืืืจ ืืึทืจืคึฟื ืฆื ืจืืคื setData. ืคืื ืงืืจืก, ืฆืืืืฉื ืงืึทืืืก, ืึท ืืืขืจืืขืงืก ืงืขื ืืืื ืืืืกืืขืืขืงื ืืืจื ืึท ืงืึทืืคึผืืืื ื ืจืืคื, ืืื setData ืืืึธืื ืืืื ืฆืืจืืงืงืืืขื ืึท ืืขืืช. ืืื ืืขื ืคืึทื, ืืืจ ืงืขื ืขื ืืึธื ืืึธืก ืึทืืข ืืืืขืจ ืืืืืขืจ, ืึธืืขืจ ืืื ืขืก ืืืขืจื ืขืก?
ืืืื ืืืืืข ืืขืืืึธืืก ืฆืืจืืงืงืืืขื ืึท ืืขืืช, ืืืจ ืืืืกื ืคึฟืึทืจ ืืืืขืจ ืึทื ืึท ืงืึทืืคึผืืืื ื ืืืืืฉืึทื ืืื ืคืืจืืขืงืืืขื. ืืื ืก ืืืึทืืืฉืึทื ืึทื ืื ืืืกืืขืงื ืืื ืคืืจืืขืงืืืขื ื ืึธื ืจืืคื ืฉืืขืื. ืืขืจื ืึธื ืืืขืืืขืจ ืืืึทืืฉ ืืืจ ืืขื ืขื ืืจืืื ื ืฆื ืคืึทืจืืืืื ืืื ืฉืืื ืืจืืืกื. ืืึธืก ืืืื ื ืึทื ืืืจ ืงืขื ืขื ืืืขืจื ืขืืขื ืึทื ืืขืจ ืืึทื ื ืืื ืืขืืืขื ืขืงืกืึทืงืืืืึทื ืืฆืืื, ืึทืคึฟืืื ืืืื ืืื ืคืึทืงื ืืึธืจื ืืฉื ืืื ืืขืืืขื ืืขืฉืจืืื.
ืืขืจ ืืขืื ืืฉ ืืขืืึทืืืก
ืืื ืืขื ืึธืคึผืืืืืื ื ืืืจ ืืืขืื ื ืขืืขื ืึท ืืจืขืื ืคืื ืคืื ืื ืืขืจืืขืืืืื ืกืืกืืขืืขื ืืื ืจืขืื ืืืขืื ืงืึธืืืจืื ื.
ืืืื ืขืจ ืคืื ืื ืืืืคึผื ืืืืขืจืคืขื ืืฉื ืคืื ืืขืจ ืงืื ื ืืื ืืขืืืขื ืงืจืืึทื-ืคึผืืึทืืคืึธืจืืข: ืืื ืืื ืืกืืขืจ ืืืื ืขืจ ืคืื ืื ืกืขืจืืืืกืขืก ืืืื ืืืื ืืขืฉืืืฆื ืืืืฃ ืืื ืืงืก, ืืึทืงืึธืก ืืื ืืืื ืืึธืื. ืืืืืขืก, ืืืจ ืืขืืืขืืึธืคึผืขื ืืืืื ืคึฟืึทืจ ืืื ืืงืก, ืืื ืื ืืขืืืืื ืืขืกืืื ื ืืืืฃ ืื ืืขืจืข ืกืืกืืขืืขื ืฉืคึผืขืืขืจ. ืื ืก ืื ื ืืขืืจืื ื ื ืก ื ืคืจืืืืขืืขื , ืืื ืก ืื ื ืฉืื ื ื ืฆืฒ ื ืืขืฐืข ื ืืื ืืื ืฆ ื ืืืืงืืืจ , ืฐ ื ืื ื ืฆ ื ืืขืจื ืขื ืืขืจื . ืืื ืึท ืจืขืืืืืึทื, ืึทืืข ืืจืื ืงืึธืืึธืจืืึทื ืืืฉืึทื ืืึทืืื ืื ืืก ืืขื ืขื ืืืฆื ืืขืฉืืืฆื ืืืืฃ ืืื ืืงืก ืืื ืืึทืงืึธืก, ืืฉืขืช ืืืืื ืงืึธื ืกืื ืงืื ืืื ืืขืฉืืืฆื ืืืืฃ Windows.
ืคืื ืื ืึธื ืืืื, ืืืจ ืืขืคืจืืืื ืฆื ื ืืฆื ืคืึทืจืืืง ืืืืืืึธืืขืง ืฆื ืึทืงืกืขืก ืกืขืจืืืืกืขืก. ืืื ืืขื ืคืึทื ืคืื ZooKeeper, ืื ืืจืืจื ืืื ืืขืคืืื ืืืืฃ
ืื ืกืคึผืืจืขื ืืืจื ืื ืืืกืื ืืงืจืึทื ืึทืก ืฆืืืื ื ืคืื ืื ZooKeeper C ++ ืืืืืืึธืืขืง, ืืืจ ืืึทืฉืืึธืกื ืฆื ืื ืกืืจืืืขื ื ืึท ืืืกืื ืืงืจืึทื ืึทืก ืฆืืืื ื. ZooKeeper C ++ ื ืืฆื ืฆืืงืื ืคึฟื / ืฆืืืึธื ืคึผืจืืืืืืืื ืคึฟืึทืจ ืืขื. ืืื STL, ืืืืืขืจ, ืืื ืืขื ืขื ืืืคึผืืึทืืขื ืึทื ืืืืขืจ ืืึทืฉืืืื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ื ืื
ืืื ืืืขืจ ืืขืืึธืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืึทืจืืขื ืืื ืืึธืก. ืืืขื ืืขืจืืคื, ืึทื ื ืึธื ืฆืืืึธื / ืฆืืงืื ืคึฟื ืคึผืึธืจ ืืื ืืืฉืืคื. ืื ื ืืึทืข ืฆืืงืื ืคึฟื ืืื ืืืืืขืงืขืจื, ืืื ืื ืืืจืืืขืืื ืืขื ืืืื ืขืจ ืืื ืืขืฉืืขืื ืฆืืืืืขื ืืื ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืคืื ืงืฆืืข ืืื ืึทื ื ืึธื ืฆืืืึธื ืืื ืืขืจ ืจืื. ื ืคืึธืืขื ืคืื ืื ืืขืงื ืกืึทืืขืงืฅ ืขืืืขืืข ืคืืืืฉืขืจื ืคืื ืื ืจืื ืืื ืคึผืึธืืืก ืืื ื ืืฆื wait_for. ืืืขื ืึท ืจืขืืืืืึทื ืืืขืจื ืื ืืืฆื, ืื ืงืึธืจืึทืกืคึผืึทื ืืื ื ืคึฟืื ืงืฆืืข ืืื ืืขืจืืคึฟื ืืื ืืืึทื ืฆืืจืืงืงืืืขื ืืืขืจื ืืื ืืืจืืืขืืื ืืขื ืฆื ืื ืฆืืืึธื.
ืืืจ ืืขืืืืื ื ืื ืืขืืืข ืคืึธืืขื ืืขืงื ืฆื ืืืกืคืืจื ืคึฟืจืืื ืฆื ืขืืง ืืื ืงืึธื ืกืื. ืืขื ืืืื ืึทื ืื ืึทื ืืขืจืืืืื ื ืืืืืจืขืจืื ืงืขื ืขื ืืืื ืึทืงืกืขืกื ืืืจื ืงืืืคื ืคืึทืจืฉืืืขื ืข ืคึฟืขืืขื. ppconsul ืืื ื ืืฉื ืคืึธืืขื ืืืืขืจ, ืึทืืื ืจืืคื ืฆื ืขืก ืืขื ืขื ืคึผืจืึธืืขืงืืขื ืืืจื ืืึทืงืก.
ืืืจ ืงืขื ืขื ืึทืจืืขืื ืืื grpc ืคึฟืื ืงืืืคื ืคึฟืขืืขื, ืึธืืขืจ ืขืก ืืขื ืขื ืกืึทืืึทืืืื. ืืื ืขืืง ืืืึทืืฉืื ืืขื ืขื ืืืคึผืืึทืืขื ืึทื ืืืจื ืืจืคึผืง ืกืืจืืื. ืืืก ืืขื ืขื ืืืืืืจืขืงืืืึธื ืึทื ืืฉืึทื ืึทืื ืคึฟืึทืจ ืึทืจืืืงืืขื ืคืื ืึท ืืืืขืจ ืืืคึผ. ืื ืืืืืืึธืืขืง ืงืจืืืืฅ ืึท ืืืื ืคืึธืืขื ืคึฟืึทืจ ืึทืืข ืืืึทืืฉืื ืืื ืึท ืืืื ืคืึธืืขื ืืืึธืก ืคึผืจืึทืกืขืกืึทื ืื ืงืึทืืื ื ืึทืจืืืงืืขื. ืึทืืื ืืจืคึผืง ืคึผืจืึธืืืืืึทืฅ ืคึผืึทืจืึทืืขื ืฉืจืืืื ืฆื ืืืึทื. ืืึธืก ืืืื ื ืึทื ืืืขื ืืืจ ืื ืืืืึทืืืืืจื ืึธืืขืจ ืืืกืืขืงื ืึท ืืืึทื, ืืืจ ืืืื ืืืึทืจืื ืืื ืื ืคืจืืขืจืืืงืข ืืขืื ืืื ืืขืขื ืืืงื ืฉืืงื ืืืืืขืจ ืฉืืงื ืื ืืืืึทืืขืจ. ืืืจ ื ืืฆื ืคึฟืึทืจ ืกืื ืืงืจืึทื ืึทืืืืฉืึทื
ืืึทื ืฅ
ืืขื ืคึฟืึทืจ ืืื:
ืืื ืืืขืจ ืืึทื ืฉืึทืคึฟื:
ืืงืืจ: www.habr.com