التكوينات المستحسنة لعملاء Apache Kafka
فيما يلي التكوينات المستحسنة لاستخدام مراكز الأحداث من تطبيقات عميل Apache Kafka.
خصائص تكوين عميل Java
تكوينات المنتج والمستهلك
الخاصية | القيم المستحسنة | النطاق المسموح به | ملاحظات |
---|---|---|---|
metadata.max.age.ms |
180000 (تقريبي) | < 240000 | يمكن تخفيضها لالتقاط تغييرات بيانات التعريف في وقت أقرب. |
connections.max.idle.ms |
180000 | < 240000 | يغلق Azure بروتوكول تحكم الإرسال (TCP) الوارد الخامل > 240,000 ملي ثانية، ما قد يؤدي إلى إرسال اتصالات معطلة (تظهر على هيئة دُفعات منتهية الصلاحية بسبب انتهاء مهلة الإرسال). |
تكوينات المنتج فقط
يمكن العثور على تكوينات المنتج هنا.
الخاصية | القيم المستحسنة | النطاق المسموح به | ملاحظات |
---|---|---|---|
max.request.size |
1000000 | < 1046528 | ستغلق الخدمة الاتصالات إذا تم إرسال طلبات أكبر من 1,046,528 بايت. يجب تغيير هذه القيمة وسوف تسبب مشاكل في سيناريوهات إنتاج معدلات نقل عالية. |
retries |
> 0 | قد تتطلب زيادة قيمة delivery.timeout.ms، راجع الوثائق. | |
request.timeout.ms |
30000 60000 | > 20000 | سوف تتخلف مراكز الأحداث افتراضياً عن 20,000 ملي ثانية كحد أدنى. بينما يتم قبول الطلبات ذات قيم المهلة المنخفضة، فإن سلوك العميل غير مضمون.. تأكد من أن request.timeout.ms هي على الأقل القيمة الموصى بها 60000 وأن session.timeout.ms هي على الأقل القيمة الموصى بها 30000. قد يتسبب انخفاض هذه الإعدادات في انقضاء مهلة المستهلك، ما يؤدي بعد ذلك إلى إعادة التوازن (مما يؤدي بعد ذلك إلى مزيد من المهلات، ما يؤدي إلى مزيد من إعادة التوازن، وما إلى ذلك). |
metadata.max.idle.ms |
180000 | > 5000 | يتحكم في المدة التي سيقوم فيها المنتج بتخزين بيانات التعريف مؤقتاً لموضوع يُعد خاملاً. إذا تجاوز الوقت المنقضي منذ آخر إنتاج لموضوع مدة خمول بيانات التعريف، فسيتم تجاهل بيانات التعريف الخاصة بالموضوع وسيفرض الوصول التالي إليه طلب إحضار بيانات تعريف. |
linger.ms |
> 0 | بالنسبة لسيناريوهات معدل النقل المرتفع، يجب أن تكون قيمة المتبقية مساوية لأعلى قيمة مقبولة للاستفادة من عملية الإرسال في دفعات. | |
delivery.timeout.ms |
تعيين وفقا للصيغة ( request.timeout.ms + linger.ms ) * retries . |
||
compression.type |
none |
لا يتم دعم الضغط حالياً.. |
تكوينات المستهلك فقط
يمكن العثور على تكوينات المنتج هنا.
الخاصية | القيم المستحسنة | النطاق المسموح به | ملاحظات |
---|---|---|---|
heartbeat.interval.ms |
3000 | 3000 هي القيمة الافتراضية ولا يجب تغييرها. | |
session.timeout.ms |
30000 | 6000 300000 | تبدأ مع 30000، يمكن زيادتها عند حدوث إعادة التوازن المتكرر بسبب رسائل كشف أخطاء الاتصال المفقودة. تأكد من أن request.timeout.ms الخاص بك هي على الأقل القيمة الموصى بها 60000 وأن session.timeout.ms هي على الأقل القيمة الموصى بها 30000. قد يتسبب انخفاض هذه الإعدادات في انقضاء مهلة المستهلك، ما يؤدي بعد ذلك إلى إعادة التوازن (مما يؤدي بعد ذلك إلى مزيد من المهلات، ما يؤدي إلى مزيد من إعادة التوازن، وما إلى ذلك). |
max.poll.interval.ms |
300000 (افتراضي) | >session.timeout.ms | يستخدم لإعادة توازن المهلة، لذا لا يجب تعيين هذا إلى قيمة منخفضة جدًا. يجب أن يكون أكبر من session.timeout.ms. |
خصائص تكوين librdkafka
يحتوي ملف التكوين الرئيسي librdkafka
(الارتباط) على أوصاف موسعة للخصائص أدناه.
تكوينات المنتج والمستهلك
الخاصية | القيم المستحسنة | النطاق المسموح به | ملاحظات |
---|---|---|---|
socket.keepalive.enable |
صحيح | ضروري إذا كان من المتوقع أن يكون الاتصال خاملاً. سيغلق Azure الوارد TCP الخامل > 240,000 ملي ثانية. | |
metadata.max.age.ms |
~ 180000 | < 240000 | يمكن تخفيضها لالتقاط تغييرات بيانات التعريف في وقت أقرب. |
تكوينات المنتج فقط
الخاصية | القيم المستحسنة | النطاق المسموح به | ملاحظات |
---|---|---|---|
retries |
> 0 | الافتراضي هو 2147483647. | |
request.timeout.ms |
30000 60000 | > 20000 | سوف تتخلف مراكز الأحداث افتراضياً عن 20,000 ملي ثانية كحد أدنى. librdkafka القيمة الافتراضية هي 5000، والتي يمكن أن تكون مسببة للمشاكل. بينما يتم قبول الطلبات ذات قيم المهلة المنخفضة، لا يتم ضمان سلوك العميل. |
partitioner |
consistent_random |
راجع وثائق librdkafka | consistent_random هو الافتراضي والأفضل. يتم التعامل مع مفاتيح فارغة وخالية بشكل مثالي لمعظم الحالات. |
compression.codec |
none |
لا يتم دعم الضغط حالياً. |
تكوينات المستهلك فقط
الخاصية | القيم المستحسنة | النطاق المسموح به | ملاحظات |
---|---|---|---|
heartbeat.interval.ms |
3000 | 3000 هي القيمة الافتراضية ولا يجب تغييرها. | |
session.timeout.ms |
30000 | 6000 300000 | تبدأ مع 30000، يمكن زيادتها عند حدوث إعادة التوازن المتكرر بسبب رسائل كشف أخطاء الاتصال المفقودة. |
max.poll.interval.ms |
300000 (افتراضي) | >session.timeout.ms | يستخدم لإعادة توازن المهلة، لذا لا يجب تعيين هذا إلى قيمة منخفضة جدًا. يجب أن يكون أكبر من session.timeout.ms. |
ملاحظات أخرى
تحقق من الجدول التالي لسيناريوهات الأخطاء المرتبطة بالتكوين الشائعة.
العلامات | المشكلة | حل |
---|---|---|
تتسبب الإزاحة في الفشل بسبب إعادة التوازن | ينتظر المستهلك وقتاً طويلاً بين المكالمات للاستقصاء () والخدمة تُخرج المستهلك من المجموعة. | لديك العديد من الخيارات:
|
استثناءات الشبكة عند معدل نقل عالي الإنتاجية | هل تستخدم عميل Java + max.request.size الافتراضي؟ قد تكون طلباتك كبيرة جداً. | راجع تكوينات java أعلاه. |
الخطوات التالية
راجع حدود وحصص وقيود الخدمة والاشتراك في Azure للاطلاع على الحصص والحدود الخاصة بجميع خدمات Azure.