αααα»ααα·αααΆαααα»αααΆαααααααααααα αΆαααΆαααα·αααααααα αααα·α α’αα·αα·αα αα·αααΆααα·ααΆαααΆααΆααΆααααα αααα»αα’αΆααΈα IT αααααααα»αα α’ααααααααααΆα αααΎαααααΆα Powerpoint ααΊααΆαααααΎαααααααΆαα· αα·ααα½αα±αααα»αα α·ααααααααΆαααααα»αααΆα§αααααααα·αααααΆαα ααα»αααααα ααααΆαααα ααααΆαααΆαααΆαααααΆααααααΌααα»αααΆαα α αΆααααΈαααα»αααααααααα§αααΆ αααα»αααΆαα±ααΆααα·ααΆααα αααα»αααααα·ααΈαα ααα½αααααΆα α αΎαααααΆααααααΆαααααΆαααΆαααααααΌααααα ααααα»αααααααααααααΈ ααα»αααααααααααααα»αααΆααααααα αααα½αααΆαααΎαα‘αΎαα’αααΈααΆααααααααααααααααααΆαααΆαααΆααααααΉαααΆααα ααΆααΌαααΆαααααααΆααα ααα»αααααααααααα ααααΆααααΆαααααΆααΆαααααΎααΆαααΆαα½αα’ααααα ααΆαααααααΎα―αααΆα .pptx ααΆααααα»ααα ααα»ααααααΆαααΆαααΆααααααα ααΆααΆαααΉαααα ααααΆαααααΆααααΆααααΉαααΆααααααααΆαααΆαα½αααΆ "ααααΈαααα»α" α αΎαααααα "ααααΆααααΈ" αααααΆαααααΆααα»αααααΆαα αααα»α Powerpoint αααα αα·ααα»αααα’αααααα ααΎαααΆαααΈαααααααΎαα α αΎααααα»αααΆααααααα α α·αααααΆαααααα’αααΈααααΈα αααα»αααΆαααΆαααααααΆ α αΎαααΆααααΈαααααααα αααα»ααα·αααΆααα·αα’αααΈααΆααααααααα Powerpoint αα·αααα
ααΎααΎαα ααααΆαα’αααΈ
αααα αααα½αααααΆααααααααααααα
ααα αααα»αα αα»αααααααΎαααΆααααααααΎααααΆαα Word ααΎααααΈαααααΎαα―αααΆααααααα αααααΆααα½αααααααααα αΆααΌα
ααααΆα αααααΈααΆ Word ααα’αααααΆααααΆαααΆααααα
αΌαα―αααΆαααΌα
αα½α αα
ααααααααα·ααΆαααΎαα‘αΎαααααα ααΆαααααΆαααΎαα‘αΎαααΆαα½αααΉαααΆααα ααΆα αα·αααΆαααα½αααΆααα»αααΆαααααα αα·α ααΆααα
ααΆααααα½αααααα½αα αααααΎαααααααΎαααΆαααααΆααα
α»α
- αααααα αΆαααααΌαααααΆα―αααΆαα’αααααααααααΆααΆααΆααΆαααααΆααα
- ααααΆαααααααΎααα·ααΆαα’αααΈααααααα’αα·αααααα ααΌα
ααααααΆααααααΆαααα½αααααααΎα±ααααΆααΆααααα½ααααα»αααΆααααα
αΌα ααααα·αααααΎααααααααααΆααααα
- αααααααΌαααΆαα½αααΉαααΆαααααα·α ααΆααααααααααα,
- ααααΆααααΆαααΆαααααααα»αααααααααααΆαααααΈααΆααααααααααΆααααααααα½α,
- ααααΆααααΆα UML ααααΌαααΆαααα αΌα αα·αα αααΎααααα
- ααα ααααΈααααΆααααααα αΆαααααΌααααααααΆαα»ααα αααα»ααααααααααααα½ααα·αα·αααααααα
- αα»ααααΆα αα·αααΆααααα»αααααΆααααααΆααααα αααα½αααααααΎα‘αΎααα αααα»ααααααααα CI α
ααααβααααβααα ααΆαβαααααΎαβααΌαααααΆαβααΈαβαααααΆααβααΆαβαααααΎαβααααΆαβααΆβααΆααΆβαααααΆααα αααα
αα
αααααΈααΆαααααΉααααααααα»ααααα·ααα αααα»α LaTeX ααααα ααα α·ααααααααααα»αααΆααααααααΆαααααΎααααααααααααΆαααααααα»αααΉααα·αααααΎααααααΆααααααα½ααααααα·ααα αααααααααΆααααααααααααΆααααααααΆααα ααααααααααααΆαααΌαα α αα·αααααααααααααΆαα»αααααααααΆαα LaTeX αα α αΎαααααα·αααΎααΆαα’αα»αααααααα αΆαααααααααα’ααααα·αααΆααααααΉαααΆααααααα’ααααααα·ααααΆααΆααααααα αααα’αααααααααΆαα·αααΆααααααααΆααΎααααΈααααα»ααααα½αα’ααααα αααα»ααα·αααααααα»αααααΆααααααααααααααααα
αααααΆαααΆαααΆααααα ααΆαααααΆααααααΆααα HTML/CSS αα·ααααααΆααααΆαααααΌααααΌααΆααααααα ααΆα§ααΆα ααα αααα»ααα
ααααΆαααΈααααΆαααΆαααααα»αα ααΆααααΆαααα’ AsciiDoctor αααααααΆααααααΆαααα½α
α αΎααααα½αααααααααα α§αααααααααααα
αααααααααααΌαααααΆα
ααΎααααΈαααααΈααααΉαααΆαααααααΆααααααααΌααα ααΎ AsciiDoctor αα·ααΈααΆααααα½ααααα»αααΊαααααα§ααΆα αααααΆααααΆααα ααΆααβαααβααΊβααβααΈβααααΆαβαα·αβααααΆααβαααβαααα»αβααΆαβααααΎβαααααΆααβααβαααα αΆαβααααα·ααΈαβααααβαααα»αβαα βααααΆαβαααα
ααααΆααααααΆαα αααααΎα αα·ααααααΈαα αααα»αααΆαα»αααααΎααα½ααααααΆααααΈααααααααα
== ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΌ Streams API?
[%step]
* Real-time stream processing
* Stream-like API (map / reduce)
* ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ:
** ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ offset commit
** Π Π΅Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ°
** ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
** ΠΠ΅Π³ΠΊΠΎΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
αααααα
ααααααΆ αα·αα’αααααααΌααααααααΆαα½αααΆαααααα·α ααΆαααααααααααα
== Kafka Streams API: ΠΎΠ±ΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° KStreams-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
[source,java]
----
StreamsConfig config = ...;
//ΠΠ΄Π΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΡΠΊΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ
Topology topology = new StreamsBuilder()
//ΠΠ΄Π΅ΡΡ ΡΡΡΠΎΠΈΠΌ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ
....build();
----
αααααα
αααα»αααΆααααα ααααααΆααααΆααα·ααΆααααΆ ααΆααααα αΆαααΌαααααααΆααααΆααααααα αα·αααΆααααααα’ααααα αΎαααααααα ααΌα αααααααααααΆααααα»αααΆαα αααα αα·ααα·αααααΆαα "ααΌααα " αααααααΆαααα αααα»αααααΆαααΊααΆαααααααα·αα’αΆα ααΆααααααααΆα αααααΆααΆααΆααΆαααΆαααααααΆαααΆαααΆααααααααααα·αααΆααααα’αααΈααΆαααααα·α ααΆαααααααααααα
α
αααααΎα ααΌαααΆα αα·αα’ααααα (ααααααα
ααΎααααΆαααααΌαααΆαααααΎαα
αααα»ααααα‘αΆ
== Kafka Streams in Action
[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
βKafka Streams in Actionβ, November 2018
* ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Kafka 1.0
|===
αααααα
ααααααααα·αααααΌαααΆαα αααααΎααα α αΎαααΎααααΈαααα αΆαααΈα ααα»α ααααα’ααα α’αααααααΆααααααααΌαααΆαααΌαααΆααααα’ααααααα
[%notitle]
== ΠΠΈΡΡ Π² Π»Π΅Π³Π°ΡΠΈ Π½Π΅Π»Π΅Π³ΠΊΠΎ
image::swampman.jpg[canvas, size=cover]
αααααα
ααΆααΉααα αααα·ααα½αααααΌαααααΆαααααααααααΆααααΆαααΆαααα αααα»αααααααααΆ "ααΆαααααααΆααααααααα½α"α ααΆααααΆαααα’ AsciiDoctor ααααΌαααΆααα½ααααα
αΌαααΆαα½ααααααααα
== ΠΠΈΡΠ΅ΠΌ βBet Totalling Appβ
ΠΠ°ΠΊΠΎΠ²Π° ΡΡΠΌΠΌΠ° Π²ΡΠΏΠ»Π°Ρ ΠΏΠΎ ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΌ ΡΡΠ°Π²ΠΊΠ°ΠΌ, Π΅ΡΠ»ΠΈ ΡΡΠ³ΡΠ°Π΅Ρ ΠΈΡΡ
ΠΎΠ΄?
[graphviz, "counting-topology.png"]
-----
digraph G {
graph [ dpi = 150 ];
rankdir="LR";
node [fontsize=18; shape="circle"; fixedsize="true"; width="1.1"];
Store [shape="cylinder"; label="Local Store"; fixedsize="true"; width="1.5"]
Source -> MapVal -> Sum -> Sink
Sum -> Store [dir=both; label=" n "]
{rank = same; Store; Sum;}
}
-----
αααααα
αααα»αααααΈαααα αΆαααΆα αααααΌαααααααα½αα αααααΎααα ααΎααΌα ααααΌααα·ααααα½αααα αααα’αΆα ααααΌαααΆαααααΎαααααααΆαααα αααα»αααΌααααααα αΆα αααα½αα±ααααΆαααΌαααΌαααΆαα‘αΎααα·ααα ααααααααΆαα½α α αΎααααα αΌαααΆαα αααα»αααααΆααα·αα ααααααααΎαααααΏααααΆαααααΆαααααα»αααΆαααααΎααΆαααΎααααΆαα
α§ααΆα ααααααα»αααααΆαααΆααααα
== ΠΠ΅Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠ°Ρ ΡΠ±ΠΎΡΠΊΠ°
[graphviz, "unstable-update.png"]
-----
digraph G {
rankdir="LR";
graph [ dpi = 150 ];
u -> r0;
u[shape=plaintext; label="linter updaten+ 13 warnings"]
r0[shape=point, width = 0]
r1 -> r0[ arrowhead = none, label="master branch" ];
r0-> r2 []; b1 -> b4; r1->b1
r1[label="150nwarnings"]
b1[label="Β± 0nwarnings"]
b4[label="Β± 0nwarnings"]
b4->r2
r2[label="163nwarnings", color="red", xlabel=<<font color="red">merge blocked</font>>]
{rank = same; u; r0; b4;}
}
-----
αααααα
ααααα·ααΈααα ααΆααΆααΆαααΆααααα½ααααα»αααΆααα·αααααααΆαα½α Graphviz αα·αααααΆααααα α»ααα
ααΎααααα
ααΆα
α»αααααα ααααα·αααΎα’αααααααΌαααΆααααα
αΌαααααΌαααΆαααα αΌα ααααΆααααΆαααααΆαα α¬ααααΆααααΆααααααααΆααααααααααα
αααα»αααααΆα ααααααααααααα½αααααααααααααα½ααααα
αΌαααΆαα½α AsciiDoctor α’αΆα
αααα½αααααααααααΆαα
ααΆααααααααααααααααααα αΆααα
ααΆααΌαααααααααΆαα»ααα
ααΎαααααααααααα½ααα·αα·ααααααα ααααΎα±ααααΆα’αΆα
αααα
αααΆαααΆααα½αααααΆααΎαααααα αΆα ααΆααααΌαααΎααααΈααααααα·α
αα
ααΆαααααΆααααααΎαααααΉαααΆα αα·αααΆααα
ααΆα ααΆααα
ααΆααααααΆα (αα»αααα’αααα ααααααΆαααααα α
αΌααααααΆαα) αα
αααα»α RevealJS ααααΌαααΆααα·αααααΆαααααααΎ CSS α ααααΆαααααΆαααααα½ααααααααα»αααΆαα½α CSS ααααΌαααΆααααααΌαααα’αααα»αααα
αααααΎαααααα HTML ααΆαα½αααααΆα
αααααα’αααααααααααΆααΊα’ααα αΆαααααΆαα ααα»ααααααΎα’αααα αααααααΆαα ααΆαααααα αΆααααααααααΆ?
AsciiDoctor ααΊααΆαααααααααααααααα αααα»α Ruby α αΎαααΆααα·ααΈααΆα αααΎαααΎααααΈααααΎαααΆαααΆα ααααΌαα’αααα’αΆα ααα‘αΎαααΆααΆ Ruby α αΎαααααΎαααΆα asciidoctor αααααααΆαα ααααααα ααααΆααΏαααααα·ααααα·ααααααα»ααααααΆααα’αααα’αα·αααααα Ruby α
ααααα·αααΎα’ααααα·αα
ααααααααααααΆαα½αααΆαααα‘αΎα Ruby α’αααα’αΆα
ααααΎααΌαααΆα docker
αααααΎαβαααβαααα»αβααΆαβααααΎαααΎαβα’αΆα βααΎαβαα βα αΆααβααΌα βααΆβαα·αβααΉαβααααΆαβααα ααα»ααααβααΆβααΆβααΆαβααΆααααα½αβαααα»αβαααααΆααβαααα»αβαααα»αβααΆαβααΆβα’αααβαααααΎα Javaα ααΆαα·ααααααΌαα±ααααΆαααΆαααα‘αΎα Ruby α¬ docker αα ααα»ααααα’αα»ααααΆαα±ααα’ααααααααΎαααααΆααααααααΎααααααΈα Maven α
α
ααα»α
ααααΆααααΊαααααα
ααΆαα’αΆα
ααααΆα graphviz
αααααααΌαααΆαααααα·αααΎα’αααα
ααααααΎααααΆα ααα·α GraphViz α¬ PlantUMLα) ααααΆααααααΆααα―αααΆα .adoc ααααα’ααααααα»αααα―αααΆαα src/main/asciidoc/
α αα
ααΈααα
αααααααααΆααα ααΆ PDF
αααααΈααΆαααα HTML ααααααΆαααΆααααααααααααααααΆααααααααα½αα―αααααα ααααΆαα ααα αΆαααΆα αααΎααααΈα±ααααΆααααα PDF ααααααΆαα ααΈαα½α ααΆααΎαα‘αΎαααΆαα αααα»αααααα·αα·ααα½αα ααα½αααααα·ααααααα±ααΆαα±ααααΆαααα·αααΎααααΈααααΆαααα»αααααΌααααα½αααααααΆαααααα½αααααααΆαα αα½αααααΆαααΆαααααΆα "αααΆαααΉαααΉαααΆαααααα pptx α¬ pdf" ααααα·αααΉαααααΆαααΆαα½αααααΆααα αααα»α HTML αααααα ααΈααΈα ααΆααΆααααααααααα’αααα»αααΆαααααΎα’ααααααα αααΌαααααααααα·αααΆαααααααα½αααααααΆαααααα’ααα ααΌα ααααα½αααααααΌαααΆααααα αΆααα αααΆαααΆαααααΆαααααα PDF αααααΆααααΆαααααα»αααα―αααΆααα αααα»αα―αααΆαααααα·ααΈαα
ααΆααααΆαααα’ α§αααααααααΎααααΆαα Node.js αααααααΆααα·α
αα
ααΆααααα
node decktape.js -s 3200x1800 --slides 1-500
reveal "file:///index.html?fragments=true" slides.pdf
αααα·α ααΈααα αααααΎαααααΎαααΆαααααΆαααααααΆαα αααααΎαααααΌααααααΎαααΆααααααΆαααΆααααα αα·αααα α»αα
-
αααααααααΆαααΆαααααααΆαααΆαααααα
-s
ααααΌααααααααΆααααΆαα½αααΉαααΉαααΈααα ααΎαα·αααΌα ααααααααΆα’αΆα ααΆααααα αΆααΆαα½αααΉαααααααααΆααααααα -
αα αααα»α URL αααααα HTML αααααααα αΆα α’αααααααΌαααααααΆαααααΆαααΆαααααααα½αα
?fragments=true
αααααΉααααααΎαααααα PDF ααΆα ααααα‘αααααααΆααααααΆαααΆαααααα·ααααααααΈαα½ααααααααΆαααααα’ααα (α§ααΆα ααα αααααααααΆααααααΆααα ααα»α α ααα½αααααΆα ααααα·αααΎαα½αααΆααααΌαααΆααααα αΆααα½ααααααΆααααΈαααααααα)α ααΆβααΉαβα’αα»ααααΆαβα±ααβα’αααβααααΎ PDF αααβαααβαααβαααα½αβααΆβααΆβααβαααα αΆαβαααα»αβα’αα‘α»αβαααβαααΆαααΆαααβαα½αα
ααΆααα½αααααα»ααααααααααααααααα· αα·αααΆαααααα»αααααααΆααα ααΎααα ααααα
ααΆααΆααααα½ααα ααααααααααΆαααααΌαααΆαα ααααααααααααααααααααα· αα ααααααααΆαααααΆααααααΌαααααΌαααΆαααααΎα‘αΎαα αααααααααααααααα½ααα·αα·ααααααα α αΎαααΆααααααΆααααα½ααα ααααααααααΆααααααΆαα ααααααααααααααααααααα·ααααΌαααΆααααα αααα ααΎα’ααΈαααΊαα·ααααααΆααααΆαααααΎααααΆααααΆααΆααΆαααα ααααΆαααΈα’ααΈαααΊαα·αα’αΆα ααααΌαααΆα "ααα" αααΆαααΆααααα½ααα α αααααα»ααααααα·αααααΈαααΆαααΈαααΆαα½ααααααααΆααα’ααΈαααΊαα·α αα·ααααΆαααΈααααα αΆααα
α
αΆααααΆααααΈααΎαααααΎ GitHub αα
αααα»αααΆαααΆαααααααΎα αααααΎαααααααΆαα·αααααααααα CI ααΊ gh-pages
ααααααααααααα’ααααα
ααΎ GitHub α’αΆα
ααααΆααα
<Π²Π°ΡΠ΅ ΠΈΠΌΡ>.gihub.io/<Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ>
.
αααααα―αααΆαααααααα
ααΆαααααααα TravisCI αα½αααΆααααΆαα
ααααααααα HTML ααααααααααααααΎ Maven ααααααααα
ααΆ PDF αααααααΎ deccktape αα·ααααα
αΌααααααααα
ααΆαααααααα‘αΆα gh-pages
αααααΆααααΆαααααα»αααααααΆααα
ααΎ github.io ααΎααα
ααΌα
ααΆ
ααΎααααΈααΆαααααααααααααααααα ααΆα TravisCI α’αααααααΌαααααααα ααΆααααααααα’αααααα·ααααΆα
GH_REF
- αααααααΌα ααΆ github.com/inponomarev/csa-hbGH_TOKEN
- αα·αα·ααααααααΆα αΌαααααΎ GitHub α α’αααα’αΆα ααα½αααΆαααΆααΈ GitHub αα αααα»αααΆαααααααααααααα·ααΌαααααα’ααα ααΆααααααα’αααα’αα·αααααα -> αα·αα·ααααααααΆα αΌαααααΎααααΆαααααα½αα ααααα·αααΎα’ααααααα αααααααα αΆααα ααααΆααααΆααΆααα ααααααααΆαααααααΆαααααΆααααα ααΆαααααααααΆααα αΎααααα»αααΆααααααΆααααααα·αα αΌαααααΎαααα½αααα "α αΌαααααΎααααΆααααΆααΆααα"αGH_USER_EMAIL
/GH_USER_NAME
- ααΌααααα/α’ααΈααα αααα½αα±ααααΆααααα»ααα αααααααααΆαααΉαααααΌαααΆαα’αα»ααααgh-pages
.
ααΌα αααα ααΆαααααααααΆα α·αααααΈαα½ααααααΌααααααα αΆααα ααΎ GitHub ααΆαα±ααααααΆαααααΌαααΆααααααΎαα‘αΎααα·ααααααααααααααααα·αααα»ααααααα HTML αα·α PDF α αΎααααα ααα‘αΎααα·ααα github.io α (ααΆβααΆαβαα·αβααΆαα α’αααβαα½αβααβαααα ααβαα github.io ααβαααα αΆαβααΆααβαααβαααβα’αααβα ααβαααα αΆαβααΆβααΆααΆαααβαα βααΈβαααα»α)α
α§ααΆα ααααααααααα
ααΆα α»αααααα αααααΊααΆαααααααΆαααα ααΆααα§ααΆα ααααα½αα ααα½ααααααααααααααα αΆαααΆαα½αααΉαααααααΈα Maven ααααΆαααααα½α αα·αααΆαααααααα ααΆαααααααα CI αααααΆαα Travis-CI αααα’αΆα ααααΌαααΆαααααΌα αα·αααααΎαα ααααααααΎααααααααααααα αΆαααααΆαααααα½αααααα’αααα
-
https://github.com/inponomarev/kstreams-examples (ααΆααα·ααΆααααΆαααααααα»ααααααΆαα JPoint 2019) -
https://github.com/inponomarev/csa-hb (αααΆαααΆααααααααααα»ααααααΆαα Heisenbug 2019)
ααΆα αΎα Powerpoint! αααα»αβαα·αβαα·αβααΆβαααα»αβααΉαβααααΌαβααΆαβα’αααβαααααΆααβααβαααα αΆαβαβα αα αβαβααα :)
ααααα: www.habr.com