ویرگول
ورودثبت نام
Saeid Noormohammadi
Saeid Noormohammadi
Saeid Noormohammadi
Saeid Noormohammadi
خواندن ۳ دقیقه·۲ ماه پیش

نگاهی به تغییرات مهم Apache Kafka 4.1

چند وقت پیش بود که درباره تغییرات مهم نسخه 4.0 کافکا نوشتم. از حذف وابستگی به ZooKeeper با پیش‌فرض شدن KRaft گرفته تا بهبود پروتکل Consumer Group تو KIP-848 و معرفی اولیه Queues for Kafka تو KIP-932. حالا تقریبا یک ماهی میشه که نسخه 4.1.0 Kafka اومده و یک سری بهبودهای کاربردی داشته که نمیشه به‌ راحتی ازشون گذشت. تو این مطلب میخوایم مهم‌ترین تغییرات این نسخه رو باهم مرور کنیم.

۱. Queues for Kafka (KIP-932): یه قدم به جلو

تو نسخه 4.0 قابلیت Queues for Kafka تو KIP-932 معرفی شد و حالا تو 4.1 به حالت preview رسیده. اما هنوز برای استفاده تو محیط‌ های پروداکشن آماده نیستش، ولی میتونیم کار باهاش رو شروع و تستش کنیم. این بهمون اجازه میده که shared group ها را بر روی تاپیک ها تعریف و استفاده کنیم.

۲. پروتکل جدید Streams Rebalance (KIP-1071)

یکی از تغییرات جذاب این نسخه معرفی پروتکل Streams Rebalance تو KIP-1071 هستش که هنوز تو فاز early access. به صورت کلی این پروتکل رو پایه KIP-848 ساخته شده و تمرکزش رو بهبود تخصیص تسک ها و مدیریت تاپیک های داخلی تو Kafka Streams هستش. به زبون ساده یعنی هماهنگی بین تسک ها حالا ساده تر و بهتر انجام میشه. البته هنوز برای محیط پروداکشن پیشنهاد  نمیشه.

۳. Mechanism for plugins and connectors to register metrics (KIP-877)

یه تغییر کاربردی دیگه امکان ثبت متریک های سفارشی برای پلاگین ها و کانکتورها از طریق اینترفیس Monitorable هستش. حالا کلاینت های Produce,  Consumer و Admin راحت تر میتونن متریک‌های خودشون رو ثبت کنن. این متریک ها با تگ های مشخص پلاگین به صورت خودکار اینجکت میشن و با فرمتkafka.CLIENT:type=plugins نمایش داده میشن.

۴. Consistent error handling for Transactions (KIP-1050)

یک کار خوب دیگه ای که انجام شده، اومدن تو KIP-1050 لاجیک مدیریت خطاها تو AP های مربوط به transactions ها رو آپدیت کردن. یعنی اینکه الان یک چارچوب یکپارچه برای مدیریت خطاهای transaction ها داریم.

۵. Extend Consumer#close with an option to leave the group or not (KIP-1092)

تغییر بعدی تو این نسخه اضافه شدن متد Consumer.close(CloseOptions) هستش که بهمون اجازه میده مشخص کنیم consumer موقع بسته شدن از گروهش خارج بشه یا نه. این برای Kafka Streams خیلی کاربردی هستش. به کمکش میتونیم به شکل بهتری زمان بندی rebalance رو کنترل کنیم. و اینکه متد قدیمی Consumer.close(Duration) دپریکیت شده، پس بهتره به متد جدید مهاجرت کنیم.

۶. Trigger rebalance on rack topology changes (KIP-1101)

KIP-1101 هم اومده تخصیص پارتیشن های حساس به Rack رو بهینه تر کرده و مصرف حافظه رو به شکل خوبی پایین آورده. حالا میتونیم تو consumer group ها بدون نگرانی از محدودیت های حافظه تعداد زیادی عضو داشته باشیم که تو سیستم های بزرگ خیلی به کار میاد.

۷. Unifying Kafka Consumer Topic Metrics (KIP-1109)

قبلا متریک های تاپیک ها تو consumer ها نقطه های اسم تاپیک رو با underline تغییر میدان که خب بعضی وقت ها باعث گیج شدن میشد. تو 4.1 این مورد تغییر کرده و متریک ها با اسم اصلی تاپیک ها هم منتشر میشن. با توجه به اینکه تو نسخه 5.0 قراره متریک های قدیمی حذف بشن، پیشنهاد میشه که به متریک های جدید مهاجرت کنیم.

۸. Add Deadlock Protection on Producer Network Thread (KIP-1118)

یه مشکل قدیمی هم که تو Producer ها داشتیم این بود که اگه KafkaProducer.flush() رو داخل callback متد send() صدا میزدیم، ممکن بود سیستم قفل کنه. تو 4.1 این مشکل با raise شدن exception حل شده.

۹. Add support for OAuth jwt-bearer grant type (KIP-1139)

حالا کافکا علاوه بر client_credentials از grant type نوع jwt-bearer برای OAuth هم پشتیبانی میکنه که نیاز به توضیحات بیشتری نداره!

۱۰. Add transactional ID pattern filter to ListTransactions API (KIP-1152)

API که برای لیست کردن transaction ها (ListTransactions) داشتیم، حالا با تغییری که داشته میتونه بر اساس پترن ID transaction فیلتر کنه. خب تو محیط هایی که تعداد transaction ها زیاده، این کمک میکنه لازم نباشه همه رو لیست کنیم و بعد سمت کلاینت فیلترشون کنیم.

۱۱. بهبودهای مربوط به Kafka Connect

تو بحث Kafka Connect هم دوتا تغییر KIP-891 و KIP-877 داشتیم که به صورت خلاصه میتونیم چندتا نسخه از یک پلاگین کانکتور رو همزمان نصب کنیم و کانکتورها و تسک ها میتونن متریک های مربوط به خودشون رو از طریق context ثبت کنند که به مانیتورینگ بهتر کمک میکنه.

Confluent - Mickael Maison

kafkaکافکا
۱
۰
Saeid Noormohammadi
Saeid Noormohammadi
شاید از این پست‌ها خوشتان بیاید