पाठ 15 / 25
Naming, Ownership और Topic स्वच्छता
Topics के नाम एक-से रखें और उनका जीवन-चक्र किसी साझा API की तरह सँभालें।
Topics सार्वजनिक APIs हैं
जब दूसरी टीमें किसी topic को consume करने लगती हैं, तो उसका नाम, key और schema अनुबंध हैं। एक-सी naming convention उपयोग करें (जैसे <domain>.<entity>.<event>.v1, यानी sales.order.placed.v1), मालिक टीम तय करें और schema, key का अर्थ, retention और अपेक्षित मात्रा दर्ज करें। Production में स्वचालित topic निर्माण बंद करें ताकि topics चुने हुए partitions और replication के साथ जानबूझकर बनें, और topic बदलावों की समीक्षा करें या उन्हें script करें (infrastructure as code)। अनुपयोगी topics हटाएँ, क्योंकि हर एक storage और metadata की क़ीमत लेता है। अलग event प्रकारों के लिए अलग topics रखें, जब तक उन्हें साथ में सख़्त क्रम में रहना ज़रूरी न हो।
Topic विनिर्देश
ऐसे विनिर्देश उस कोड के पास रखें जो topic बनाता है।
topic: sales.order.placed.v1
owner: team-orders@example.com
partitions: 12
replication_factor: 3
config:
min.insync.replicas: 2
retention.ms: 604800000 # 7 days
key: order_id # per-order ordering
value_schema: OrderPlaced (Avro, backward-compatible)
consumers: [billing, fulfilment, analytics]त्वरित जाँच: Production में auto topic creation क्यों बंद करें?
- ताकि topics उचित partitions और replication के साथ जानबूझकर बनें
- क्योंकि यह धीमा है
- Auto creation अवैध है
- यह सिर्फ़ ज़्यादा memory लेता है
Answer
ताकि topics उचित partitions और replication के साथ जानबूझकर बनें — वरना topic नाम में typo चुपचाप डिफ़ॉल्ट settings वाला नया topic बना देता।