ááŸááºáá»ááºá áá¬áá¬ááŒááº: á€áá±á¬ááºážáá«ážááœááºá Banzai Cloud ááẠKubernetes á¡ááœááºáž Kafka ááᯠááá¯ááá¯ááœááºáá°á á±ááẠáááºážáá áááºááŒáá¯ááºáááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºážááᯠá¥ááá¬áá áºáᯠáá»áŸáá±áá¬ážáááºá á¡á±á¬ááºáá±á¬áºááŒáá« áááºážááœáŸááºáá»ááºáá»á¬ážááẠááá·áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á á¡áá±á¬ááºážáá¯á¶ážá¡ááœááºá¡á á¬ážááᯠáááºáááºáá²á·ááá¯á· áá¯á¶ážááŒááºááá¯ááºáá¯á¶ááŸáá·áº ááá¯á¡ááºáá±á¬ ááá¬áááá¯áááŸáááẠKafka ááá¯ááºááá¯áẠconfigure áá¯ááºááá¯ááºáá«áááºá
Apache Kafka ááẠáá¯á¶ááŒááºá
áááºáá»ááá±á¬á á¡ááá¯ááºážá¡áá¬ááŸáá·áº á
áœááºážáá±á¬ááºáááºááŒáá·áºáá¬ážáá±á¬ á¡áá»áááºááŸáá·áºáááŒá±ážáá® ááá¯ááºááá¯ááºáá¯ááºááœáŸáá·áºááŸá¯á
áá
áºáá»á¬ážááᯠáááºáá®ážáááºá¡ááœáẠááŒáá·áºáá±áá¬ážáá±á¬ streaming ááááºáá±á¬ááºážáá
áºáá¯ááŒá
áºáááºá Kubernetes ááᯠá¡áá¯á¶ážááŒá¯á áááºážá á¡áááºááŒá®ážáá±á¬ááºáá±á¬ á
áœááºážáááºáá»á¬ážááᯠááá¯ážáá»á²á·ááá¯ááºáááºá áá®á¡ááœáẠáá»áœááºáá±á¬áºááá¯á· ááœá¶á·ááŒáá¯ážáá¬áá«ááŒá®á
áááºáá¡á á¯á¡áá±ážááŸá Supertubes ááá¯á ááºážááŒáá·áºáá«-
curl https://getsupertubes.sh | sh О supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>
ááá¯á·ááá¯áẠáááºááœááºáá«á
á á¬ááœááºá á¬áááºáž . Supertubes ááŸáá·áº Kafka á¡á±á¬áºááá±áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá·áº Kafka áá áœááºážáááºá¡áá»áá¯á·ááá¯áááºáž áááºáááºááŸá¯ááá¯ááºáááºá áá°ááá¯á·á¡ááŒá±á¬ááºáž ááá±á¬á·ááºááŸá¬ áá±ážáá¬ážááŒá®ážáá¬ážá
á¡áᯠááá¯ááºáá°áž! Kubernetes á¡ááœáẠáá±á¬ááºááẠKafka á¡á±á¬áºááá±áᬠ;Prometheus áááºááá áºáá»á¬ážááᯠá¡ááŒá±áá¶á Kafka ááᯠá á±á¬áá·áºááŒáá·áºááŒá®áž áá¯ááºáá±á¬ááºáá«á ;Kubernetes ááœáẠKafka ááááºááááºážááŒááºáž á¡ááááá¬áá±áž ;Istio - á á¶ááœáŸááºážááẠApache Kafka ááᯠáá¯ááºáá±á¬ááºáá±áááºá ;á¡áá¯á¶ážááŒá¯áá°ááẠKafka á¡á±á¬áºááá±áá¬ááŒáá·áº ááááºážáá»á¯ááºáá¬ážáá±á¬ á¡á á¯á¡áá±ážáá»á¬ážááᯠá á áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááŒá®áž áááºáá¯á¶ážáá«á ;Kubernetes ááœáẠKafka ááŸááá·áºááœááºážáá¶ááŒááºážááŸáá·áº áááºááŒáœáá±á¬ááœá²á·á ááºážááŸá¯áá¯á¶á ᶠ;Kafka á¡ááœáẠá¡áá°ážááá¯ááºá á¬ážááŸáẠáááá¯ááá¯áá±á¬ á á áºáá¯ááºááŒááºážá .
Kubernetes ááœáẠKafka á¡á á¯á¡áá±ážáá áºáá¯ááᯠá¡áá¯á¶ážáá»ááẠáááºáá¯á¶ážááŒááºáá±á¬á¡áá«á á¡áááºážáá¶á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á á¡áá±á¬ááºážáá¯á¶ážá¡ááœááºá¡á á¬ážááᯠáááºááŸááºááŒááºážááŸáá·áº ááŒááºáááºážááŸá¯ááá¯á¡ááºáá»ááºáá»á¬ážááŒáá·áºáá®á á±ááẠáááºá Kafka ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠáá±á¬ááºážá áœá¬áá»áááºááŸáááẠááá¯á¡ááºááŒááºážá ááá·áº á áááºáá±á«áºááŸá¯áá»á¬ážááŸáá·áº áááºááá¯ááºáááœááºááŸááááºá ááœá²á á¬ážáá áºáá¯á á®á á¡ááŒáá·áºáá¯á¶ážá áœááºážáá±á¬ááºáááºááᯠáááºááá¯áá®á áááá¯áááºáá¬á áá áºááºá¡ááŒááºááŸá¯ááºážá ááœááºáááºáááºážáááºá áááºááŒáá·áº á¡á±á¬ááºááŒá±á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ á¡á áááºá¡ááá¯ááºážáá»á¬ážá á áœááºážáá±á¬ááºáááºááŒáá·áº áá¯á¶ážááŒááºáááºá
á¡áá±á¬ááºážáá¯á¶ážááá±á¬á·á ááœá²á á¬ážááœá²á·á ááºážáá¯á¶ááœá²á·á ááºážáá¯á¶ááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á¡á áááºá¡ááá¯ááºážá¡á¬ážáá¯á¶ážááᯠáááºážááá¯á·á á¡ááŒáá·áºáá¯á¶ážá áœááºážáá±á¬ááºááá¯ááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážááá·áº ááá¯ááá¯á·ááŒá áºááá·áºáááºá ááá¯á·áá±á¬áº áááºááœá±á·ááááœáẠá€áááºáááºááŸá¯ááŸá¬ á¡ááœááºááŸá¯ááºááœá±ážáá«áááºá á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠá¡á áááºá¡ááá¯ááºážáá áºáᯠááá¯á·ááá¯áẠááŸá áºáᯠ(áá áºááºá áááºááá¯áá® ááá¯á·ááá¯áẠáááá¯áááºáá¬) ááᯠá¡áá»á¬ážáá¯á¶ážá¡áá¯á¶ážááŒá¯ááẠááœá²á á¬ážáá»á¬ážááᯠá á®á ááºáááºááŸááºáááºááŸá¬ ááá¯áá»á¬ážáá«áááºá áá±áá¯áá»á¡á¬ážááŒáá·áºááŒá±á¬ááá»áŸááºá ááœá²á á¬ážáá áºáŠážááẠáááºážáááœá²á·á ááºážáá¯á¶ááœá²á·á ááºážááŸá¯ááœáẠá¡ááŸá±ážáá¯á¶ážá¡á áááºá¡ááá¯ááºážááᯠáááºážáá¡ááá¯ááºážá¡áá¬á¡áá á¡ááŒáá·áºá¡áá¡áá¯á¶ážááŒá¯ááẠááœáá·áºááŒá¯áá±á¬á¡áá«ááœáẠááœá²á á¬ážááẠá¡ááŒáá·áºáá¯á¶ážá áœááºážáá±á¬ááºáááºááá¯ááŒááááºá á€áááºážááŒáá·áº ááœá²á á¬ážáá áºáŠáž ááá¯ááºááœááºááá¯ááºááá·áº áááºááᯠá¡ááŒááºážáá»ááºáž á¡ááŒá¶á¥á¬ááºáááá¯ááºááẠá
áá®á¡áá¯áá®á¡áá áá±ážáá¬ážáá±á¬áááºááᯠááá¯ááºááœááºááẠááá¯á¡ááºáá±á¬ ááœá²á á¬ážá¡áá±á¡ááœááºááá¯áááºáž ááá·áºááŸááºážááá¯ááºáááºá ááá¯á·áá±á¬áºáááºáž áááºááœá±á·ááœááºá ááœá²ááŒá¬ážáá±á¬á¡ááá·áºáá»á¬ážááœáẠconfiguration ááœá±ážáá»ááºá áá¬áá»á¬ážá áœá¬ááŸááá±á¬ááŒá±á¬áá·áº áá®ážááŒá¬ážááœá²á·á ááºážáá¯á¶áá áºáá¯á á áœááºážáá±á¬ááºáááºááᯠá¡áá²ááŒááºááẠá¡ááœááºáááºáá² (áááŒá áºááá¯ááºáá»áŸááº) á¡ááœááºáááºáá²áá«áááºá áá áºáááºážááá¯ááá±á¬áº áá±ážáá¬ážáá±á¬ á áœááºážáá±á¬ááºáááºá¡áá»áá¯á·á¡áá±á«áº á¡ááŒá±áá¶á ááœá²á·á ááºážááŸá¯áá áºáá¯ááᯠá á®á ááºááẠá¡ááœááºáááºáá²áááºá
Supertubes á¡áá¯á¶ážááŒá¯áá°áá»á¬ážá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá¡áá»á¬ážá¡á¬ážááŒáá·áº á¡á±á¬ááºáá«áá»ááºážáááºáááºážááᯠá¡áá¯á¶ážááŒá¯áááº- á¡áá»áá¯á·áá±á¬ ááœá²á·á ááºážááŸá¯á áá Ạ(á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ + áááºáááºáá»á¬áž) ááŒáá·áº á áááºááŒá®ážáá±á¬áẠáááºážáá áœááºážáá±á¬ááºáááºááᯠááá¯ááºážáá¬ááŒááºážá ááœá²á á¬ážáááºáááºáá»á¬ážááᯠáá»áááºááŸáááŒá®áž áá¯ááºáááºážá ááºááᯠáááºáá¶áá¯ááºáá±á¬ááºáá«áááºá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶á á¡ááŸá±ážáá¯á¶áž á¡á áááºá¡ááá¯ááºážááᯠá¡ááŒáá·áºá¡áá¡áá¯á¶ážáá»áááºá¡áá áááºážááẠááŒá áºáá±á«áºáááºá
á€áááºážá¡á¬ážááŒáá·áºá á¡á á¯á¡ááœá²á·áá áºáá¯á០ááœá²á á¬ážáááºáá»áŸááá¯á¡ááºáááºáá°áá±á¬ á¡áá°á¡áááᯠáá»áœááºá¯ááºááá¯á·ááẠáááá»áá±áá»á¬áá±á¬ áááºáá¯ááºáááºááá¯ážááᯠááá¯ááºááœááºááẠááá¯á¡ááºááẠ(ááœá²á á¬ážáá»á¬ážá á¡áá±á¡ááœááºáááºáááºáž áá¶ááá¯ááºáááºááŸáá á±ááẠá¡áááá·áºáá¯á¶áž áááºáá±á·áá»áºáá¯á¶áá°áá»á¬áž á¡áá±á¡ááœááºá á¡áááºážááá·áºá¡áá±á¡ááœáẠáá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážá¡áá»ááºáá»á¬ážá¡áá±á«áºááœááºáááºáž áá°áááºáá«áááºá áá±á«ááºážáá±á¬ááºáá»á¬áž á áááŒáá·áº)á ááá¯á·á¡ááŒááºá áááºááá·áºá¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá±á«ááºááá¯ááºá áá±ážáá»ááẠááá¯á¡ááºáááºááᯠáá»áœááºá¯ááºááá¯á· ááá¯ážááœááºážááááŒááºááá¯ááºáááºááŒá áºáááºá
á€áá±á¬ááºážáá«ážááœáẠáááŠážááœá²á·á
ááºážáá¯á¶áá»á¬ážá¡ááœááºáž á¡ááŸá±ážáá¯á¶ážá¡á
áááºá¡ááá¯ááºážáá»á¬ážáá²á០á¡áá»á¬ážáá¯á¶ážáááŸááááºááŸáá·áº Kafka á¡á
á¯á¡áá±ážáá
áºáá¯á ááŒááºáááºážááŸá¯ááᯠááá¯ááºážáá¬ááẠáá»áœááºá¯ááºááá¯á·áá¯ááºáá±á¬ááºáááá·áºá¡ááá·áºáá»á¬ážá¡ááŒá±á¬ááºáž ááœá±ážááœá±ážáá«áááºá á¡ááœááºáá¶ááá¯ááºáááºááŸááá±á¬ ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááẠá¡áááºážáá¯á¶áž áá¯ááºáá±á¬ááºáá±ááá·áº ááœá²á
á¬áž áá¯á¶ážáŠáž ááá¯á¡ááºááẠ(min.insync.replicas=3
) ááá°áá®áá±á¬ áá¯á¶ážá
áœá²ááá¯ááºááŸá¯áá¯ááºáá¯á¶ážáá¯ááœáẠááŒáá·áºáá±áá¬ážáááºá Kubernetes á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááᯠá
á®á
ááºáááºááŸááºááŒááºážá á¡ááá¯ááºážá¡áá¬ááŸáá·áº á
á±á¬áá·áºááŒáá·áºáááºá áá±á«ááºážá
ááºááááºááá¯ááºáá»á¬ážá¡ááœáẠáá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºááœááºááááºáá¬á
á®áá¶ááá·áºááœá²ááŸá¯ááááºáá±á¬ááºážááᯠá¡áá¯á¶ážááŒá¯ááẠ-
Kafka á¡á á¯á¡áá±áž á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááŸáá·áº ááœá²á·á ááºážááŸá¯ááá¯ááºáᬠá¡ááœá±ážá¡ááŒááºáá»á¬áž
á¡á±á¬ááºáá«ááá°áá¬áá»á¬ážá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠAWS ááᯠcloud áá¶á·ááá¯ážáá±ážáá°á¡ááŒá
áºááŸáá·áº Kubernetes ááŒáá·áºááŒá°ážááŸá¯á¡ááŒá
ẠEKS ááᯠááœá±ážáá»ááºáá²á·áááºá á¡áá¬ážáá° configuration ááᯠá¡áá¯á¶ážááŒá¯á á¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáááºá
disk ááá¯
Amazon á á¡áá»áá¯ážáá»áá¯áž áááºážááŸááºážáááºá
á¥ááᬠá¡áá»áá¯ážá¡á á¬ážáá»á¬áž
Kafka áá
áœááºážáá±á¬ááºáááºááẠáááºáááºááŸá¯á
áá
áºá á
á¬áá»ááºááŸá¬ cache áá±á«áºááœáẠá¡ááœááºáá°áááºáá±á¬ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠááœá²á
á¬ážáá»á¬áž (JVM) ááŸáá·áº page cache á¡ááœáẠáá¯á¶áá±á¬ááºáá±á¬ memory ááŸáááá·áº áá¬áááá»á¬áž ááá¯á¡ááºáá«áááºá á¥ááᬠc5.2xlarge - áááºááá¯áá® 16 GB áá«ááŸááá±á¬ááŒá±á¬áá·áº á
áááºááŒááºážááŒá
áºáá«áááºá
ááœááºáááºááá¯
ááœááºáááºááŒááºáááºážááŸá¯ááẠVM instance ááŸáá·áº disk áá áœááºážáá±á¬ááºáááºááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áá¯á¶áá±á¬ááºá áœá¬ááŒá®ážáá¬ážááááºá ááá¯ááºáá«á ááœááºáááºááẠááááºááá¯á·ááœá¬ážáááºááŒá áºáááºá áá»áœááºá¯ááºááá¯á·áááá á¹á ááœááºá ááœááºáááºáá»áááºáááºááŸá¯ c5.4xlarge 10 Gb/s á¡áá á¡ááŒááºááŸá¯ááºážááᯠáá¶á·ááá¯ážáá±ážáááºá áááºážááẠVM instance áá áºáá¯á I/O ááŒááºáááºážááŸá¯ááẠáááááá¬áᬠááŒáá·áºáá¬ážáááºá
ááœá²á á¬áž ááŒáá·áºáá»ááºááŒááºážá
CPUá Memoryá Network ááŸáá·áº Disk áááºážááŒá áºáá»á¬ážá¡ááœáẠá¡ááŒá¬ážáá±á¬ áá¯ááºáááºážá ááºáá»á¬ážááŸáá·áº ááŒáá¯ááºááá¯ááºááŒááºážá០ááŸá±á¬ááºááŒááºáááºá¡ááœáẠááœá²á á¬ážáá»á¬ážá¡á¬áž áá®ážááŒá¬áž node áá»á¬ážáá®ááá¯á· (Kubernetes ááœáẠá á®á ááºáá¬ážáááº) ááᯠá¡áá¯á¶ážáá»ááá·áºáááºá
Java áá¬ážááŸááºáž
áá¯áá¹ááááœá±ážáá»ááºááŸá¯ááŸá¬ Java 11 ááẠDocker ááŸáá·áº áááá¬áááŒá
áºááŒá®áž JVM ááẠááœá²á
á¬ážáá¯ááºáá±á¬ááºáá±ááá·áº ááœááºááááºáá¬á¡ááœáẠáááŸáááá¯ááºáá±á¬ áááá¯áááºáá¬áá»á¬ážááŸáá·áº ááŸááºáá¬ááºáá»á¬ážááᯠááŸááºáááºá
áœá¬ áá¯á¶ážááŒááºáá±ážáá±á¬ááŒá±á¬áá·áºááŒá
áºáááºá CPU ááá·áºáááºáá»ááºáá»á¬ážááẠá¡áá±ážááŒá®ážááŒá±á¬ááºáž áááá¬ážááŒááºážááŒáá·áº JVM ááẠGC thread ááŸáá·áº JIT thread áá»á¬ážá á¡áá±á¡ááœááºááᯠá¡ááœááºážááá¯ááºážááŸáá·áº ááœáá·áºáááºážááŒááºáá¬á
áœá¬ áááºááŸááºáá±ážáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠKafka áá¯ááºáá¯á¶ááᯠá¡áá¯á¶ážááŒá¯áá²á·áááºá banzaicloud/kafka:2.13-2.4.0
Java 2.4.0 ááœáẠKafka áá¬ážááŸááºáž 2.13 (Scala 11) áá«áááºáááºá
Kubernetes ááœáẠJava/JVM á¡ááŒá±á¬ááºáž ááá¯ááá¯áá±á·áá¬ááá¯áá«áá áá»áœááºá¯ááºááá¯á·á á¡á±á¬ááºáá«ááá¯á·á áºáá»á¬ážááᯠááŒáá·áºááŸá¯áá«á
áá»áœááºá¯ááºá Java á¡ááá®áá±ážááŸááºážááẠá¡áááºááŒá±á¬áá·áº OOMKilled ááŒá áºááááºážá ;Java 10 á¡ááá®áá±ážááŸááºážáá»á¬ážá¡ááœáẠááœááºááááºáá¬áá»á¬ážááᯠá¡ááœááºá¡á á¬ážááŸááºáááºá¡á±á¬ááºááŒá¯áá¯ááºáááºáž .
ááœá²á á¬ážááŸááºáá¬ááºáááºáááºáá»á¬áž
ááœá²á
á¬ážáááºááá¯áá®ááᯠáááºááŸááºááŒááºážá¡ááœáẠá¡áááá¡áá»ááºááŸá
áºáá»áẠááŸááááº- JVM á¡ááœáẠáááºáááºáá»á¬ážááŸáá·áº Kubernetes pod á¡ááœááºá pod áá
áºáá¯á¡ááœáẠáááºááŸááºáá¬ážáá±á¬ ááŸááºáá¬ááºááá·áºáááºáá»ááºááẠá¡ááŒáá·áºáá¯á¶áž heap á¡ááœááºá¡á
á¬ážááẠááŒá®ážááááºááŒá
áºááŒá®ážá ááá¯á·ááŒá±á¬áá·áº JVM ááœáẠáááºážáááá¯ááºááá¯áẠmemory ááœááºááŸááá±á¬ Java metaspace á¡ááœáẠáá±áá¬ááœááºááŸáá·áº Kafka áááºááŒáœá
áœá¬á¡áá¯á¶ážááŒá¯ááá·áº operating system page cache á¡ááœáẠáá±áá¬ááœááºááŸááááºá áá»áœááºá¯ááºááá¯á·áá
ááºážáááºááŸá¯áá»á¬ážááœáẠááá·áºáááºáá»ááºáá»á¬ážááŒáá·áº Kafka ááœá²á
á¬ážáá»á¬ážááᯠá
áááºáá²á·áááºá -Xmx4G -Xms2G
ááŸáá·áº pod á¡ááœáẠááŸááºáá¬ááºááá·áºáááºáá»áẠááŸááá²á·ááẠ10 Gi
. JVM á¡ááœáẠáááºááá¯áá®áááºáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááá¯á¡áá»á±á¬áẠááá°ááá¯ááºááŒá±á¬ááºáž áá»á±ážáá°ážááŒá¯á áááááŒá¯áá«á -XX:MaxRAMPercentage
О -X:MinRAMPercentage
pod á¡ááœáẠáááºááá¯áá®ááá·áºáááºáá»ááºá¡áá±á«áº á¡ááŒá±áá¶áááºá
ááœá²á á¬áž áááá¯áááºáᬠáááºáááºáá»á¬áž
áá±áá°áá»á¡á¬ážááŒáá·áºá Kafka á¡áá¯á¶ážááŒá¯áá±á¬ thread á¡áá±á¡ááœááºááᯠááá¯ážááŒáŸáá·áºááŒááºážááŒáá·áº parallelism ááᯠááá¯ážááŒáŸáá·áºááŒááºážááŒáá·áº á
áœááºážáá±á¬ááºáááºááᯠááŒáŸáá·áºáááºááá¯ááºáá«áááºá Kafka á¡ááœáẠáááá¯áááºáᬠááá¯áá»á¬ážáá±á ááá¯áá±á¬ááºážáá±ááŒá
áºáááºá áá»áœááºá¯ááºááá¯á·áá
ááºážáááºááŸá¯ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáááá¯áááºáᬠ6 áá¯ááᯠááá·áºáááºáá»ááºááŒáá·áº á
áááºáá²á·ááŒá®áž áááŒááºážááŒááºáž (áááºáá¬áááºáá¬á¡á¬ážááŒáá·áº) áááºážááá¯á·á áá¶áá«ááºááᯠ15 ááá¯á· ááŒáŸáá·áºáááºáá²á·áááºá ááá¯á·á¡ááŒááºá num.network.threads=12
ááœááºáááºá០áá±áá¬ááᯠáááºáá¶ááŒá®áž áá±ážááá¯á·ááá·áº á¡áá±á¡ááœááºááᯠááá¯ážááŒáŸáá·áºááẠááœá²á
á¬ážáááºáááºáá»á¬ážááœááºá áá±á¬ááºááá¯ááºááœá²á
á¬ážáá»á¬ážááẠáá¯á¶áá°áá»á¬ážááᯠáá»ááºááŒááºá
áœá¬ááááŸáááá¯ááºááŒá±á¬ááºážááᯠáá»ááºáá»ááºážááŸá¬ááœá±ááœá±á·ááŸááá²á·ááŒá®áž áááºážááá¯á·á áá¯ááºáá±á¬áºááŒá±á¬ááá¯áá²á·áááºá num.replica.fetchers
áá±á¬ááºááá¯ááºááœá²á
á¬ážáá»á¬ážá áá±á«ááºážáá±á¬ááºáá»á¬ážáá¶á០áááºáá±á·áá»áºáá»á¬ážááᯠáá¯á¶áá°áá°ážááá·áº á¡ááŸáááºááŒáŸáá·áºááẠ4 ááá¯á·á
áá»áá¯ážáááºáá áºáá°ážááºááᯠáááºáá«á
Kafka á¡á á¯á¡áá±áž (á á¶ááŸá¯ááºážáááºááŸááºáá¬ážááá·áº) á¡ááŒáá·áºáá¯á¶ážáááºááá±á¬ááºááŸááá® ááœá±ážáá»ááºáá¬ážáá±á¬ áááºáá»ááºááá±áá¬ááẠá áœááºážáááºáá¯ááºááœá¬ážááŒá±á¬ááºáž áá±áá»á¬á á±ááá·áºáááºá áá áºáááºážááá¯ááá±á¬áºá load generation tool á áá¯ááºáá±á¬ááºááá¯ááºá áœááºážáá»á¬ážááᯠááá¬áá¡áá²ááŒááºááẠááá¯á¡ááºááŒá®áž áááºážá¡ááœáẠáá¯á¶áá±á¬ááºáá±á¬ áááá¯áááºáá¬ááŸáá·áº áááºááá¯áá® á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááᯠááœá±ážáá»ááºáá«á á€ááá á¹á ááœááºá áá»áœááºá¯ááºááá¯á·ááááááá¬ááẠKafka á¡á á¯á¡áá±ážááᯠááá¯ááºááœááºááá¯ááºáá±á¬ áááºááá¬áááẠááá¯ááá¯áá¯ááºáá¯ááºááá¯ááºáááºááŒá áºáááºá á ááºážáááºááŸá¯áá»á¬ážá áœá¬ááŒá¯áá¯ááºááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬áºáá®áá¯á¶ážá¡á¯ááºáá±á«áºááœáẠá¡ááŒá±áá»áá²á·áááºá c5.4xlargeáá»ááºááá±áá¬áá áºáá¯á¶ážá á® áááºáááºáá±áá«áááºá
á á¶áááºááŸááºááŒááºáž
á áœááºážáá±á¬ááºááẠááá¯ááºážáá¬ááŒááºáž ááẠá¡á±á¬ááºáá« á¡ááá·áºáá»á¬áž áá«áááºáá±á¬ áááºáá«ááá²áá² áá¯ááºáá±á¬ááºááŒááºáž ááŒá áºááẠá
- á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠ (EKS á¡á á¯á¡áá±ážá Kafka á¡á á¯á¡áá±ážá áááºáá¯ááºáá¯ááºááŒááºážáááááá¬á á¡ááŒáẠPrometheus ááŸáá·áº Grafana);
- á á¯áá±á¬ááºážáá¬ážáá±á¬ á áœááºážáá±á¬ááºáááºááœáŸááºážááááºážáá»á¬ážááœáẠáá»áááºážááœá±áááºááŸá¯áá»á¬ážááᯠá á áºáá¯ááºááẠáááºááŸááºáá¬ážáá±á¬ áá¬ááá áºáá¯á¡ááœáẠáááºááá¯áá¯ááºáá±ážááŒááºážá
- á á±á¬áá·áºááŒáá·áºáá±á·áá¬áá¬ážáá±á¬ á áœááºážáá±á¬ááºáááºááœáŸááºážááááºážáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á ááœá²á á¬ážá á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááŸáá·áº ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠáá»áááºááŸáááŒááºážá
- ááá¯á¡ááºáá±á¬ Kafka á¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯ááºááŒááºáááºážááŸá¯á¡ááá·áº á¡á±á¬ááºááŒááºáááºá¡áá áá¯ááºáááºážá ááºááᯠáááºááá²áá²áá¯ááºáá«á áá áºáá»áááºáááºážááŸá¬áááºá áááºážááẠá ááºáááºáááŒáẠáá»áá¯ážááœá¬ážááá¯ááºáááºááŒá áºááŒá®áž ááŒááºáááºážááŸá¯ááœáẠá¡áááºážáááºáá±á¬ ááœá²ááŒá¬ážááŸá¯áá»á¬ážááᯠááŒáááááºááŒá áºáááºá
áá±á¬ááºá¡ááá¯ááºážááœáẠá ááºážáááºááŸá¯á¡á á¯á¡áá±áž á á¶ááŸá¯ááºážáááºááŸááºááŒááºážáá¯ááºáááºážá ááºá¡ááœááºáž áá¯ááºáá±á¬ááºáá²á·ááá·áº á¡ááá·áºáá»á¬ážááᯠáá±á¬áºááŒáááºá
áá°áááá¬
á¡á±á¬ááºáá±á¬áºááŒáá« áááááá¬áá»á¬ážááᯠá¡ááŒá±áá¶ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠáá»ááºááŒááºá áœá¬ á¡áá¯á¶ážáá»áááºá áááºáá»á¬ážááᯠáááºáá®ážáááºááŸáá·áº á áœááºážáá±á¬ááºáááºááᯠááá¯ááºážáá¬áááºá¡ááœáẠá¡áá¯á¶ážááŒá¯áá²á·áááº-
-
Banzai ááááºááá¯ááºááá¯ááºááá¯ááºáž Amazon c á០EKS á¡á á¯á¡áá±ážáá áºáá¯ááᯠá á¯á ááºážáááºPrometheus (Kafka ááŸáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯ááºáᬠááá¯ááºážáá¬ááŸá¯áá»á¬ážááᯠá á¯áá±á¬ááºážáááº) ááŸáá·áºGrafana (á€áááºááá áºáá»á¬ážááᯠááŒááºáá±á¬ááºáááº) á¡ááœáá·áºáá±á¬ááºážáá°áá²á·áááºá áááºáá±á«ááºážá á¯á¶ вááá¯ááºááá¯ááºáž áááá¯áá»á¯ááºááá¯ááºááŸá¯ááŒá®ážááŒááºááŒááºážá ááŸááºáááºážá á¯áá±á¬ááºážááŒááºážá á¡á¬ážáááºážáá»ááºááŸá¬ááœá±ááŒááºážá áá±ážá¡áá¹ááá¬ááºááŒááºáááºááá°ááŒááºážá áá¯ááºáááºážá¡ááá·áºáá¯á¶ááŒá¯á¶áá±ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážá áœá¬ááᯠáá¶á·ááá¯ážáá±ážááá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážá -
Sangrenel â Kafka á¡á á¯á¡áá±ážááᯠá ááºážáááºááŒááºážá¡ááœáẠáááááá¬áá áºáá¯á - Kafka áááºááá
áºáá»á¬ážááŸáá·áº á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá»á¬ážááᯠááŒááºáá±á¬ááºááá¯ááºááẠGrafana áááºááŸáºáá¯ááºáá»á¬áž-
Kubernetes Kafka ,Node áááºááá¯á·áá° . - Kubernetes ááœáẠKafka á¡á
á¯á¡áá±ážáá
áºáá¯ááᯠáááºááŸááºááẠá¡ááœááºáá°áá¯á¶ážáááºážáááºážá¡ááœáẠSupertubes CLIá Zookeeperá Kafka á¡á±á¬áºááá±áá¬á Envoy ááŸáá·áº á¡ááŒá¬ážáá±á¬ á¡á
áááºá¡ááá¯ááºážáá»á¬ážá
áœá¬ááᯠKubernetes ááœáẠáá¯ááºáá¯ááºááŸá¯á¡áááºááá·áºááŒá
áºáá±á¬ Kafka á¡á
á¯á¡áá±ážááᯠáá¯ááºáá±á¬ááºááẠáá±á¬ááºážá
áœá¬ááá·áºááœááºážáá¬ážáá«áááºá
- áááºáááºááẠsupertubes CLI áá±ážáá¬ážáá±á¬ ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á
áá®ááŸá¬ .
- áááºáááºááẠsupertubes CLI áá±ážáá¬ážáá±á¬ ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á
EKS á¡á á¯á¡ááœá²á·
áá®ážááá·áºáá¯ááºáá¬áž áá¯á¶ááŸááºáá»á¬ážááŒáá·áº EKS á¡á á¯á¡áá±ážááᯠááŒááºáááºáá«á c5.4xlarge Kafka ááœá²á á¬ážáá»á¬ážááŸáá·áºá¡áá° pods áá»á¬ážá¡ááœáẠááá°áá®áá±á¬áááŸáááá¯ááºááŸá¯áá¯ááºáá»á¬ážá¡ááŒáẠload generator ááŸáá·áº monitoring infrastructure á¡ááœáẠáá®ážááá·áº node áá»á¬ážá
banzai cluster create -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/cluster_eks_202001.json
EKS á¡á
á¯á¡áá±áž áááºáá¬ááŒá®ážáááºááŸáá·áº áááºážááá±á«ááºážá
ááºááŸá¯ááᯠááœáá·áºáá«á
Kafka á áá Ạá¡á áááºá¡ááá¯ááºážáá»á¬áž
supertubes CLI ááᯠá¡áá¯á¶ážááŒá¯á EKS ááœáẠKafka á áá Ạá¡á áááºá¡ááá¯ááºážáá»á¬áž (Zookeeperá kafka-operator) ááᯠááá·áºááœááºážáá«á
supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>
Kafka á¡á á¯á¡ááœá²á·
áá°áááºážá¡á¬ážááŒáá·áº EKS ááẠEBS á¡áá»áá¯ážá¡á á¬ážá ááá¬ááá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá gp2ááá¯á·ááŒá±á¬áá·áº áááºááẠvolumes ááá¯á¡ááŒá±áá¶á áá®ážááŒá¬ážááá¯ááŸá±á¬ááºááŸá¯á¡áááºážááᯠáááºáá®ážááẠááá¯á¡ááºáá«áááºá io1 Kafka á¡á á¯á¡áá±ážá¡ááœááº
kubectl create -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
type: io1
iopsPerGB: "50"
fsType: ext4
volumeBindingMode: WaitForFirstConsumer
EOF
ááœá²á
á¬ážáá»á¬ážá¡ááœáẠparameter ááá¯áááºááŸááºáá«á min.insync.replicas=3
ááá°áá®áá±á¬áááŸáááá¯ááºááŸá¯áá¯ááºáá¯á¶ážáá¯ááŸá node áá»á¬ážáá±á«áºááœáẠááœá²á
á¬áž pods áá»á¬ážááᯠá¡áá¯á¶ážáá»áá«-
supertubes cluster create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/kafka_202001_3brokers.yaml --wait --timeout 600
á¡ááŒá±á¬ááºážá¡áá¬áá»á¬áž
áá»áœááºá¯ááºááá¯á·ááẠload generator instances áá¯á¶ážáá¯ááᯠá¡ááŒáá¯ááºáá¯ááºáá±á¬ááºáá²á·áááºá áááºážááá¯á·áá áºáŠážá á®ááẠáááºážááá¯á·áááá¯ááºááá¯ááºá¡ááŒá±á¬ááºážá¡áá¬ááᯠáá±ážáá¬ážááŒáááºá ááá¯ááá¯áááºááŸá¬á á á¯á á¯áá±á«ááºáž áá±á«ááºážá ááºáá¯á¶ážáᯠááá¯á¡ááºáááº-
supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
name: perftest1
spec:
name: perftest1
partitions: 12
replicationFactor: 3
retention.ms: '28800000'
cleanup.policy: delete
EOF
supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
name: perftest2
spec:
name: perftest2
partitions: 12
replicationFactor: 3
retention.ms: '28800000'
cleanup.policy: delete
EOF
supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
name: perftest3
spec:
name: perftest3
partitions: 12
replicationFactor: 3
retention.ms: '28800000'
cleanup.policy: delete
EOF
áá±á«ááºážá ááºáá áºáá¯á á®á¡ááœááºá áá¯á¶áá°ááœá¬ážááŸá¯á¡áá»ááºááŸá¬ 3âá¡ááœááºáááŸáááá¯ááºáá±á¬ áá¯ááºáá¯ááºááŸá¯á áá áºáá»á¬ážá¡ááœáẠá¡áááá·áºáá¯á¶ážá¡ááŒá¶ááŒá¯áááºááá¯ážááŒá áºáááºá
áá»áá¯ážáááºáá áºáá°ážááºááᯠáááºáá«á
áá»áœááºá¯ááºááá¯á·ááẠload generator áááá¹áá°áá¯á¶ážá á±á¬ááºááᯠá áááºáá¯ááºáá±áá²á·ááẠ(áá áºáá¯á á®ááẠáá®ážááŒá¬ážá¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯ááŒáá·áº áá±ážáá¬ážáááº)á load generator pods á¡ááœááºá áááºážááá¯á·á¡ááœáẠááœá²áá±áá±ážáá¬ážáá±á¬ node áá»á¬ážáá±á«áºááœááºáᬠá¡áá»áááºááá¬ážááœá²áá¬ážááá¯ááºááẠnode affinity ááᯠáááºáááºááŸááºáááºááá¯á¡ááºáááº-
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: loadtest
name: perf-load1
namespace: kafka
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: loadtest
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: loadtest
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: nodepool.banzaicloud.io/name
operator: In
values:
- loadgen
containers:
- args:
- -brokers=kafka-0:29092,kafka-1:29092,kafka-2:29092,kafka-3:29092
- -topic=perftest1
- -required-acks=all
- -message-size=512
- -workers=20
image: banzaicloud/perfload:0.1.0-blog
imagePullPolicy: Always
name: sangrenel
resources:
limits:
cpu: 2
memory: 1Gi
requests:
cpu: 2
memory: 1Gi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
áááááŒá¯áááºá¡áá»ááºá¡áá»áá¯á·-
- load generator ááẠá¡ááŸáẠ512 bytes ááŸááá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠáá¯ááºáá±ážááŒá®áž 500 áááºáá±á·ááºá» á¡ááœá²ááá¯ááºááŒáá·áº Kafka ááá¯á· áá¯ááºáá±áááºá
- á¡ááŒááºážá¡áá¯á¶áá
áºáá¯á¡áá¯á¶ážááŒá¯ááŒááºážá
-required-acks=all
Kafka ááœá²á á¬ážáá»á¬ážá០áááºáá±á·ááºá»á áááºáá°áá»áá±á¬ áá¯á¶á á¶áá°áá»á¬ážááᯠáááºáá¶áááŸáááŒá®áž á¡áááºááŒá¯ááá·áºá¡áá« áá¯ááºáá±ááŸá¯ á¡á±á¬ááºááŒááºáááºáᯠáá°ááá«áááºá ááá¯ááá¯áááºááŸá¬ á á¶ááœáŸááºážááœáẠáá»áœááºá¯ááºááá¯á·ááẠáá±á«ááºážáá±á¬ááºáá»á¬áž áááºáá±á·áá»áºáá»á¬áž áááºáá¶áááŸáááá·áº á¡ááŒááºááŸá¯ááºážááá¯áá¬áá áááºážááá¯á·á áá±á¬ááºááá¯ááºáá»á¬ážáá« áááºáá±á·áá»áºáá»á¬ážááᯠáá¯á¶áá°áá°ážááŒááºážááá¯áááºáž ááá¯ááºážáá¬áá«áááºá á€á ááºážáááºááŸá¯ááááºááœááºáá»ááºááŸá¬ áá¯á¶ážá áœá²áá°áá»á¬ážá á á¬áááºááŸá¯ááºážááᯠá¡áá²ááŒááºáááºááá¯ááºáá«á (á á¬ážáá¯á¶ážáá°áá»á¬áž) OS á á¬áá»ááºááŸá¬ áááºááŸáºááœáẠáá»ááºááŸááá±áá±á¬ áááŒá¬áá±ážáá®á áááºáá¶áááŸááá¬ážáá±á¬ á á¬ááá¯áá»á¬ážááŸáá·áº áá áºááºáá±á«áºááœáẠááááºážáááºážáá¬ážááá·áº á á¬áá»á¬ážá áááºááŸá¯ááŸá¯ááºážááŸáá·áº áááºážá ááŸáá¯ááºážááŸááºáá»ááºá - load generator ááẠá¡áá¯ááºááá¬áž 20 ááá¯á¡ááŒáá¯ááºá¡áá¯ááºáá¯ááºááẠ(
-workers=20
) á¡áá¯ááºááá¬ážáá áºáŠážá á®ááœáẠKafka á¡á á¯á¡áá±ážááá¯á· á¡áá¯ááºááá¬ážááá»áááºáááºááŸá¯ááᯠáá»áŸáá±áá±ážááá·áº áá¯ááºáá¯ááºáá° á áŠážá á®áá«ááŸááááºá ááááºá¡áá±ááŒáá·áºá áá»ááºááá±áá¬áá áºáá¯á á®ááœáẠáá¯ááºáá¯ááºáá° 5 ááŸáááŒá®áž áááºážááá¯á·á¡á¬ážáá¯á¶áž Kafka á¡á á¯á¡ááœá²á·áá¶ááá¯á· áááºáá±á·áá»áºáá»á¬áž áá±ážááá¯á·ááŒáááºá
á¡á á¯á¡ááœá²á·á áá»ááºážáá¬áá±ážááᯠá á±á¬áá·áºááŒáá·áºááŒááºážá
Kafka á¡á á¯á¡áá±ážááᯠá ááºážáááºá ááºá¡ááœááºážá pod ááŒááºáááºá áááºááŒááºáž áááŸáá á±áááºá ááŒááºáááœáẠáááºáá°ááŒá¯ááŒááºáž áááŸáá á±áááºááŸáá·áº á¡ááŒáá·áºáá¯á¶áž á á®ážáááºážááŸá¯ á¡áááºá¡áá» á¡áááºážáá¯á¶áž áááŸáá á±áááºá¡ááœáẠáááºážá áá»ááºážáá¬áá±ážááá¯áááºáž á á±á¬áá·áºááŒáá·áºáá²á·áááº-
- load generator ááẠáá¯ááºáá±ááá·áº áááºáá±á·áá»áºá¡áá±á¡ááœááºááŸáá·áº á¡ááŸá¬ážá¡ááœááºážááŸá¯ááºážááá¯á·á¡ááŒá±á¬ááºáž á
á¶ááááºážááááºážáá»á¬ážááᯠáá±ážáá±ážáááºá á¡ááŸá¬ážá¡ááœááºážááŸá¯ááºážááẠáá°áá®áá±ááá·áºáááºá
0,00%
. -
ááá¯ááºááááºážáá»á¯ááºáá±áž kafka-operator á០ááŒáá·áºáá»ááºáá¬ážáá±á¬á á¡á á¯á¡áá±ážáá¡ááŒá±á¡áá±ááá¯áááºáž á á±á¬áá·áºááŒáá·áºááá¯ááºááá·áº áááºááŸáºáá¯ááºáá áºáᯠáá±ážáá«áááºá á€á¡ááá·áºááá¯ááŒáá·áºáááº-supertubes cluster cruisecontrol show -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file>
- ISR á¡ááá·áº ("á áá·áºááºáá¯ááºááŒááºáž" áá¯á¶á á¶áá° á¡áá±á¡ááœááº) shrink ááŸáá·áº expansion ááẠ0 ááŸáá·áº áá®áááºá
ááá¯ááºážáá¬ááŸá¯ááááºáá»á¬áž
ááœá²á á¬áž 3 áá¯á áááºáá±á·ááºá»á¡ááœááºá¡á á¬áž - 512 bytes
ááœá²á á¬áž XNUMX áá¯ááœáẠá¡ááá¯ááºážááœá²áá»á¬ážááᯠá¡áá®á¡áá»áŸ ááœá²áá±áá±ážááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá áœááºážáá±á¬ááºáááºááᯠáááŸáááá¯ááºáá«áááºá ~500 Mb/s (áá áºá áá¹ááá·áºáá»áŸáẠáááºáá±á·áá»áº ááá,ááá ááá·áº):
JVM virtual machine á áááºááá¯áá®áá¯á¶ážá
áœá²ááŸá¯ááẠ2 GB ááẠááá»á±á¬áºááœááºáá²á·áá«á
Disk throughput ááẠááœá²á
á¬ážáá»á¬áž áá¯ááºáá±á¬ááºáá±ááá·áº ááŒá
áºáááºáá¯á¶ážáá¯áá¯á¶ážááœáẠá¡ááŒáá·áºáá¯á¶áž I/O node ááŒááºáááºážááŸá¯ááá¯á· áá±á¬ááºááŸáááœá¬ážáááº-
node áá»á¬ážá¡ááá¯áẠáááºááá¯áá®á¡áá¯á¶ážááŒá¯ááŸá¯ááá¯ááºáᬠáá±áá¬áá»á¬ážááŸá á
áá
Ạbuffering ááŸáá·áº caching ááẠ~10-15 GB áá°áá²á·áááº-
ááœá²á á¬áž 3 áá¯á áááºáá±á·ááºá»á¡ááœááºá¡á á¬áž - 100 bytes
áááºáá±á·áá»áºá¡ááœááºá¡á á¬áž áá»á±á¬á·áááºážáá¬áááºááŸáá·áºá¡áá»áŸ áá±ážááá¯á·ááŸá¯ááŸá¯ááºážááẠááá·áºááŸááºážááŒá±á¡á¬ážááŒáá·áº 15-20% áá»áááºážááœá¬ážáááº- áááºáá±á·áá»áºáá áºáá¯á á®ááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá»áááºááẠáááºážááᯠá¡áá»áá¯ážáááºáá±á¬ááºá á±áááºá ááá¯á·á¡ááŒááºá áááá¯áááºáá¬áááºáááºááŸá áºááá®ážáá«ážááŸááááºá
ááœá²á
á¬áž node áá»á¬ážááœáẠá¡áá¯á¶ážáááŒá¯áá±á¬ cores áá»á¬ážááŸááá±áá±ážáá±á¬ááŒá±á¬áá·áº Kafka configuration ááá¯ááŒá±á¬ááºážáá²ááŒááºážááŒáá·áº á
áœááºážáá±á¬ááºáááºááá¯ááŒáŸáá·áºáááºááá¯ááºáá«áááºá á€áááºááŸá¬ ááœááºáá°áá±á¬á¡áá¯ááºááá¯ááºáá«á ááá¯á·ááŒá±á¬áá·áº ááá¬áááᯠááá¯ážááŒáá·áºáááºá¡ááœáẠááá¯ááŒá®ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážááẠááá¯áá±á¬ááºážáá«áááºá
ááœá²á á¬áž 4 áá¯á áááºáá±á·ááºá»á¡ááœááºá¡á á¬áž - 512 bytes
ááœá²á á¬ážá¡áá áºáá»á¬ážááᯠáá±á«ááºážááá·áºáᬠááá¯ááºážááŒá¬ážáá»áááºááœááºáá»áŸá¬ááᯠááááºážááááºážáá¬ážááŒááºážááŒáá·áº Kafka á¡á á¯á¡ááœá²á·á á áœááºážáá±á¬ááºáááºááᯠá¡ááœááºááá° ááá¯ážááŒáŸáá·áºááá¯ááºááẠ(áááºážááẠááœá²á á¬ážáá»á¬ážááŒá¬ážááœáẠáááºá¡á¬áž á¡áá®á¡áá»áŸ ááœá²áá±áá±ážááŒá±á¬ááºáž áá±áá»á¬á á±áááº)á áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá ááœá²á á¬ážáá áºáŠážááá¯ááá·áºááœááºážááŒá®ážáá±á¬ááºá á¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯ááºáááºáá±á¬ááºááŸá¯ááẠááá¯ážáá¬áááºá ~580 Mb/s (áá áºá áá¹ááá·áºáá»áŸáẠáááºáá±á·ááºá» ~á.á áááºáž). ááá¯ážáááºááŸá¯ááŸá¯ááºážááẠáá»áŸá±á¬áºááá·áºáá¬ážáááºááẠáááºážááœá¬ážáááº- áááºážááᯠá¡áááá¡á¬ážááŒáá·áº á¡ááá¯ááºážááœá²áá»á¬áž ááá®áá»áŸááŒááºážááŒá±á¬áá·áº ááŸááºážááŒááẠ(ááœá²á á¬ážá¡á¬ážáá¯á¶ážááẠáááºážááá¯á·á á áœááºážáá±á¬ááºááẠá¡ááœááºá¡ááááºááœáẠá¡áá¯ááºáá¯ááºááŒáááºááá¯ááºáá«)á
JVM á
ááºá ááŸááºáá¬ááºáá¯á¶ážá
áœá²ááŸá¯ááẠ2 GB á¡á±á¬ááºááœáẠááŸááá±áááº-
áááá¯ááºáá»á¬ážáá«ááŸááá±á¬ ááœá²á
á¬ážáá»á¬ážáá¡áá¯ááºááẠá¡ááá¯ááºážááá¯ááºážááá®áá»áŸááŒááºážááŒá±á¬áá·áº ááááá¯ááºáááº-
ááœá±á·ááŸááá»ááºáá»á¬áž
á¡áááºááœááºáááºááŒáá¬ážáá±á¬ áááºáá«ááá²áá²áá»ááºážáááºáááºážááẠá á¬ážáá¯á¶ážáá°áá¬ááŸáá·áºáá»á®áá«áááºááá·áºá ááŒááºáááºááœá²áá¯ááºááŒááºážá á¡ááºááááºáá¯ááºááŒááºážá áá±á«á·ááºááŒááºáááºá áááºááŒááºážá áááºááŒáá·áº ááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬á¡ááŒá±á¡áá±áá»á¬ážááᯠááœáŸááºážááŒá¯á¶ááá¯ááºá á±ááẠáá»á²á·ááœááºááá¯ááºáá«áááºá á€á¡áá¬á¡á¬ážáá¯á¶ážááẠá¡ááŒá±á¡áá±á¡áá»áá¯ážáá»áá¯ážááœáẠKafka á¡á á¯á¡ááœá²á·á á áœááºážáá±á¬ááºáááºáá»á¬ážá ááá·áºáááºáá»ááºáá»á¬ážááᯠá¡áá²ááŒááºáááºá áááºážá áá¯ááºáááºážáá±á¬ááºááœááºááŸá¯ááœáẠááááºááá¯á·ááŸá¯áá»á¬ážááᯠááœá²ááŒá¬ážááááŸáááá¯ááºááŒá®áž áááºážááá¯á·ááᯠááá¯ááºáá»ááºááẠáááºážáááºážáá»á¬ážááᯠááŸá¬ááœá±ááá¯ááºá á±áá«áááºá
á¡á á¯á¡ááœá²á·áá áºáá¯á¡á¬áž áá»ááºááŒááºááœááºáá°á áœá¬ á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áááºážááᯠá á®á ááºáááºááŸááºáááºá ááœá²á á¬ážáá»á¬ážááŸáá·áº á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠáá±á«ááºážááá·áº/áááºááŸá¬ážáááºá ááááá±ážáá»ááºáá»á¬ážááᯠáá¯á¶á·ááŒááºáááºááŸáá·áº áá±áá¯áá»á¡á¬ážááŒáá·áº Kafka ááẠKubernetes ááœáẠáá±á¬ááºážááœááºá áœá¬á¡áá¯ááºáá¯ááºááŒá±á¬ááºáž áá±áá»á¬á á±ááẠSupertubes ááᯠáá»áœááºá¯ááºááá¯á· áá®ááá¯ááºážáá¯ááºáá¬ážáá«áááºá áá»áœááºá¯ááºááá¯á·ááááºááŸááºážáá»ááºááŸá¬ ááá·áºá¡á¬áž á¡ááááá¯ááºáá±á¬ááºáááá·áºáá¬ááẠ("áááºáá®áž" ááŸáá·áº "Kafka" áááºáá±á·áá»áºáá»á¬ážááᯠá á¬ážáá¯á¶ážáááº) á¡á¬áá¯á¶á áá¯ááºáá°áá®áá±ážáááºááŸáá·áº á¡áá¯ááºááŒáá¯ážá á¬ážááŸá¯á¡á¬ážáá¯á¶ážááᯠSupertubes ááŸáá·áº Kafka á¡á±á¬áºááá±áá¬áᶠáá¬ážááá¯ááºáá«á
Banzai Cloud áááºážááá¬áá»á¬ážááŸáá·áº Open Source ááá±á¬áá»ááºáá»á¬ážááᯠá
áááºáááºá
á¬ážáá«á áá¯áá¹ááá®ááá¯á· á
á¬áááºážááœááºážáá«á
PS áá¬áá¬ááŒááºááŸ
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- «
K8s ááŸá Redis á¡á±á¬áºááá±áá¬ááŸáá·áº áá¬ááºáááºážáá áºáá¯ááºááŸáá·áº á€áá±áá¬áá±á·á áºá០áá±áá¬áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºážá¡ááœáẠá¡áá¯á¶ážáááºááŸá¯á¡áá±ážá á¬áž áá¯á¶ážáááºáá»áẠ"; - «
RabbitMQ ááᯠKubernetes ááá¯á· áá»á±á¬ááœá±á·á áœá¬ ááœáŸá±á·ááŒá±á¬ááºážááŒááºážá "; - «
CoreOS á០zetcd- ZooKeeper ááᯠ...etcd ááá¯ááŸá±á¬ááºááŸá¯ááŒáá·áº á¡á á¬ážááá¯ážááŒááºážá "á
source: www.habr.com