±¾ÎÄÊÇϵÁÐÎÄÕµĵÚ4ƪ£¬
µÚһƪ
"KafkaÉè¼Æ½âÎö£¨Ò»£©- Kafka±³¾°¼°¼Ü¹¹½éÉÜ"
µÚ¶þƪ
"KafkaÉè¼Æ½âÎö£¨¶þ£©- Kafka High Availability £¨ÉÏ£©
µÚÈýƪ
KafkaÉè¼Æ½âÎö£¨Èý£©- Kafka High Availability £¨ÖУ©
µÚËÄÆª
KafkaÉè¼Æ½âÎö£¨ËÄ£©- Kafka High Availability £¨Ï£©
µÚÎåÆª
KafkaÉè¼Æ½âÎö£¨Î壩- Kafka ConsumerÉè¼Æ½âÎö
±¾ÎÄÏêϸ½éÉÜÁËKafkaÐÔÄܲâÊÔ·½·¨¼°Benchmark±¨¸æ¡£
ÐÔÄܲâÊÔ¼°¼¯Èº¼à¿Ø¹¤¾ß
KafkaÌṩÁ˷dz£¶àÓÐÓõŤ¾ß£¬ÈçKafkaÉè¼Æ½âÎö£¨ËÄ£©- Kafka
High Availability £¨Ï£©ÖÐÌáµ½µÄÔËάÀ๤¾ß¡ª¡ªPartition Reassign
Tool£¬Preferred Replica Leader Election Tool£¬Replica
Verification Tool£¬State Change Log Merge Tool¡£±¾Õ½«½éÉÜKafkaÌṩµÄÐÔÄܲâÊÔ¹¤¾ß£¬Metrics±¨¸æ¹¤¾ß¼°Yahoo¿ªÔ´µÄKafka
Manager¡£
KafkaÐÔÄܲâÊԽű¾
$KAFKA_HOME/bin/kafka-producer-perf-test.sh¸Ã½Å±¾±»Éè¼ÆÓÃÓÚ²âÊÔKafka
ProducerµÄÐÔÄÜ£¬Ö÷ÒªÊä³ö4ÏîÖ¸±ê£¬×ܹ²·¢ËÍÏûÏ¢Á¿£¨ÒÔMBΪµ¥Î»£©£¬Ã¿Ãë·¢ËÍÏûÏ¢Á¿£¨MB/second£©£¬·¢ËÍÏûÏ¢×ÜÊý£¬Ã¿Ãë·¢ËÍÏûÏ¢Êý£¨records/second£©¡£³ýÁ˽«²âÊÔ½á¹ûÊä³öµ½±ê×¼Êä³öÍ⣬¸Ã½Å±¾»¹ÌṩCSV
Reporter£¬¼´½«½á¹ûÒÔCSVÎļþµÄÐÎʽ´æ´¢£¬±ãÓÚÔÚÆäËü·ÖÎö¹¤¾ßÖÐʹÓøòâÊÔ½á¹û
$KAFKA_HOME/bin/kafka-consumer-perf-test.sh¸Ã½Å±¾ÓÃÓÚ²âÊÔKafka
ConsumerµÄÐÔÄÜ£¬²âÊÔÖ¸±êÓëProducerÐÔÄܲâÊԽű¾Ò»Ñù
Kafka Metrics
KafkaʹÓÃYammer MetricsÀ´±¨¸æ·þÎñ¶ËºÍ¿Í»§¶ËµÄMetricÐÅÏ¢¡£Yammer
Metrics 3.1.0Ìṩ6ÖÖÐÎʽµÄMetricsÊÕ¼¯¡ª¡ªMeters£¬Gauges£¬Counters£¬Histograms£¬Timers£¬Health
Checks¡£Óë´Ëͬʱ£¬Yammer Metrics½«MetricµÄÊÕ¼¯Ó뱨¸æ£¨»òÕß˵·¢²¼£©·ÖÀ룬¿ÉÒÔ¸ù¾ÝÐèÒª×ÔÓÉ×éºÏ¡£Ä¿Ç°ËüÖ§³ÖµÄReporterÓÐConsole
Reporter£¬JMX Reporter£¬HTTP Reporter£¬CSV Reporter£¬SLF4J
Reporter£¬Ganglia Reporter£¬Graphite Reporter¡£Òò´Ë£¬KafkaÒ²Ö§³Öͨ¹ýÒÔÉϼ¸ÖÖReporterÊä³öÆäMetricsÐÅÏ¢¡£
ʹÓÃJConsole²é¿´µ¥·þÎñÆ÷Metrics
ʹÓÃJConsoleͨ¹ýJMX£¬ÊÇÔÚ²»°²×°ÆäËü¹¤¾ß£¨¼ÈÈ»ÒѾ°²×°ÁËKafka£¬¾Í¿Ï¶¨°²×°ÁËJava£¬¶øJConsoleÊÇJava×Ô´øµÄ¹¤¾ß£©µÄÇé¿öϲ鿴Kafka·þÎñÆ÷MetricsµÄ×î¼òµ¥×î·½±ãµÄ·½·¨Ö®Ò»¡£ Ê×ÏȱØÐëͨ¹ýΪ»·¾³±äÁ¿JMX_PORTÉèÖÃÓÐЧֵÀ´ÆôÓÃKafkaµÄJMX Reporter¡£Èçexport
JMX_PORT=19797¡£È»ºó¼´¿ÉʹÓÃJConsoleͨ¹ýÉÏÃæÉèÖõĶ˿ÚÀ´·ÃÎÊijһ̨Kafka·þÎñÆ÷À´²é¿´ÆäMetricsÐÅÏ¢£¬ÈçÏÂͼËùʾ¡£

ʹÓÃJConsoleµÄÒ»¸öºÃ´¦ÊDz»Óð²×°¶îÍâµÄ¹¤¾ß£¬È±µãºÜÃ÷ÏÔ£¬Êý¾Ýչʾ²»¹»Ö±¹Û£¬Êý¾Ý×éÖ¯ÐÎʽ²»ÓѺ㬸üÖØÒªµÄÊDz»ÄÜͬʱ¼à¿ØÕû¸ö¼¯ÈºµÄMetrics¡£ÔÚÉÏͼÖУ¬ÔÚkafka.cluster->Partition->UnderReplicated->topic4Ï£¬Ö»ÓÐ2ºÍ5Á½¸ö½Úµã£¬Õâ²¢·ÇÒòΪtopic4Ö»ÓÐÕâÁ½¸öPartitionµÄÊý¾ÝÊÇ´¦ÓÚ¸´ÖÆ×´Ì¬µÄ¡£ÊÂʵÉÏ£¬topic4ÔÚ¸ÃBrokerÉÏÖ»ÓÐÕâ2¸öPartition£¬ÆäËüPartitionÔÚÆäËüBrokerÉÏ£¬ËùÒÔͨ¹ý¸Ã·þÎñÆ÷µÄJMX
ReporterÖ»¿´µ½ÁËÕâÁ½¸öPartition¡£
ͨ¹ýKafka Manager²é¿´Õû¸ö¼¯ÈºµÄMetrics
Kafka ManagerÊÇYahoo¿ªÔ´µÄKafka¹ÜÀí¹¤¾ß¡£ËüÖ§³ÖÈçϹ¦ÄÜ ¹ÜÀí¶à¸ö¼¯Èº ·½±ã²é¿´¼¯Èº×´Ì¬ Ö´ÐÐpreferred replica election ÅúÁ¿Îª¶à¸öTopicÉú³É²¢Ö´ÐÐPartition·ÖÅä·½°¸ ´´½¨Topic ɾ³ýTopic£¨Ö»Ö§³Ö0.8.2¼°ÒÔÉϰ汾£¬Í¬Ê±ÒªÇóÔÚBrokerÖн«delete.topic.enableÉèÖÃΪtrue£© ΪÒÑÓÐTopicÌí¼ÓPartition ¸üÐÂTopicÅäÖà ÔÚBroker JMX Reporter¿ªÆôµÄǰÌáÏ£¬ÂÖѯBroker¼¶±ðºÍTopic¼¶±ðµÄMetrics ¼à¿ØConsumer Group¼°ÆäÏû·Ñ״̬ Ö§³ÖÌí¼ÓºÍ²é¿´LogKafka
°²×°ºÃKafka Managerºó£¬Ìí¼ÓCluster·Ç³£·½±ã£¬Ö»ÐèÖ¸Ã÷¸ÃClusterËùʹÓõÄZookeeperÁÐ±í²¢Ö¸Ã÷Kafka°æ±¾¼´¿É£¬ÈçÏÂͼËùʾ¡£

ÕâÀïҪעÒ⣬´Ë´¦Ìí¼ÓClusterÊÇÖ¸Ìí¼ÓÒ»¸öÒÑÓеÄKafka¼¯Èº½øÈë¼à¿ØÁÐ±í£¬¶ø·Çͨ¹ýKafka
Manager²¿ÊðÒ»¸öеÄKafka Cluster£¬ÕâÒ»µãÓëCloudera Manager²»Í¬¡£
KafkaÐÔÄܲâÊÔ»·¾³
KafkaµÄÒ»¸öºËÐÄÌØÐÔÊǸßÍÌÍÂÂÊ£¬Òò´Ë±¾ÎĵIJâÊÔÖØµãÊÇKafkaµÄÍÌÍÂÂÊ¡£ ±¾ÎĵIJâÊÔ¹²Ê¹ÓÃ6̨°²×°Red Hat 6.6µÄÐéÄâ»ú£¬3̨×÷ΪBroker£¬ÁíÍâ3̨×÷ΪProducer»òÕßConsumer¡£Ã¿Ì¨ÐéÄâ»úÅäÖÃÈçÏ CPU£º8 vCPU£¬ Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz£¬2
Sockets£¬4 Cores per socket£¬1 Thread per core Äڴ棺16 GB ´ÅÅÌ£º500 GB
¿ªÆôKafka JMX Reporter²¢Ê¹ÓÃ19797¶Ë¿Ú£¬ÀûÓÃKafka-ManagerµÄJMX
polling¹¦ÄÜ¼à¿ØÐÔÄܲâÊÔ¹ý³ÌÖеÄÍÌÍÂÂÊ¡£ ±¾ÎÄÖ÷Òª²âÊÔÈçÏÂËÄÖÖ³¡¾°£¬²âÊÔµÄÖ¸±êÖ÷ÒªÊÇÿÃë¶àÉÙÕ××Ö½ÚÊý¾Ý£¬Ã¿Ãë¶àÉÙÌõÏûÏ¢¡£
Producer Number VS. Throughput
ʵÑéÌõ¼þ£º3¸öBroker£¬1¸öTopic£¬6¸öPartition£¬ÎÞReplication£¬Ò첽ģʽ£¬ÏûÏ¢PayloadΪ100×Ö½Ú ²âÊÔÏîÄ¿£º·Ö±ð²âÊÔ1£¬2£¬3¸öProducerʱµÄÍÌÍÂÁ¿ ²âÊÔÄ¿±ê£ºÈçKafkaÉè¼Æ½âÎö£¨Ò»£©- Kafka±³¾°¼°¼Ü¹¹½éÉÜËù½éÉÜ£¬¶à¸öProducer¿ÉͬʱÏòͬһ¸öTopic·¢ËÍÊý¾Ý£¬ÔÚBroker¸ºÔر¥ºÍǰ£¬ÀíÂÛÉÏProducerÊýÁ¿Ô½¶à£¬¼¯ÈºÃ¿ÃëÊÕµ½µÄÏûÏ¢Á¿Ô½´ó£¬²¢ÇÒ³ÊÏßÐÔÔöÕÇ¡£±¾ÊµÑéÖ÷ÒªÑéÖ¤¸ÃÌØÐÔ¡£Í¬Ê±×÷ΪÐÔÄܲâÊÔ£¬±¾ÊµÑ黹½«¼à¿Ø²âÊÔ¹ý³ÌÖе¥¸öBrokerµÄCPUºÍÄÚ´æÊ¹ÓÃÇé¿ö ²âÊÔ½á¹û£ºÊ¹Óò»Í¬¸öÊýProducerʱµÄ×ÜÍÌÍÂÂÊÈçÏÂͼËùʾ

ÓÉÉÏͼ¿É¿´³ö£¬µ¥¸öProducerÿÃë¿É³É¹¦·¢ËÍÔ¼128ÍòÌõPayloadΪ100×Ö½ÚµÄÏûÏ¢£¬²¢ÇÒËæ×ÅProducer¸öÊýµÄÌáÉý£¬Ã¿Ãë×ܹ²·¢Ë͵ÄÏûÏ¢Á¿ÏßÐÔÌáÉý£¬·ûºÏ֮ǰµÄ·ÖÎö¡£
ÐÔÄܲâÊÔ¹ý³ÌÖУ¬BrokerµÄCPUºÍÄÚ´æÊ¹ÓÃÇé¿öÈçÏÂͼËùʾ¡£

ÓÉÉÏͼ¿ÉÖª£¬ÔÚÿÃë½ÓÊÕÔ¼117ÍòÌõÏûÏ¢£¨3¸öProducer×ܹ²Ã¿Ãë·¢ËÍ350ÍòÌõÏûÏ¢£¬Æ½¾ùÿ¸öBrokerÿÃë½ÓÊÕÔ¼117ÍòÌõ£©µÄÇé¿öÏ£¬Ò»¸öBrokerµÄCPUʹÓÃÁ¿Ô¼Îª248%£¬ÄÚ´æÊ¹ÓÃÁ¿Îª601
MB¡£
Message Size VS. Throughput
ʵÑéÌõ¼þ£º3¸öBroker£¬1¸öTopic£¬6¸öPartition£¬ÎÞReplication£¬Ò첽ģʽ£¬3¸öProducer ²âÊÔÏîÄ¿£º·Ö±ð²âÊÔÏûÏ¢³¤¶ÈΪ10£¬20£¬40£¬60£¬80£¬100£¬150£¬200£¬400£¬800£¬1000£¬2000£¬5000£¬10000×Ö½ÚʱµÄ¼¯Èº×ÜÍÌÍÂÁ¿ ²âÊÔ½á¹û£º²»Í¬ÏûÏ¢³¤¶ÈʱµÄ¼¯Èº×ÜÍÌÍÂÂÊÈçÏÂͼËùʾ

ÓÉÉÏͼ¿ÉÖª£¬ÏûÏ¢Ô½³¤£¬Ã¿ÃëËùÄÜ·¢Ë͵ÄÏûÏ¢ÊýÔ½ÉÙ£¬¶øÃ¿ÃëËùÄÜ·¢Ë͵ÄÏûÏ¢µÄÁ¿£¨MB£©Ô½´ó¡£ÁíÍ⣬ÿÌõÏûÏ¢³ýÁËPayloadÍ⣬»¹°üº¬ÆäËüMetadata£¬ËùÒÔÿÃëËù·¢Ë͵ÄÏûÏ¢Á¿±ÈÿÃë·¢Ë͵ÄÏûÏ¢Êý³ËÒÔ100×ֽڴ󣬶øPayloadÔ½´ó£¬ÕâЩMetadataÕ¼±ÈԽС£¬Í¬Ê±·¢ËÍʱµÄÅúÁ¿·¢Ë͵ÄÏûÏ¢Ìå»ýÔ½´ó£¬Ô½ÈÝÒ׵õ½¸ü¸ßµÄÿÃëÏûÏ¢Á¿£¨MB/s£©¡£ÆäËü²âÊÔÖÐʹÓõÄPayloadΪ100×Ö½Ú£¬Ö®ËùÒÔʹÓÃÕâÖÖ¶ÌÏûÏ¢£¨Ïà¶Ô¶Ì£©Ö»ÊÇΪÁ˲âÊÔÏà¶Ô±È½Ï²îµÄÇé¿öϵÄKafkaÍÌÍÂÂÊ¡£
Partition Number VS. Throughput
ʵÑéÌõ¼þ£º3¸öBroker£¬1¸öTopic£¬ÎÞReplication£¬Ò첽ģʽ£¬3¸öProducer£¬ÏûÏ¢PayloadΪ100×Ö½Ú ²âÊÔÏîÄ¿£º·Ö±ð²âÊÔ1µ½9¸öPartitionʱµÄÍÌÍÂÁ¿ ²âÊÔ½á¹û£º²»Í¬PartitionÊýÁ¿Ê±µÄ¼¯Èº×ÜÍÌÍÂÂÊÈçÏÂͼËùʾ

ÓÉÉÏͼ¿ÉÖª£¬µ±PartitionÊýÁ¿Ð¡ÓÚBroker¸öÊý£¨3¸ö£©Ê±£¬PartitionÊýÁ¿Ô½´ó£¬ÍÌÍÂÂÊÔ½¸ß£¬ÇÒ³ÊÏßÐÔÌáÉý¡£±¾ÎÄËùÓÐʵÑéÖУ¬Ö»Æô¶¯3¸öBroker£¬¶øÒ»¸öPartitionÖ»ÄÜ´æÔÚÓÚ1¸öBrokerÉÏ£¨²»¿¼ÂÇReplication¡£¼´Ê¹ÓÐReplication£¬Ò²Ö»ÓÐÆäLeader½ÓÊܶÁдÇëÇ󣩣¬¹Êµ±Ä³¸öTopicÖ»°üº¬1¸öPartitionʱ£¬Êµ¼ÊÖ»ÓÐ1¸öBrokerÔÚΪ¸ÃTopic¹¤×÷¡£Èç֮ǰÎÄÕÂËù½²£¬Kafka»á½«ËùÓÐPartition¾ùÔÈ·Ö²¼µ½ËùÓÐBrokerÉÏ£¬ËùÒÔµ±Ö»ÓÐ2¸öPartitionʱ£¬»áÓÐ2¸öBrokerΪ¸ÃTopic·þÎñ¡£3¸öPartitionʱͬÀí»áÓÐ3¸öBrokerΪ¸ÃTopic·þÎñ¡£»»ÑÔÖ®£¬PartitionÊýÁ¿Ð¡ÓÚµÈÓÚ3¸öʱ£¬Ô½¶àµÄPartition´ú±íÔ½¶àµÄBrokerΪ¸ÃTopic·þÎñ¡£Èçǰ¼¸ÆªÎÄÕÂËùÊö£¬²»Í¬BrokerÉϵÄÊý¾Ý²¢ÐвåÈ룬Õâ¾Í½âÊÍÁ˵±PartitionÊýÁ¿Ð¡ÓÚµÈÓÚ3¸öʱ£¬ÍÌÍÂÂÊËæPartitionÊýÁ¿µÄÔö¼ÓÏßÐÔÌáÉý¡£ µ±PartitionÊýÁ¿¶àÓÚBroker¸öÊýʱ£¬×ÜÍÌÍÂÁ¿²¢Î´ÓÐËùÌáÉý£¬ÉõÖÁ»¹ÓÐËùϽµ¡£¿ÉÄܵÄÔÒòÊÇ£¬µ±PartitionÊýÁ¿Îª4ºÍ5ʱ£¬²»Í¬BrokerÉϵÄPartitionÊýÁ¿²»Í¬£¬¶øProducer»á½«Êý¾Ý¾ùÔÈ·¢Ë͵½¸÷PartitionÉÏ£¬Õâ¾ÍÔì³É¸÷BrokerµÄ¸ºÔز»Í¬£¬²»ÄÜ×î´ó»¯¼¯ÈºÍÌÍÂÁ¿¡£¶øÉÏͼÖе±PartitionÊýÁ¿ÎªBrokerÊýÁ¿ÕûÊý±¶Ê±ÍÌÍÂÁ¿Ã÷ÏÔ±ÈÆäËüÇé¿ö¸ß£¬Ò²Ö¤ÊµÁËÕâÒ»µã¡£
Replica Number VS. Throughput
ʵÑéÌõ¼þ£º3¸öBroker£¬1¸öTopic£¬6¸öPartition£¬Ò첽ģʽ£¬3¸öProducer£¬ÏûÏ¢PayloadΪ100×Ö½Ú ²âÊÔÏîÄ¿£º·Ö±ð²âÊÔ1µ½3¸öReplicaʱµÄÍÌÍÂÂÊ ²âÊÔ½á¹û£ºÈçÏÂͼËùʾ

ÓÉÉÏͼ¿ÉÖª£¬Ëæ×ÅReplicaÊýÁ¿µÄÔö¼Ó£¬ÍÌÍÂÂÊËæÖ®Ï½µ¡£µ«ÍÌÍÂÂʵÄϽµ²¢·ÇÏßÐÔϽµ£¬ÒòΪ¶à¸öFollowerµÄÊý¾Ý¸´ÖÆÊDz¢ÐнøÐе쬶ø·Ç´®ÐнøÐС£
Kafka Consumer Number VS. Throughput
ʵÑéÌõ¼þ£º3¸öBroker£¬1¸öTopic£¬6¸öPartition£¬ÎÞReplication£¬Ò첽ģʽ£¬ÏûÏ¢PayloadΪ100×Ö½Ú ²âÊÔÏîÄ¿£º·Ö±ð²âÊÔ1µ½3¸öConsumerʱµÄ¼¯Èº×ÜÍÌÍÂÂÊ ²âÊÔ½á¹û£ºÔÚ¼¯ÈºÖÐÒÑÓдóÁ¿ÏûÏ¢µÄÇé¿öÏ£¬Ê¹ÓÃ1µ½3¸öConsumerʱµÄ¼¯Èº×ÜÍÌÍÂÁ¿ÈçÏÂͼËùʾ

ÓÉÉÏͼ¿ÉÖª£¬µ¥¸öConsumerÿÃë¿ÉÏû·Ñ306ÍòÌõÏûÏ¢£¬¸ÃÊýÁ¿Ô¶´óÓÚµ¥¸öProducerÿÃë¿ÉÏû·ÑµÄÏûÏ¢ÊýÁ¿£¬Õâ±£Ö¤ÁËÔÚºÏÀíµÄÅäÖÃÏ£¬ÏûÏ¢¿É±»¼°Ê±´¦Àí¡£²¢ÇÒËæ×ÅConsumerÊýÁ¿µÄÔö¼Ó£¬¼¯Èº×ÜÍÌÍÂÁ¿ÏßÐÔÔö¼Ó¡£
¸ù¾ÝKafkaÉè¼Æ½âÎö£¨Î壩- Kafka ConsumerÉè¼Æ½âÎöËùÊö£¬¶àConsumerÏû·ÑÏûϢʱÒÔPartitionΪ·ÖÅ䵥룬µ±Ö»ÓÐ1¸öConsumerʱ£¬¸ÃConsumerÐèҪͬʱ´Ó6¸öPartitionÀÈ¡ÏûÏ¢£¬¸ÃConsumerËùÔÚ»úÆ÷µÄI/O³ÉΪÕû¸öÏû·Ñ¹ý³ÌµÄÆ¿¾±£¬¶øµ±Consumer¸öÊýÔö¼ÓÖÁ2¸öÖÁ3¸öʱ£¬¶à¸öConsumerͬʱ´Ó¼¯ÈºÀÈ¡ÏûÏ¢£¬³ä·ÖÀûÓÃÁ˼¯ÈºµÄÍÌÍÂÂÊ¡£
Producer Consumer Pair
ʵÑéÌõ¼þ£º3¸öBroker£¬1¸öTopic£¬6¸öPartition£¬ÎÞReplication£¬Ò첽ģʽ£¬ÏûÏ¢PayloadΪ100×Ö½Ú ²âÊÔÏîÄ¿£º²âÊÔ1¸öProducerºÍ1¸öConsumerͬʱ¹¤×÷ʱConsumerËùÄÜÏû·Ñµ½µÄÏûÏ¢Á¿ ²âÊÔ½á¹û£º1,215,613 records/second¡¡
Rebalance¡£
|