ืืื ืืืจ!
ืื ื ืืืืืจืื ืื ืื ืืขืงืืืช ืืกืคืจ ืขื
ืืขืช ืขืชื, ืืงืืืื ืจืง ืืืืืช ืืช ืืืืืืืช ืฉื ืืืื ืืืืง ืืื. ืื, ืืืืจืื ื ืคืืจืกื ืืืืจ, ืฉืืช ืืชืจืืื ืฉืื ื ืจืฆื ืืืืืจ ืืื. ืื ืืกืืื ื ืืืืฉื, ืืืืืจ ืืกืคืจ ืืืฆื ืืืคืื ืืช ืงืคืงื ืกืืจืื ืืืืกืื ื ืชืื ืื ืืืืืจ. ืงืจืืื ืืื ื!
ืกืคืจืืืช ืืคืืฆ'ื
ืืืืืจ ืื, ืืกืคืจ ืืื ืืืฆื ืืืืจื ืฉืื ื ืืฆืืืื ืืืฉืชืืฉ ืืืืืื ืืช ืื ืืจืืืืืืช ืืขืช ืคืืชืื ืืืฆืจ ืืืืืืช ืืืฉืืื ืขื ื. ืืืืฆืขืืช Kafka Streams, ืืฆืจื ื ืืืงืจื-ืฉืืจืืชื ืืืื ื ืืฉืืชืคืื, ืฉืื ืืื ืืื ืืฉืืฉ ืืืงืืจ ืกืืืื ื ืืชืงืืืช ืืืืื ืืืืชืจ ืืืืืข ืืืื ืขื ืืฆื ืืืืืืืงืืื ืืืขืจืืช. ืขืืืจื ื, ืืื ืฆืขื ืงืืืื ืื ืืืืื ืช ืืืื ืืช ืืื ืืืืื ืช ืงืืืช ืืชืืืื.
ืื ืืชื ืืขืื ืืื ืืืืฉื ืืืืคืืช ืืืืคืฉืจืช ืื ืืืฉืชืืฉ ืืืกื ื ืชืื ืื ืืจืืื ืืืื ืืื ืืชืืื ืืืฆื ืืคืืจืืื ืฉื ืืืืืืืงืืื ืฉืื, ืงืจื ืืืชื, ืื ืืืื ืืขื ืืื...
ืืื ืืฉืื ื ืฉืืืืข ืืืื ืืฉื ืืช ืืช ืืืจื ืฉืื ืื ืื ื ืขืืืืื ืขื ืืฆื ืืฉืืชืฃ
ืืืื ื ืฆืจืืืื ืืฉืืืจ ืขื ืืฆืื ืฉื ืืืืืืงืืื ืฉืื ืื ืืืชืืกืก ืขื ืืืืืื ืกืืื (ืืืืืื: ืืื ืืืชืจ ืืื ืืืชืงืฃ)? ืืคื ื ืืืขืืจ ื-Kafka Streams, ืืขืชืื ืงืจืืืืช ืืกืชืืื ื ืขื ืืกื ื ืชืื ืื ืืจืืื ืืื (+ ืฉืืจืืช API) ืื ืืืื ืืืืื ื. ืืืืฉื ืื ืืฉ ืืกืจืื ืืช:
ืืืืจ 1: ืชืจืืืฉ ืคืืฆืื ืืฆื ืืืคืืกื ืฉื ืจืื ืืคื ื ืืืขืืจ ื
ืืจืื ืงืคืงื ืืงืคืงื: ืกืืื ืื ืืขืืืจืื ืืช ืืขืืชืืื ืืืืฆืขืืช API, ืืฆื ืืขืืืื ืืืืฉื ืืืืฆืขืืช ืืกื ื ืชืื ืื ืืจืืื
ืืืืจื ืืช Kafka Streams, ืื ืฉืืงื ืขื ืืฆืืจืช ืืืงืจื-ืฉืืจืืชื ืืืื ื ืืฉืืชืคืื
ืืคื ื ืืฉื ื, ืืืืื ื ืืืืื ืืืื ืืช ืชืจืืืฉื ืืืืื ื ืืืฉืืชืคืื ืฉืื ื ืืื ืืืคื ืืืขืืืช ืืื. ืืืืื ื ืืื ืื ืกืืช ืืช Kafka Streams - ืื ืื ื ืืืืขืื ืขื ืืื ืืื ื ืืชื ืืืจืืื, ืืืื ืืืื ืืกืืืื ื ืืชืงืืืช, ืืืื ืคืื ืงืฆืืื ืืืืช ืกืืจืืืื ื ืขืฉืืจื ืืฉ ืื (ืืจื ืกืคืืจืืฆืืืช, ืืืื ืกืืืืกืื). ืืืืืง ืื ืฉืืืื ื ืฆืจืืืื, ืฉืื ืืืืจ ืขื ืืื ืืืืจืช ืืืืื ื ืืขืจืืช ืืืืืขืืช ืืคืื ืืงืคืงื.
ืื ืืื ืืฉืืจืืชื ืืืืงืจื ืืืืืืชืืื ืฉืืฆืจื ื ื ืื ื ืขื ืืื ืืืคืข ืฉื Kafka Streams ืขื ืืืคืืืืืื ืคืฉืืื ืืืื. ืืื ืืื 1) ืืงืืจ 2) ืืขืื ืขื ืืืืจ ืืคืชื-ืขืจื ืืชืืฉื 3) ืืืืจ:
ืืืืจ 2: ืืืคืืืืืืืช ืืจืืจืช ืืืืื ืฉื ืืืคืขื ืืกืืจืืืื ื ืฉืื ื ืขืืืจ ืืืงืจื-ืฉืืจืืชื ืืืื ื. ืฉืืื ืื ืฉืืฉ ืืื ืื ืืืืจ ืืืืื ืืื ื ืชืื ืื ืชืื ืื ืืื.
ืืืืฉื ืืืฉื ืื, ืกืืื ืื ืืืืจืื ืืืืขืืช ืืืืื ืืช ืื ืืฉื ืืืงืืจ, ืืฆืจืื ืื - ื ื ืื, ืฉืืจืืช ืืืืขืืช ืืืืจ - ืืงืืืื ืืช ืืืฆื ืืืืืฉื ืืืฉืืชืฃ ืืจื ืืืืืจ (ื ืืฉื ืคืื).
ืืืืจ 3: ืืจืืืช ืืฉืืืืช ืืืฉื ืืืืืื ืขืืืจ ืชืจืืืฉ ืขื ืฉืืจืืชื ืืืงืจื ืืฉืืชืคืื: 1) ืืกืืื ืืืฆืจ ืืืืขื ืฉืืืืขื ืื ืืฉื ืืืงืืจ ืฉื ืงืคืงื; 2) ืฉืืจืืช ืืืงืจื ืขื ืืฆื ืืฉืืชืฃ (ืืืืฆืขืืช Kafka Streams) ืืขืื ืืืชื ืืืืชื ืืช ืืืฆื ืืืืืฉื ืื ืืฉื ืงืคืงื ืืกืืคื; ืืืืจ ืืื 3) ืืฆืจืื ืื ืืงืืืื ืืช ืืืฆื ืืืืฉ
ืืื, ืืื ืืช ืืืืื ืืช ืืื ืขื ืขืจื ืืคืชื ืืื ืืืขืฉื ืฉืืืืฉืืช ืืืื!
ืืคื ืฉืืืืืจ ืืขืื, ืืืคืืืืืืืช ืืืฆื ืืืฉืืชืคืช ืฉืื ื ืืืืื ืืืืจ ืืคืชื-ืขืจื. ืืฆืื ื ืืกืคืจ ืืคืฉืจืืืืช ืืฉืืืืฉ ืื, ืืฉืชืืื ืืื ืืชืืืจืืช ืืืื.
ืืคืฉืจืืช ืืก' 1: ืืฉืชืืฉ ืืืืืจ ืืคืชื-ืขืจื ืืืืฉืืืื
ืืืืจ ืืืคืชื-ืขืจื ืืจืืฉืื ืฉืื ื ืืืื ืืช ื ืชืื ื ืืขืืจ ืืืจืืฉืื ืื ื ืืืืฉืืืื. ืื ืืืฉื, ืืืงืจืื ืืกืืืืื ืืืืื ื ืืืฉืืชืคืช ื ืงืืขื ืขื ืคื ืขืงืจืื "ืืฆืืขืืช ืืจืื". ืืืืืจ ืืืื ืืืืื ืืช ืื ืืืืืื ืืกืืื ืืืืจืื ืื ืขื ืืฆืื ืฉื ืืืืืืงื ืืืฉืื. ืืืืจ ืืื, ืืฉืงืืืื ื ืืื ืืืฉ ืืกืืื ืืื ืื ืืืจ, ืืืืื ื ืืฉืืืจ ืืืชื, ืืืืืจ ืืืืืืื ืืื ืฉืืจ ืืกืืื ืื ืขื ืืฆืื ืฉื ืืืชื ืืืืืืงื ืืืืืกืื ืืืืืืจ ืขื ืืืืฉืื.
ืืืืจ 4 ืืืื ืืจืื ืืืฆื ืืฉืคื ื ืืช ืืืืจ ืืืคืชื/ืขืจื ืืฉืืืช ืืขืืืื ืฉื ืืืขืื ืื ืฉื ืืชื ืืืื ืืขืื ืืช ืืืืืขื ืืืืฉื.
ืืืืจ 4: ืื ื ืคืืชืืื ืืืฉื ืืืืืจ ืืคืชื-ืขืจื ืขืืืจ ืฉืืืช ืืขืืืื ืฉื ืืืขืื (ืืืืจ ืืื, ืื ืกืงืจืืคื ืฉืขืืื ืขื ืืฆื ืืฉืืชืฃ ืืืื ืืืืฉื ืืช ืืฉืืื doProcess
)
ืืคืฉืจืืช ืืก' 2: ืืฆืืจืช API ืฉื CRUD ืขื ืืื Kafka Streams
ืืืืจ ืฉืืฆืจื ื ืืช ืืจืืืช ืืืฉืืืืช ืืืกืืกืืช ืฉืื ื, ืืชืืื ื ืื ืกืืช ืืืชืื RESTful CRUD API ืขืืืจ ืฉืืจืืชื ืืืืงืจื-ืืฆื ืืืฉืืชืคืื ืฉืื ื. ืจืฆืื ื ืืืืืช ืืกืืืืื ืืืืืจ ืืช ืืืฆื ืฉื ืืืง ืืืืืืืืงืืื ืื ืืืื, ืืื ืื ืืืืืืจ ืื ืืืกืืจ ืืช ืืืฆื ืฉื ืืืืืืงื (ืฉืืืืฉื ืืชืืืื ืืงืฆื ืืืืืจื).
ืืื ืืชืืื ืืื ืืืฉืงื ื-API ืฉื Get State, ืืื ืคืขื ืฉืืืื ื ืฆืจืืืื ืืืฉื ืืืืฉ ืืช ืืืฆื ืืืืื ืืขืืืื, ืืืกื ื ืืืชื ืืื ืืช ืืคืชื-ืขืจื ืืืื ืืช ืืืฉื ืืื ืจื. ืืืงืจื ืื, ืื ืืืคื ืืืืืช ืื ืคืฉืื ืืืืฉื ืืืฉืง API ืืื ืืืืฆืขืืช ืืืคืข ืืืื ืฉื Kafka Streams, ืืคื ืฉืืืฆื ืืจืฉืืื ืืืื:
ืืืืจ 5: ืฉืืืืฉ ืืืืืจ ืืืคืชื-ืขืจื ืืืืื ื ืืื ืืงืื ืืช ืืืฆื ืืืืืฉื ืืจืืฉ ืฉื ืืืืืืงื
ืขืืืื ืืืฆื ืฉื ืืืืืืงื ืืืืฆืขืืช ื-API ืงื ืื ืืืืฉืื. ืืขืฆื, ืื ืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืืื ืืืฆืืจ ืืคืืง ืฉื ืงืคืงื ืืืืฉืชืืฉ ืื ืืื ืืืฆืืจ ืชืงืืื ืฉืืืื ืืช ืืืฆื ืืืืฉ. ืื ืืืืื ืฉืื ืืืืืขืืช ืฉื ืืฆืจื ืืจื ื-API ืืขืืืื ืืืืชื ืืืคื ืืื ืืื ืฉืืชืงืืื ืืืฆืจื ืื ืืืจืื (ืืืฉื ืกืืื ืื).
ืืืืจ 6: ืืชื ืืืื ืืืืืืจ ืืช ืืืฆื ืฉื ืืืืืืงื ืืืืฆืขืืช ืืคืืง ืงืคืงื
ืกืืืื ืงืื: ืืงืคืงื ืืฉ ืืืืฆืืช ืจืืืช
ืืฉืื ืืื, ืจืฆืื ื ืืืคืืฅ ืืช ืขืืืก ืืขืืืื ืืืฉืคืจ ืืช ืืืืื ืืช ืขื ืืื ืืกืคืงืช ืืฉืืื ืฉื ืฉืืจืืชื ืืืงืจื-ืืฆืืื ืืฉืืชืคืื ืืื ืชืจืืืฉ. ืืืชืงื ื ืืืืชื ืงืื: ืืจืืข ืฉืืืืจื ื ืืช ืื ืืืืคืขืื ืืจืืฅ ืชืืช ืืืชื ืืืื ืืืฉืื (ืืืืชื ืฉืจืชื ืืชืืื), ืืืขื ืื ืืฉืืจ ื ืขืฉื ืืืืคื ืืืืืืื. ืืื ืื, ืฆืืื ื ืฉืื ื ืืฉื ืืงืืจ ืืืจืื ืืืกืคืจ ืืืืฆืืช, ืื ืฉืืื ืืืคืข ื ืืชื ืืืื ืืืงืฆืืช ืชืช-ืงืืืฆื ืฉื ืืืืฆืืช ืืืื.
ืืฆืืื ืื ืฉื ืืืืื ืืขืฉืืช ืขืืชืง ืืืืื ืฉื ืื ืืช ืืืืื ื ืื, ืืืฉื, ืืืงืจื ืฉื ืืชืืืฉืฉืืช ืืืืจ ืชืงืื, ืืืขืืืจ ืขืืชืง ืื ืืืืคืข ืืืจ. ืขืืืจ ืื ืื ืืช ืืืื ื ืืงืคืงื ืืจืืื, ื ืืฆืจ ื ืืฉื ืืฉืืืคื ืขื ืืืื ืฉืื ืืืื (ืฉืขืืงื ืืืจ ืขืืืื ืื ืืงืืืืื). ืื, ืงืคืงื ืืืื ืืื ืืจืฃ ืืช ืืื ืืช ืืืืืืชืืช. ืืื, ืืืงืจื ืฉื ืืฉื ืฉื ืืืคืข ืืื ืื ืืืจ ืฉื ืงืคืงื ืกืืจืื, ื ืืชื ืืฉืืืจ ืืืืืจืืช ืืช ืื ืืช ืืืืื ื ืืืืคืข ืืืจ, ืืฉื ืืขืืจื ืืืืืฆืืช ืืืชืืืืืช. ืืืืืงืืช ืฉืื ื ืืจืื ืฉืื ื ืขืฉื ืชืื ืฉื ืืืช, ืื ืื ืืฉ ืืืืืื ื ืจืฉืืืืช ืืื ืืช.
ืืขืืจ ืืฉืืจืืช ืืืงืจื ืืืื ืขื ืืฆื ืืฉืืชืฃ ืืืฉืืื ืฉื ืฉืืจืืชื ืืืงืจื, ืื ืืืคื ืืืืืช ืคืืืช ืืจืืืืืืื ืืืืฉื ืืช ื-API ืฉื Get State. ืืืฆื ืืืืฉ, ืืืืจ ืืืืื ื ืฉื ืื ืฉืืจืืช ืืืงืจื ืืืื ืจืง ืืืง ืืืชืืื ื ืืืืืืช (ืืืชื ืืืืืืงืืื ืฉืืืคืชืืืช ืฉืืื ืืืคื ืืืืืฆื ืกืคืฆืืคืืช). ืืืื ื ืฆืจืืืื ืืงืืืข ืืืื ืืืคืข ืืืื ืืช ืืืฆื ืฉื ืืืืืืืงื ืฉืื ืื ื ืฆืจืืืื, ืืขืฉืื ื ืืืช ืืืชืืกืก ืขื ืืืื ื ืชืื ืื ืฉื ืืฉืจืฉืืจ, ืืคื ืฉืืืฆื ืืืื:
ืืืืจ 7: ืืืืฆืขืืช ืืื-ื ืชืื ืื ืฉื ืืจื, ืื ื ืงืืืขืื ืืืืื ืืืคืข ืืืฆืข ืฉืืืืชื ืขื ืืฆื ืืืืืืืงื ืืจืฆืื; ื ืขืฉื ืฉืืืืฉ ืืืืฉื ืืืื ืขื ื-API ืฉื GET ALL
ืืืฆืืื ืขืืงืจืืื
ืื ืืืืช ืืืืืชืืืช ืืงืคืงื ืืจืืื ืืืืืืช ืืฉืืฉ ืืืกืืก ื ืชืื ืื ืืืืืจ ืื ืคืงืื,
- ืืฉืืืคื ืืื ืืจืฃ ืืงืคืงื
- ื ืืชื ืืื ืืช ืืืฉืง API ืฉื CRUD ืืงืืืช ืขื ืืื ืืขืจืืช ืืื
- ืืืืคืื ืืืกืคืจ ืืืืฆืืช ืืื ืงืฆืช ืืืชืจ ืืกืืื
- ืืคืฉืจ ืื ืืืืกืืฃ ืื ืืช ืืืื ื ืืืช ืื ืืืชืจ ืืืืคืืืืืืืช ืืกืืจืืืื ื ืืื ืืืืกื ื ืชืื ื ืขืืจ. ืืคืฉืจืืช ืื ืืืืื ืืฉืืฉ ืขืืืจ:
- ืืืกืื ืืืืื ืืจืื ืฉื ื ืชืื ืื ืืืจืืฉืื ืืืืฉืืืื ืืืืื ืขืืืื ืืืจื
- ืืืกืื ืืืืื ืืจืื ืฉื ื ืชืื ืื ืฉืขืฉืื ืืืืืช ืฉืืืืฉื ืืคืขื ืืืื ืฉืืืคืข ืืกืืจืืืื ื ืืืงืฆื
- ืืจืื ืืืชืจ...
ืืชืจืื ืืช ืืื ืืืืจืื ืืืคืืื ืืช ืงืคืงื ืกืืจืื ืืืชืืื ืืืื ืืฉืืืจื ืขื ืืฆื ืขืืืื ืืืขืจืืช ืืืืืจืช ืืื ืฉืื ื. Kafka Streams ืืืืื ืืช ืขืฆืื ืืืืื ืืืื ืืืืฆืืจ (ืื ืืื ืื ื ืืืขื ืืืืื ืืืืขืืช ืืื ืืคืจืืกื), ืืื ื ืืืืืื ืฉืืืืืืืช ืฉืื ืื ืืคืกืืงื ืฉื!
ืืงืืจ: www.habr.com