TL; DR: ืชืืืืจ ืฉื ืืจืืืืงืืืจืช ืฉืจืช-ืืงืื ืฉื ืืขืจืืช ื ืืืื ืชืฆืืจืช ืืจืฉืช ืืคื ืืืืช ืฉืื ื, QControl. ืืื ืืืืกืก ืขื ืคืจืืืืงืื ืชืขืืืจื ืื-ืฉืืืชื ืฉืขืืื ืขื ืืืืขืืช ืขืืืกืืช ื-gzip ืืื ืืืืื ืืืืกื ืืื ื ืงืืืืช ืงืฆื. ื ืชืืื ืื ืงืืืืช ืงืฆื ืืืืืจืื ืืงืืืื ืขืืืื ื ืชืฆืืจื, ืืืคืจืืืืงืื ืขืฆืื ืืืคืฉืจ ืืชืงื ื ืฉื ืืืกืจื ืืื ืืื ืืงืืืืื. ืืืขืจืืช ืื ืืื ืขื ืืขืืงืจืื
Qrator Labs ืืคืขืืื ืจืฉืช ืืคืฆื ืืืืืืืช ืืฆืืฆืื ืืชืงืคืืช. ืืจืฉืช ืฉืื ื ืคืืขืืช ืขื ืคื ืขืืงืจืื anycast, ืืจืฉืชืืช ืืฉื ื ืืชืคืจืกืืืช ืืืืฆืขืืช BGP. ืืืืืชื ื ืจืฉืช BGP anycast ืืืืืงืืช ืคืืืืช ืืืกืคืจ ืืืืจืื ืฉื ืืืืจ ืืืจืฅ, ืื ื ืืืืืื ืืขืื ืืืกื ื ืชืขืืืจื ืื ืืืืืืืืช ืงืจืื ืืืชืจ ืืืืื ืฉื ืืืื ืืจื ื - ืืคืขืืื Tier-1.
ืืฆื ืฉื ื, ืืืืืช ืจืฉืช ืืืืืจืช ืืืืืืจืคืืช ืื ืื ืงื. ืชืงืฉืืจืช ืืื ื ืงืืืืช ื ืืืืืช ืืจืฉืช ืืื ืงืจืืืืช ืืื ืืกืคืง ืฉืืจืืชื ืืืืืื ืืงืื ืชืฆืืจื ืขืงืืืช ืฉื ืื ืฆืืชื ืืจืฉืช, ืืืขืืื ืืืชื ืืืื. ืืื, ืขื ืื ืช ืืกืคืง ืืช ืืจืื ืืืืืื ืืืืชืจ ืืืคืฉืจืืช ืฉื ืฉืืจืืช ืืืื ืืฆืจืื, ืืืื ื ืฆืจืืืื ืืืฆืื ืืจื ืืกื ืืจื ืืืืคื ืืืื ื ืชืื ื ืชืฆืืจื ืืื ืืืฉืืช.
ืืืชืืื ืืืืชื ืืืืื. ืื ืืคื ืืืจ ืืืื ืืคืจืืืืงืื ืชืงืฉืืจืช ืืืงืืง ืืขืืืื.
ืืื ืืืกืื ืฉื ืงืืืื ืฉื QControl, ืืื ืืืื ืืกืืื ืืขืืงืจืืช ืืืฉืงืขืช ืืื ืืืฉืืืื ืืฉืืขืืชืืื ืืื ืืืช ืคืจืืืืงืื ืืกืื ืื, ืืื ืืฆืืจื ืืืฉืื ืืงืืจ ืกืืืืชื ืืืื ืฉื ืชืฆืืจื ืืืกืืคื ืฉื ืืืจ, ืืกื ืืจื ืืช ื ืงืืืืช ืื ืืืืืช ืฉืื ื. ืขื ืื. ืืืืกืื ืขืฆืื ืืื ืจืง โโืืืช ืืืื ืืจืืฉืืช ืืืืื ืืคืืชืื ืฉื QControl. ืื ืืกืฃ, ืืืื ื ืฆืจืืืื ืื ืืื ืืืจืฆืืืช ืขื ืฉืืจืืชืื ืงืืืืื ืืืชืืื ื ืื ืื ืงืืืืช ื ืืืืืช (POP), ืฉืืืืช ืืืืืช (ืื ืืชื ืืช ืืืชืืื ืืืฉืืช) ืืืืืืช ื ืชืื ืื ืืื ืืงืจืช ืืืฉื. ืืืฅ ืืื, ืจืฆืื ื ืื ืืฉืืื ืืืขืจืืช ืืื ืืืืฆืขืืช ืคืงืืืืช ืืืงืื ืืืฆืข ืฉืื ืืืื ืืงืืฆืื. ืืคื ื QControl, ืื ืชืื ืื ื ืฉืืื ืื ืงืืืืช ื ืืืืืช ืืืขื ืืืืคื ืืื ื. ืื ืืืช ืื ืงืืืืช ืื ืืืืืช ืื ืืืืชื ืืืื ื ืืฉืืื ื ืืขืืื ืืืชื ืืืืืจ ืืืชืจ, ืืชืฆืืจื ืชืฆื ืืกืืคื ืฉื ืืืจ ืื ืืกืื ืืจื ืช ืื ืฆืืจื ืืืืื ืืื ืืื ืืืคืขืื ืืืชื ืืืืฉ.
ืืชืืฆืื ืืื, ืืืขื ื ืืชืื ืืช ืืืื:
ืฉืจืช ืืชืฆืืจื ืืืจืื ืขื ืืืืืช ืืืืกืื ืื ืชืื ืื; ืื ืชื ืืฉ ืืกืคืจ ื ืงืืืืช ืงืฆื ืฉืืงืืืืช ืืืฉืืจืืช ืขืืืื ื ืชืฆืืจื ืืืงืืืืช ืืฆืืืชื ืชืืืื ืืฉืจืช, ืืืืฉืจืช ืื ืงืืืืช ื ืืืืืช.
ืืืืืช ืืืืืืจ ืืืื ืืจื ื ืขืืืื ืืฉืชื ื ืืืื ืืจืืื ืืขืืื - ืืื ืืืืืืฉ ื ืงืืื ืื, ืืื ื ืกืชืื ืขื MTR ืคืฉืื ืืคืจืื, ืฆ'ืืื ืืกืื ืืคืืจ ืืืื ื ืงืื ื.
MTR ืืคืจืื ืืกืื ืืคืืจ
ืืืชื ืืืจ ืืืื ืืื ื ืงืื ื
ืืืืื ืืืื ืคืืจืืฉื ืืืืจืืช ื ืืืื ืืืชืจ. ืื ืืกืฃ, ืืฉ ืืืืื ืื ืืช. ืจืืื ืืชืขืื ืืื ื ืืคืฆื ืขื ืืขืื ืื, ืืฉืจ ืชืืื ืืฉ ืืงืืช ืืืฉืืื ืืขืช โโืื ืืืช ืืขืจืืืช ืืืืืจืืช.
ืืชืฆืืจื ืืืืื ืฉื ื ืงืืืช ื ืืืืืช ืืื ืืืืช ืืฉืืขืืชืืช ืฉื ื ืชืื ืื ืฉืืฉ ืืฉืืื ืื ืืขื ืื ืจืืื ืืจื ืืืืืจืื ืื ืืืื ืื. ืืืจืื ืืืื, ืืืจืืช ืฉืืชืฆืืจื ืืฉืชื ื ืื ืืืื, ืื ืงืืจื ืืืจืืืืื ืงืื ืื.
ืขืืฆืื ืืฆืื ืืืืจืื ื
ืื ื ืืืืืื ืืืืจ ืฉืื ืืืช ืจืฉืช ืืืืืจืช ืืืืืกืกืช ืขื ืืขืืงืจืื ืฉื ืขืืืื ืื ืืฆืืืจืื ืืื ืคืชืจืื ืื ืืจืืจ. ืืื ืืฉ ืืจืื ืืขืืืช ืขื ืืืืืื. ืื ืื ื ืฆืจืืืื ืืฉืืืจ ืืช ืื ืืืืืืื ืืื ื ืงืืืืช ืืืชืืืืกืืช, ืืื ืืืืืช ืืกืืืืื ืืฉืืื ืืืชื ืืืืฉ ืืืงืจื ืฉืืืฉืื ืืืืืฅ ืืืง ืืื ืชืื ืื. ืื ืืขื ืืืื ืืืืฉื ืืืชื ืืจืฆืฃ ืืืืืจ ืืืืื. ืืืจื ืืื, ืืืงืจื ืฉื ืืกืคืจ ืืขืืื, ืคืขืืื ืืื ืืืืื ืืืืืฉื ืืื ืจื. ืขื ืืืื ืก ืืืืืช ืืกืืื ืืืงืฉ ืื ืืช ืืืืงืื ืืืกืจืื ืืืืืื ืฉืขื ืืืืง ืืืจืืื ืืืืื ืืืงืฉื ืืื ืืฆืืจื ื ืืื ื, ืืืฉืืื ืจืง ืืช ืื ืชืื ืื ืืืกืจืื.
ืืชืืฆืื ืืื, ืืืขื ื ืืคืชืจืื ืื ืืขื ืืื - ืืฉ ืื ื ืจืง ืฉืืืช ืืชืืืืกืืช ืืืช, ืงืืืขื, ืืื ื ืงืจื ืื ืืฆืื, ืืจืง ืืืื ืืื ืขืืืจื - ืืืืจืื ื. ืื ืืืจืื ืืืืกืก ืขื ืืืฆืื ืืืืจืื ืฉื ืืฆืจ ืืืกืคืืง ืืื ืืื ืืช ืืืืฉ ืืช ื ืชืื ื ืืชืฆืืจื. ืืจืืข ืฉืืืจื ืืืจื ืืืืข ืืืขืื, ืืืฉื ืืืจ ืื ื ืืืฅ.
ืื ืฉื ืืชืจ ืืื ืืฉืืื ืืื ืคืขื ืชืฆืืจื ืืฆืืื ืจืขื ื ื, ืืืฉื ืืืื ืฉืืืืจืื ืืคื ืืืื ืืื. ืื ืฉืืฉืื ืื ืืื ืืื ืฉืื ืื ื ืฉืืืืื ืืช ืื ืืขืืืื ืื ืืืื ืืืฆื ืฉืืืืจ/ืฉืืืืจ ืืจืืื, ืืื ืืืืื ืื ืืขื ืื ืืืืืื ืืืืืืืช ืฉืืื ืืืืจ ืคืืกืืช ื ืชืื ืื. ืืจืืข ืฉืื ืื ื ืืืืืื ืฉืืืืื ืืฉ ืืช ืืืฆืืืืช ืื ืืื ืืช, ืื ืื ื ืฉืืืืื ืจืง ืืืฉืื ืืืฉืื. ืืื ืืืื ืืืืืืจ ืฉืื ืขืืื? ืขืืื. ืืฆืื ื ืฉืืจ ืืืืืื ืืฉืจืช ืืชืฆืืจื ืืื ืืขื ืื, ืืืจืื ืื ื ืืฆืจืื ืืคื ืืฆืืจื.
ืืจืืืืงืืืจื ืฉื ืชืืืืจื ืื-ืืคืืกืืช
ืืืืข ืื ืื ื ืืช ืืชืืืืจื ืฉืื ื ืืฉื ื ืืคืืกืื? ืืชืฉืืื ืืื ืื ืคืฉืืื - ืจืฆืื ื ืื ืชืง ื ืืชืื ืืืืืืื ืืจืื ืืืืื, ืชืื ืงืืืช ืืฉืจืื ืืืืื ื-OSI ืขื ืฉืืืืช ืืชืืืืจื ืืืืืฉืื ืฉืื. ืืฉืชืืฉื ื ื-Thrift ืืชืคืงืื ืคืจืืืืงืื ืืชืืืืจื, ืืืคืืจืื ืืกืืจืช msgpack ืืคืืจืื ืืจืื ืืืืื ืฉื ืืืืขืืช ืืงืจื. ืื ืืกืืื ืฉืื ืชื (ืืืฆืข ืฉืืืืจ/ืฉืืืืจ/ืืืกืจ) ืื ืืกืชืื ืืชืื msgpack, ืื ืคืืจืง ืื ืืืจื ืืช ืืชืืื ืืืืจื, ืืจืง ืืขืืืจ ื ืชืื ืื.
Thrift (ืืื ืืืืช - "thrift", ืืืืื [ฮธrift]) ืืื ืฉืคืช ืชืืืืจ ืืืฉืง ืืืฉืืฉืช ืืืืืจื ืืืฆืืจืช ืฉืืจืืชืื ืขืืืจ ืฉืคืืช ืชืื ืืช ืฉืื ืืช. ืืืื ืืกืืจืช ืืฉืืืืช ืคืจืืฆืืืจืืช ืืจืืืง (RPC). ืืฉืื ืฆืื ืืจ ืชืืื ื ืขื ืื ืืข ืืฆืืจืช ืงืื ืืคืืชืื ืฉืืจืืชืื ืฉืขืืืืื ืืฆืืจื ืคืืืช ืื ืืืชืจ ืืขืืื ืืงืื ืืื ืฉืคืืช.
ืืืจื ื ืืืกืืจืช Thrift ืืืื RPC ืืชืืืื ืืฉืคืืช ืจืืืช. ืืจืืื, ืืืืงืื ืืงืืื ืืื ืืืงืื ืืืฉืจืช. ืขื ืืืช, ืืจืืืืจ ืืชืืจืจ ืืืืื ืงืฉื ืืคืืฆืื, ืืื ืืืชืจ ืืฉื ืืืขืืจ ืคืชืจืื ืืืื ืืืืื ืืคืืชืื ืฉืื ื.
ืืฉื ื ืืคืฉืจืืืืช ืืืจืืช, ืืืื protobuf / gRPC, ืืืื ืืืฉืจ ืืชืืื ื ืืช ืืคืจืืืงื ืฉืื ื, gRPC ืืื ืื ืืืฉ ืืื ืืขืื ื ืืงืืช ืืืชื ืืกืืคืื.
ืืืืื, ืืืืื ื (ืืืืขืฉื ืืืื ื ืฆืจืืืื) ืืื ืืช ืืช ืืืืคื ืืื ืฉืื ื. ืืืื ืงื ืืืชืจ ืืืฆืืจ ืคืจืืืืงืื ืขืืืจ ืื ืฉืื ืื ื ืฆืจืืืื ืืืืืื ืฉืืจืืืืงืืืจืช ืฉืจืช-ืืงืื ืืื ืคืฉืืื ืืืกืืช ืืืืฉืื ืืืฉืืืื ืืื ืืืช ื ืชื ื-Thrift. ืื ืื ืืืจืช, ืืฉื ื ืืืื ืืกืืจืชืืช ืืคืจืืืืงืืืื ืืืืืืฉืื ืฉื ืืชืื ืืขืฆืื ืฉื ืกืคืจืืืช ืคืืคืืืจืืืช (ืืกืืื ืืืื); ืื ืืกืฃ, ืืืืื ืืืื ืื ืชืืื ืขืืื ืืฉืืื: "ืืื ืื ืื ื ืืืืืื ืืืขืืืจ ืืช ืื ืืฉืคืืช ืืืจืืช?" ืื ืืื ืืจืงื ื ืืช ืืจืขืืื ืฉื ืืืคื ืืื.
Msgpack ืืืื ื-JSON, ืื ืืืืจ ืืงืื ืืืชืจ. ืืื ืคืืจืื ืฉื ืกืืืืจ ื ืชืื ืื ืืื ืืจื ืืืืคืฉืจ ืืืืคืช ื ืชืื ืื ืืื ืืกืคืจ ืฉืคืืช.
ืืจืื ืืจืืฉืื ื ืืฉ ืื ื Thrift ืขื ืืืืืข ืืืื ืืืื ืืืจืืฉ ืื ืชื ืืื ืืืขืืืจ ืืช ืืืืืขื. ืืจืื ืืฉื ืืื ืืฉ ืืื ื msgpack ืืจืืืื.
ืืืจื ื ื-msgpack ืื ืืื ืืืืจ ืืงืืืคืงืื ืืืชืจ ืืืฉืืืื ื-JSON. ืืื ืืฉืื ืืื, ืืื ืชืืื ืืกืืื ื ืชืื ืื ืืืชืืืื ืืืฉืืช, ืื ืฉืืืคืฉืจ ืื ื ืืืฉืชืืฉ ืืชืืื ืืช ืืื ืืืืช ืืื ืืขืืจืช ืงืืฆืื ืืื ืืจืืื ืืืืืืื ืื ืืืืืืงืืื ืืืืืืื ืืืขืืืื ืขื ืืืขืืจ ื ืชืื ืื, ืื ืฉืืื ืืฉืื ืขืืืจ ืืชืื ืืช ื"ืืฆืืื-ืืืืจืื ื" ืฉืื ื.
JMESPath
JMESPath ืืื ืฉืคืช ืฉืืืืชืืช JSON.
ืื ืืืืืง ื ืจืื ืืชืืืืจ ืฉืื ื ืืงืืืื ืืืชืืขืื ืืจืฉืื ืฉื JMESPath, ืืื ืืืขืฉื, ืืื ืขืืฉื ืืจืื ืืืชืจ ืืื. JMESPath ืืืคืฉืจ ืื ืืืคืฉ ืืืกื ื ืชืชื ืขืฆืื ืืืื ื ืขืฅ ืฉืจืืจืืชื, ืืืืืื ืฉืื ืืืื ืขื ื ืชืื ืื ืชืื ืืื ืชื ืืขื. ืื ืื ืืืคืฉืจ ืื ืืืืกืืฃ ืืกื ื ืื ืืืืืืื ืืืืืื ืฉืื ืื ื ืชืื ืื. ืืืจืืช ืฉืื, ืืืืื, ืืืจืฉ ืืืืฅ ืืืื ืืื ืืืืื.
ื'ืื ื'ื
ืขืืืจ ืืืง ืืืฆืจืื ืื, ืื ืื ื ืฆืจืืืื ืืืคืื ืืช ืืชืฆืืจื ืืงืืืฅ - ืื ืื ืื ื ืืฉืชืืฉืื ืืื ืืข ืชืื ืืช ืื'ืื ื'ื ืืื ืืืืืจื ืืืจืืจื. ืืขืืจืชื, ืื ื ืืืฆืจืื ืงืืืฅ ืชืฆืืจื ืืืชืื ืืช ืืื ืชืื ืื ืฉืืชืงืืื ืืืขื.
ืืื ืืืฆืืจ ืงืืืฅ ืชืฆืืจื, ืื ื ืืงืืงืื ืืืงืฉืช JMESPath, ืชืื ืืช ืขืืืจ ืืืงืื ืืงืืืฅ ื-FS ืืชืื ืืช ืขืืืจ ืืชืฆืืจื ืขืฆืื. ืืื ืื, ืืืืืฅ ืืฉืื ืื ืืืืืืจ ืืช ืืจืฉืืืช ืืงืืืฅ. ืื ืื ืฉืืื ืืืฆืืื ืืงืืืฅ ืืื - ืืคื ื ืชืืืืช ืชืื ืืช ืืชืฆืืจื, ืฉืื ื ืืืชืจืช ืืคืืจืื YAML ืฉืืชืืจืช โโืืช ืืฉืืจ.
ืืืืืื:
---
selector: "[@][[email protected]._meta.version == `42`] | items([0].fft_config || `{}`)"
destination_filename: "fft/{{ match[0] }}.json"
file_mode: 0644
reload_daemons: [fft]
...
{{ dict(match[1]) | json(indent=2, sort_keys=True) }}
ืขื ืื ืช ืืืฆืืจ ืงืืืฅ ืชืฆืืจื ืืฉืืจืืช ืืืฉ, ืื ื ืืืกืืคืื ืจืง ืงืืืฅ ืชืื ืืช ืืืฉ. ืืื ืฆืืจื ืืฉืื ืืืื ืืงืื ืืืงืืจ ืื ืืชืืื ื ืื ืงืืืืช ืื ืืืืืช.
ืื ืืฉืชื ื ืืื ืฉ-QControl ืขืื ืืืืืืจ? ืืืืจ ืืจืืฉืื ืืืืฉืื ืืืืชืจ ืืื ืืกืคืงื โโืขืงืืืช ืืืืื ื ืฉื ืขืืืื ื ืชืฆืืจื ืืื ืืฆืืชืื ืืจืฉืช. ืืฉื ื ืืื ืงืืืช ืืื ืจื ืขืืฆืื ืืืืืงืช ืืชืฆืืจื ืืืืฆืืข ืฉืื ืืืื ืื ืขื ืืื ืฆืืืช ืืชืืืื ืฉืื ื, ืืื ืื ืขื ืืื ืฆืจืื ื ืืฉืืจืืช.
ืืฆืืื ื ืืขืฉืืช ืืช ืื ืื ืืืืฆืขืืช ืกืืืืช ืืขืืืื ืื ืืืฆืืื ืืืืจืื ื ืืื ืืคืฉื ืืช ืืชืงืฉืืจืช ืืื ืฉืจืช ืืชืฆืืจื ืื ืืขื ื ืืชืฆืืจื. ืฉืืืืฉ ืืคืจืืืืงืื ืื-ืฉืืืชื ืืชืืืื ืืืจื ืืืชื ืชืืืื ืืชืืื ืื ืืชืื ื ืชืื ืื. ืฉืืื ืืืฆืืื ืื ืืข ืืฆืืจืช ืชืฆืืจื ืืืืกืก Jinja ืืจืฉืช ืกืื ืื ืืืืืจืช. ืืขืจืืช ืื ืชืืืืช ืืืืืื ืจืื ืฉื ืฉืืืืช ืชืฆืืจื ืขืืืจ ืืฆืืื ืืืืงืคื ืืืืืืจ ืืืืืจืืื ื ืฉืื ื.
ืชืืื ืขื ืขืืจืชื ืืืชืืืช ืืืืืจ.
ืืงืืจ: www.habr.com