Broker — producer yuborgan xabarlarni qabul qilib, saqlash yoki yo‘naltirish qoidalari asosida consumerlarga yetkazuvchi vositachi tizimdir. Message broker jo‘natuvchi va qabul qiluvchini vaqt, manzil hamda ishlash tezligi bo‘yicha ajratadi. RabbitMQ, Apache Kafka va MQTT brokerlari shu umumiy vazifani turli delivery va storage modellari bilan bajaradi.
Xabar oqimi
Producer brokerga ulanish ochib, destination yoki routing metadata bilan xabar yuboradi. Broker autentifikatsiya, hajm va policy tekshiruvini bajaradi. Xabar queue, topic yoki logga yoziladi, so‘ng subscriptionga mos consumerga uzatiladi. Consumer muvaffaqiyatni acknowledgement bilan bildirishi mumkin.
At-most-once rejimda duplicate xavfi kamayadi, lekin uzilishda xabar yo‘qolishi mumkin. At-least-once qayta yetkazish orqali yo‘qotishni kamaytiradi, ammo consumer bir xabarni bir necha marta ko‘rishi ehtimol. Exactly-once iborasi faqat aniq chegarada ma’noga ega; broker, transaction va tashqi side effect birgalikda hisobga olinadi.
Navbat va log modeli
An’anaviy queue xabarni competing consumerlardan bittasiga beradi. Topic bir xabarni bir nechta subscriptionga tarqatishi mumkin. Kafka kabi distributed log xabarni partition ichida offset bilan saqlaydi; consumer o‘z o‘qish pozitsiyasini boshqaradi va tarixni qayta o‘qishi mumkin.
Order ko‘pincha butun broker bo‘yicha emas, bitta queue yoki partition doirasida kafolatlanadi. Parallelism oshirish uchun xabarlar partitionlarga bo‘linadi. Bir entityga oid tartib kerak bo‘lsa routing yoki partition key barqaror tanlanadi.
Ishonchlilik
Durable xabar broker diskiga yoki replicated storagega yoziladi. Producer confirm yozuv qaysi bosqichga yetganini bildiradi. Consumer acknowledgement xabarni o‘chirish yoki offsetni siljitish uchun ishlatiladi. Ack juda erta berilsa process crashida ish yo‘qoladi; juda kech berilsa uzoq vazifa duplicate bajarilishi mumkin.
Retry cheksiz aylanmasligi uchun urinish soni, backoff va dead-letter destination belgilanadi. Zaharli xabar doim bir xil parserni yiqitsa asosiy queue throughputini to‘smasligi kerak. Message TTL va queue length limit eskirgan backlogni boshqaradi.
Klaster va oqim nazorati
Broker cluster availabilityni oshiradi, lekin replication latency va consistency tanlovini keltiradi. Leader yo‘qolishida unconfirmed yozuvlarning holati protokolga bog‘liq. Client topology change, reconnect va idempotent publishni to‘g‘ri boshqaradi.
Consumer producerdan sekin bo‘lsa queue chuqurlashadi. Prefetch, credit yoki quota brokerning consumerga bir vaqtda qancha xabar berishini cheklaydi. Disk, memory watermark va publish rate monitoring qilinadi. Broker transportni ajratadi, ammo yomon data schema va mos kelmaydigan producer-consumerni avtomatik tuzatmaydi.
Xavfsizlik
TLS kanalni, authentication client identitysini himoya qiladi. Authorization publish va consume huquqini virtual host, topic yoki queue bo‘yicha cheklaydi. Xabar payloadi sezgir bo‘lsa broker operatoridan ham yashirish uchun application-level encryption kerak bo‘lishi mumkin. Audit log kim qaysi destinationga murojaat qilganini qayd etadi.
Schema va evolyutsiya
Broker payload ma’nosini har doim bilmaydi. Producer va consumer JSON Schema, Avro, Protobuf yoki boshqa kontrakt orqali field turi va versionni kelishadi. Yangi optional field eski consumerni buzmasligi mumkin, required fieldni olib tashlash esa moslikni yo‘qotadi. Schema registry compatibility qoidalarini tekshiradi, lekin biznes ma’nosidagi o‘zgarishni avtomatik anglamaydi.
Katta binary payloadni brokerga to‘liq joylash disk va replicationni bosadi. Claim-check pattern payloadni object storageda saqlab, xabarda manzil va checksum yuboradi. Bunda object lifecycle, access va message bilan atomiklik alohida hal qilinadi.
Bog‘liq tushunchalar
Message queue, Producer, Consumer, Topic, Acknowledgement, Dead-letter queue, Partition