24

Kafka के examples के सभी 0 | producersProducerRecord की कुंजी/मान जोड़ी दिखाएं न केवल एक ही प्रकार (सभी उदाहरण <String,String> दिखाएं), लेकिन उसी मान। उदाहरण के लिए:काफ्का की कुंजी/मूल्य जोड़ी-आधारित संदेश का उद्देश्य क्या है?

producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i))); 

लेकिन काफ्का डॉक्स में, मैं जहां कुंजी/मान अवधारणा (और उसके अंतर्निहित उद्देश्य/उपयोगिता) से समझाया गया है खोजने के लिए प्रतीत नहीं कर सकते हैं। पारंपरिक संदेश (ActiveMQ, RabbitMQ, आदि) में मैंने हमेशा किसी विशेष विषय/कतार/विनिमय पर एक संदेश निकाल दिया है। लेकिन काफ्का पहला ब्रोकर है जो कि केवल एक विनियामक 'ओले स्ट्रिंग संदेश की बजाय कुंजी/मूल्य जोड़े की आवश्यकता होती है।

तो मैं पूछता हूं: उत्पादकों को केवी जोड़े भेजने की आवश्यकता/उद्देश्य क्या है?

उत्तर

26

काफ्का एक वितरित लॉग कि विभाजन के होते हैं की अमूर्त उपयोग करता है। विभाजन में लॉग को विभाजित करने से सिस्टम को स्केल-आउट करने की अनुमति मिलती है।

कुंजी का उपयोग उस लॉग के भीतर विभाजन को निर्धारित करने के लिए किया जाता है जिस पर एक संदेश प्राप्त होता है। जबकि मूल्य संदेश का वास्तविक पेलोड है। उदाहरण इस संबंध में वास्तव में बहुत "अच्छे" नहीं हैं; आम तौर पर आपके पास एक जटिल प्रकार का मूल्य होता है (जैसे टुपल-टाइप या जेएसओएन या इसी तरह) और आप एक फ़ील्ड को कुंजी के रूप में निकाल देंगे।

देखें: http://kafka.apache.org/intro#intro_topics और http://kafka.apache.org/intro#intro_producers

सामान्य में कुंजी और/या मूल्य null भी हो सकता है। यदि कुंजी null है तो एक यादृच्छिक विभाजन चयनित होगा। यदि मान null है में किसी विषय (http://kafka.apache.org/documentation#compaction) के लिए लॉग-प्रतिधारण नीति के बजाय लॉग-कॉम्पैक्शन सक्षम करने में विशेष "हटाएं" अर्थशास्त्र हो सकता है।

+1

और विशेष रूप से, कुंजी 'केस्ट्रीम' और 'केटेबल' के साथ काफ्का के स्ट्रीमिंग एपीआई में एक प्रासंगिक हिस्सा भी बजाती हैं - देखें [यहां] (http://docs.confluent.io/current/streams/developer-guide .html # धाराओं निर्माता-गाइड-डीएसएल)। – reim

+1

कुंजी *** *** विभाजन का निर्धारण करने के लिए *** का उपयोग किया जा सकता है, लेकिन यह निर्माता की सिर्फ एक डिफ़ॉल्ट रणनीति है। आखिरकार, यह *** निर्माता *** है जो चुनने के लिए कौन सा विभाजन चुनता है। – gvo

संबंधित मुद्दे