نوٽ. ترجمو: هن آرٽيڪل ۾، بنزائي ڪلائوڊ هڪ مثال شيئر ڪري ٿو ته ڪفڪا کي ڪبرنيٽس ۾ استعمال ڪرڻ آسان بڻائڻ لاءِ ان جا ڪسٽم ٽولز ڪيئن استعمال ڪري سگهجن ٿا. ھيٺيون ھدايتون بيان ڪري ٿي ته توھان پنھنجي انفراسٽرڪچر جي بھترين سائيز کي ڪيئن طئي ڪري سگھو ٿا ۽ ڪافڪا کي پاڻ ترتيب ڏئي گھربل ٿرو پُٽ حاصل ڪرڻ لاءِ.

Apache Kafka قابل اعتماد، اسپيبلبل ۽ اعلي ڪارڪردگي حقيقي وقت جي اسٽريمنگ سسٽم ٺاهڻ لاء هڪ ورهايل اسٽريمنگ پليٽ فارم آهي. ان جي شاندار صلاحيتون Kubernetes استعمال ڪندي وڌائي سگھجن ٿيون. ان لاءِ اسان ترقي ڪئي آهي ۽ هڪ اوزار سڏيو ويندو آهي . اهي توهان کي اجازت ڏين ٿا ڪافڪا کي ڪبرنيٽس تي هلائڻ ۽ ان جي مختلف خصوصيتن کي استعمال ڪرڻ، جهڙوڪ بروکر جي ترتيب کي ٺيڪ ڪرڻ، ريبلانسنگ سان ميٽرڪ-بنياد اسڪيلنگ، ريڪ جي آگاهي، "نرم" (مرحوم) تازه ڪاري ڪرڻ، وغيره.
ڪوشش ڪريو Supertubes پنھنجي ڪلستر ۾:
curl https://getsupertubes.sh | sh и supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>يا رابطو ڪريو . توھان پڻ پڙھي سگھوٿا ڪافڪا جي ڪجھ صلاحيتن جي باري ۾، اھو ڪم جنھن سان پاڻمرادو آھي Supertubes ۽ Kafka آپريٽر استعمال ڪندي. اسان پهريان ئي انهن بابت بلاگ تي لکيو آهي:
- ;
- ;
- ;
- ;
- ;
- ;
- .
جڏهن توهان ڪبرنيٽس تي ڪافڪا ڪلستر کي ترتيب ڏيڻ جو فيصلو ڪيو ٿا، توهان کي امڪاني طور تي بنيادي بنيادي ڍانچي جي مناسب سائيز جي تعين ڪرڻ جي چئلينج کي منهن ڏيڻو پوندو ۽ توهان جي ڪافڪا جي ترتيب کي بهتر ڪرڻ جي ضرورت پوندي. هر بروکر جي وڌ ۾ وڌ ڪارڪردگي بنيادي زيربنا جي اجزاء جي ڪارڪردگي طرفان طئي ڪئي وئي آهي، جهڙوڪ ميموري، پروسيسر، ڊسڪ اسپيڊ، نيٽ ورڪ بينڊوڊٿ وغيره.
مثالي طور تي، بروکر جي جوڙجڪ اهڙي هجڻ گهرجي ته سڀني انفراسٽرڪچر عناصر انهن جي وڌ ۾ وڌ صلاحيتن لاء استعمال ڪيا وڃن. بهرحال، حقيقي زندگي ۾ هي سيٽ اپ ڪافي پيچيده آهي. اهو وڌيڪ امڪان آهي ته صارف هڪ يا ٻه اجزاء (ڊسڪ، ميموري، يا پروسيسر) جي استعمال کي وڌائڻ لاء بروکرز کي ترتيب ڏين ٿا. عام طور تي ڳالهائڻ، هڪ بروکر وڌ ۾ وڌ ڪارڪردگي ڏيکاري ٿو جڏهن ان جي ترتيب جي اجازت ڏئي ٿي ته سستي جزو کي مڪمل حد تائين استعمال ڪيو وڃي. انهي طريقي سان اسان حاصل ڪري سگھون ٿا هڪ اڻ ڄاڻائي لوڊ جو هڪ بروکر سنڀاليندو.
نظرياتي طور تي، اسان پڻ اندازو لڳائي سگهون ٿا بروکرز جو تعداد هڪ ڏنل لوڊ کي سنڀالڻ جي ضرورت آهي. بهرحال، عملي طور تي مختلف سطحن تي ڪيتريون ئي ترتيب ڏيڻ جا اختيار موجود آهن ته اهو تمام ڏکيو آهي (جيڪڏهن ناممڪن ناهي) هڪ خاص ترتيب جي امڪاني ڪارڪردگي جو جائزو وٺڻ. ٻين لفظن ۾، ڪجهه ڏنل ڪارڪردگي جي بنياد تي ترتيب ڏيڻ جي رٿابندي ڪرڻ تمام ڏکيو آهي.
Supertubes استعمال ڪندڙن لاءِ، اسان عام طور تي ھيٺيان طريقه اختيار ڪندا آھيون: اسان ڪجھ ٺاھ جوڙ سان شروع ڪريون ٿا (انفراسٽرڪچر + سيٽنگون)، پوءِ ان جي ڪارڪردگي کي ماپون ٿا، بروکر سيٽنگون ترتيب ڏيو ۽ عمل کي ٻيهر ورجايو. اهو ٿئي ٿو جيستائين انفراسٽرڪچر جو سست حصو مڪمل طور تي استعمال نه ڪيو وڃي.
هن طريقي سان، اسان کي هڪ واضح خيال ملي ٿو ته ڪيترا بروڪرز هڪ ڪلستر کي هڪ خاص لوڊ کي سنڀالڻ جي ضرورت آهي (بروڪرز جو تعداد پڻ ٻين عنصر تي منحصر آهي، جهڙوڪ لچڪ کي يقيني بڻائڻ لاء پيغام جي نقلن جو گهٽ ۾ گهٽ تعداد، ورهاڱي جو تعداد اڳواڻن وغيره). اضافي طور تي، اسان ڄاڻ حاصل ڪريون ٿا ته انفراسٹرڪچر جي اجزاء کي عمودي اسڪيلنگ جي ضرورت آهي.
هي آرٽيڪل انهن قدمن جي باري ۾ ڳالهائيندو جيڪي اسان کڻون ٿا سڀ کان وڌيڪ حاصل ڪرڻ لاءِ ابتدائي ترتيبن ۾ سستي حصن مان ۽ ماپ ڪري ڪافڪا ڪلستر جي ذريعي. هڪ انتهائي لچڪدار ترتيب جي ضرورت آهي گهٽ ۾ گهٽ ٽي هلندڙ بروڪرز (min.insync.replicas=3)، ورهايل ٽن مختلف پهچ وارن علائقن ۾. Kubernetes انفراسٽرڪچر کي ترتيب ڏيڻ، ماپڻ ۽ مانيٽر ڪرڻ لاءِ، اسان استعمال ڪريون ٿا پنهنجو ڪنٽينر مئنيجمينٽ پليٽ فارم هائبرڊ بادل لاءِ - . اهو بنياد تي (ننگي ڌاتو، VMware) ۽ بادل جي پنجن قسمن (علي بابا، AWS، Azure، Google، Oracle) کي سپورٽ ڪري ٿو، انهي سان گڏ انهن جي ڪنهن به ميلاپ کي.
ڪافڪا ڪلستر انفراسٽرڪچر ۽ تشڪيل تي سوچون
هيٺ ڏنل مثالن لاءِ، اسان چونڊيو AWS کي ڪلائوڊ فراهم ڪندڙ ۽ EKS کي ڪبرنيٽس ورهائڻ جي طور تي. هڪ اهڙي تشڪيل استعمال ڪندي لاڳو ڪري سگهجي ٿو - بينزئي ڪلائوڊ کان ڪبرنيٽس جي ورڇ، CNCF پاران تصديق ٿيل.
ڊسڪ
Amazon مختلف پيش ڪري ٿو . بنيادي تي gp2 и io1 اتي SSD ڊرائيو آهن، جڏهن ته، اعلي throughput کي يقيني بڻائڻ لاء gp2 جمع ٿيل ڪريڊٽ استعمال ڪري ٿو (I/O ڪريڊٽ)، تنهنڪري اسان قسم کي ترجيح ڏني io1، جيڪو مسلسل اعلي throughput پيش ڪري ٿو.
مثال جا قسم
ڪافڪا جي ڪارڪردگي جو تمام گهڻو دارومدار آپريٽنگ سسٽم جي صفحي جي ڪيش تي آهي، تنهنڪري اسان کي بروکرز (JVM) ۽ صفحي جي ڪيش لاءِ ڪافي ميموري سان مثالن جي ضرورت آهي. مثال c5.2x وڏو - هڪ سٺي شروعات، ڇاڪاڻ ته ان ۾ 16 GB جي ميموري آهي ۽ . ان جو نقصان اهو آهي ته اهو صرف 30 منٽن کان وڌيڪ هر 24 ڪلاڪن لاءِ وڌ ۾ وڌ ڪارڪردگي مهيا ڪرڻ جي قابل آهي. جيڪڏهن توهان جي ڪم لوڊ جي ضرورت آهي چوٽي ڪارڪردگي جي گهڻي عرصي دوران، توهان شايد ٻين مثالن جي قسمن تي غور ڪرڻ چاهيندا. اهو ئي آهي جيڪو اسان ڪيو، ان تي روڪي c5.4x وڏو. ان ۾ وڌ ۾ وڌ throughput مهيا ڪري 593,75 Mbps. هڪ EBS حجم جي وڌ ۾ وڌ throughput io1 مثال کان وڌيڪ c5.4x وڏو، تنهنڪري انفراسٽرڪچر جو سڀ کان سست عنصر ممڪن آهي ته هن مثال جي قسم جو I/O throughput (جنهن جي اسان جي لوڊ ٽيسٽ کي پڻ تصديق ڪرڻ گهرجي).
نيٽورڪ
VM مثال ۽ ڊسڪ جي ڪارڪردگي جي مقابلي ۾ نيٽ ورڪ ذريعي ڪافي وڏو هجڻ گهرجي، ٻي صورت ۾ نيٽ ورڪ هڪ رڪاوٽ بڻجي ويندو. اسان جي صورت ۾، نيٽ ورڪ انٽرفيس c5.4x وڏو 10 Gb/s تائين جي رفتار کي سپورٽ ڪري ٿو، جيڪو VM مثال جي I/O throughput کان گهڻو وڌيڪ آهي.
بروکر جي مقرري
سي پي يو، ميموري، نيٽ ورڪ، ۽ ڊسڪ وسيلن جي ٻين عملن سان مقابلو ڪرڻ کان بچڻ لاءِ بروکرز کي مقرر ڪيو وڃي (ڪيبرنيٽس ۾ مقرر ڪيل) وقف ڪيل نوڊس تي.
جاوا ورزن
منطقي پسند جاوا 11 آهي ڇاڪاڻ ته اهو ڊڪر سان مطابقت رکي ٿو ان لحاظ سان ته JVM صحيح طريقي سان طئي ڪري ٿو پروسيسرز ۽ ميموري موجود ڪنٽينر تي جنهن ۾ بروکر هلي رهيو آهي. اهو ڄاڻڻ ته سي پي يو جون حدون اهم آهن، JVM اندروني ۽ شفاف طور تي GC ٿريڊز ۽ JIT ٿريڊز جو تعداد مقرر ڪري ٿو. اسان ڪافڪا جي تصوير استعمال ڪئي banzaicloud/kafka:2.13-2.4.0جنهن ۾ جاوا 2.4.0 تي ڪافڪا ورزن 2.13 (اسڪالا 11) شامل آهي.
جيڪڏهن توهان ڪبرنيٽس تي جاوا/JVM بابت وڌيڪ ڄاڻڻ چاهيو ٿا، اسان جي هيٺيان پوسٽون چيڪ ڪريو:
- ;
- .
بروکر ميموري سيٽنگون
بروکر ميموري کي ترتيب ڏيڻ لاءِ ٻه اهم پهلو آهن: JVM لاءِ سيٽنگون ۽ ڪبرنيٽس پوڊ لاءِ. پوڊ لاءِ مقرر ڪيل ياداشت جي حد وڌ کان وڌ هيپ سائيز کان وڌيڪ هجڻ گهرجي ته جيئن JVM وٽ جاوا ميٽا اسپيس لاءِ گنجائش هجي جيڪا پنهنجي ياداشت ۾ رهي ٿي ۽ آپريٽنگ سسٽم پيج ڪيش لاءِ جيڪا ڪافڪا فعال طور تي استعمال ڪري ٿي. اسان جي تجربن ۾ اسان ڪيفڪا بروڪرز کي پيرا ميٽرز سان شروع ڪيو -Xmx4G -Xms2G، ۽ پوڊ لاءِ ياداشت جي حد هئي 10 Gi. مهرباني ڪري نوٽ ڪريو ته JVM لاء ميموري سيٽنگون خودڪار طريقي سان حاصل ڪري سگھجن ٿيون -XX:MaxRAMPercentage и -X:MinRAMPercentageپوڊ لاءِ ياداشت جي حد جي بنياد تي.
بروکر پروسيسر سيٽنگون
عام طور تي ڳالهائڻ، توهان ڪافڪا پاران استعمال ڪيل موضوعن جي تعداد کي وڌائڻ سان متوازي کي وڌائڻ سان ڪارڪردگي بهتر ڪري سگهو ٿا. وڌيڪ پروسيسر ڪافڪا لاءِ دستياب آهن، بهتر. اسان جي ٽيسٽ ۾، اسان 6 پروسيسرز جي حد سان شروع ڪيو ۽ تدريجي طور تي (ٻهرن جي ذريعي) انهن جو تعداد وڌائي 15 تائين. ان کان علاوه، اسان سيٽ ڪيو. num.network.threads=12 بروکر سيٽنگن ۾ ٿريڊز جو تعداد وڌائڻ لاءِ جيڪي نيٽ ورڪ مان ڊيٽا وصول ڪن ٿا ۽ ان کي موڪلين ٿا. فوري طور تي دريافت ڪيو ته پيروڪار بروکرز ڪافي جلدي نقل حاصل نه ڪري سگهيا، انهن بلند ڪيو num.replica.fetchers 4 تائين انهي رفتار کي وڌائڻ لاءِ جنهن تي پيروڪار بروڪرز اڳواڻن جا پيغام نقل ڪيا.
لوڊ ڪرڻ وارو اوزار
توهان کي پڪ ڪرڻ گهرجي ته چونڊيل لوڊ جنريٽر جي گنجائش ختم نه ٿئي ان کان اڳ جو ڪافڪا ڪلستر (جنهن کي بينچ مارڪ ڪيو پيو وڃي) ان جي وڌ ۾ وڌ لوڊ تي پهچي. ٻين لفظن ۾، اهو ضروري آهي ته لوڊ نسل جي اوزار جي صلاحيتن جي ابتدائي تشخيص کي منظم ڪرڻ، ۽ ان لاء مثال جي قسمن کي چونڊيو پروسيسر ۽ ياداشت جي ڪافي تعداد سان. انهي صورت ۾، اسان جو اوزار ڪافڪا ڪلستر جي ڀيٽ ۾ وڌيڪ لوڊ پيدا ڪندو. ڪيترن ئي تجربن کان پوء، اسان ٽن نسخن تي آباد ڪيو c5.4x وڏوجن مان هر هڪ ۾ جنريٽر هلندڙ هو.
بينچ مارڪنگ
ڪارڪردگي جي ماپ هڪ ٻيهر عمل آهي جنهن ۾ هيٺيان مرحلا شامل آهن:
- انفراسٽرڪچر قائم ڪرڻ (EKS ڪلستر، ڪافڪا ڪلستر، لوڊ پيدا ڪرڻ وارو اوزار، گڏوگڏ پروميٿيوس ۽ گرافانا)؛
- گڏ ڪيل ڪارڪردگي اشارن ۾ بي ترتيب انحراف کي فلٽر ڪرڻ لاءِ هڪ خاص مدت لاءِ لوڊ پيدا ڪرڻ؛
- مشاهدو ڪارڪردگي اشارن جي بنياد تي بروکر جي انفراسٽرڪچر ۽ تشڪيل کي ترتيب ڏيڻ؛
- ان عمل کي ورجايو جيستائين ڪافڪا ڪلستر ذريعي گهربل سطح حاصل نه ٿئي. ساڳئي وقت، اهو لازمي طور تي ٻيهر پيدا ٿيڻ گهرجي ۽ ان جي ذريعي گهٽ ۾ گهٽ تبديلين جو مظاهرو ڪيو وڃي.
ايندڙ سيڪشن انهن مرحلن کي بيان ڪري ٿو جيڪي ٽيسٽ ڪلستر بينچ مارڪنگ جي عمل دوران ڪيا ويا.
اوزار
هيٺيان اوزار استعمال ڪيا ويا تڪڙو تڪڙو ترتيب ڏيڻ لاءِ بيس لائين ترتيب ڏيڻ، لوڊ پيدا ڪرڻ، ۽ ڪارڪردگي کي ماپڻ:
- Amazon کان هڪ EKS ڪلستر کي منظم ڪرڻ لاء c (ڪافڪا ۽ انفراسٽرڪچر ميٽرڪ گڏ ڪرڻ) ۽ (هنن ماپن کي ڏسڻ لاءِ). اسان فائدو ورتو ضم ٿيل в خدمتون جيڪي مهيا ڪن ٿيون وفاق جي نگراني، مرڪزي لاگ گڏ ڪرڻ، خطرات جي اسڪيننگ، آفت جي بحالي، انٽرنيشنل گريڊ سيڪيورٽي ۽ گهڻو ڪجهه.
- - ڪافڪا ڪلستر کي لوڊ ڪرڻ لاءِ هڪ اوزار.
- ڪافڪا ميٽرڪس ۽ انفراسٽرڪچر کي ڏسڻ لاءِ گرافانا ڊيش بورڊ: , .
- ڪبرنيٽس تي ڪافڪا ڪلستر قائم ڪرڻ لاءِ آسان ترين طريقي لاءِ Supertubes CLI. زوڪيپر، ڪافڪا آپريٽر، ايلچي ۽ ٻيا ڪيترائي حصا انسٽال ٿيل آهن ۽ صحيح طرح ترتيب ڏنل آهن ڪبرنيٽس تي پيداوار لاءِ تيار ڪافڪا ڪلستر هلائڻ لاءِ.
- انسٽال ڪرڻ لاء سپر ٽيوب CLI ڏنل هدايتون استعمال ڪريو .

EKS ڪلستر
وقف ٿيل ورڪر نوڊس سان گڏ EKS ڪلستر تيار ڪريو c5.4x وڏو ڪافڪا بروڪرز سان گڏ پوڊز لاءِ مختلف دستيابي علائقن ۾، گڏوگڏ لوڊ جنريٽر ۽ نگراني جي انفراسٽرڪچر لاءِ وقف ڪيل نوڊس.
banzai cluster create -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/cluster_eks_202001.jsonهڪ دفعو EKS ڪلستر مٿي ۽ هلندڙ آهي، ان کي متحرڪ ڪريو - هوءَ پروميٿيس ۽ گرافانا کي هڪ ڪلستر ۾ ترتيب ڏيندي.
ڪافڪا سسٽم اجزاء
انسٽال ڪريو ڪافڪا سسٽم جا حصا (زوڪيپر، ڪافڪا آپريٽر) EKS ۾ سپر ٽيوبس CLI استعمال ڪندي:
supertubes install -a --no-democluster --kubeconfig <path-to-eks-cluster-kubeconfig-file>ڪافڪا ڪلستر
ڊفالٽ طور، EKS قسم جي EBS حجم استعمال ڪري ٿو gp2، تنهنڪري توهان کي مقدار جي بنياد تي هڪ الڳ اسٽوريج ڪلاس ٺاهڻ جي ضرورت آهي io1 ڪافڪا ڪلستر لاءِ:
kubectl create -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
type: io1
iopsPerGB: "50"
fsType: ext4
volumeBindingMode: WaitForFirstConsumer
EOF بروکرز لاءِ پيٽرول مقرر ڪريو min.insync.replicas=3 ۽ ٽن مختلف دستيابي علائقن ۾ نوڊس تي بروکر پوڊس کي ترتيب ڏيو:
supertubes cluster create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f https://raw.githubusercontent.com/banzaicloud/kafka-operator/master/docs/benchmarks/infrastructure/kafka_202001_3brokers.yaml --wait --timeout 600موضوع
اسان متوازي ۾ ٽي لوڊ جنريٽر جا مثال ورتا. انهن مان هر هڪ پنهنجي پنهنجي موضوع تي لکي ٿو، اهو آهي، اسان کي مجموعي طور تي ٽن عنوانن جي ضرورت آهي:
supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
name: perftest1
spec:
name: perftest1
partitions: 12
replicationFactor: 3
retention.ms: '28800000'
cleanup.policy: delete
EOF
supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
name: perftest2
spec:
name: perftest2
partitions: 12
replicationFactor: 3
retention.ms: '28800000'
cleanup.policy: delete
EOF
supertubes cluster topic create -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> -f -<<EOF
apiVersion: kafka.banzaicloud.io/v1alpha1
kind: KafkaTopic
metadata:
name: perftest3
spec:
name: perftest3
partitions: 12
replicationFactor: 3
retention.ms: '28800000'
cleanup.policy: delete
EOFهر موضوع لاءِ، نقل جو عنصر 3 آهي- انتهائي دستياب پيداواري نظامن لاءِ گهٽ ۾ گهٽ تجويز ڪيل قدر.
لوڊ ڪرڻ وارو اوزار
اسان لوڊ جنريٽر جون ٽي ڪاپيون لانچ ڪيون (هر هڪ الڳ موضوع ۾ لکيو). لوڊ جنريٽر پوڊز لاءِ، توهان کي نوڊ جي لاڳاپي کي سيٽ ڪرڻ جي ضرورت آهي ته جيئن اهي صرف انهن لاءِ مختص ڪيل نوڊس تي مقرر ڪيا وڃن:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: loadtest
name: perf-load1
namespace: kafka
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: loadtest
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: loadtest
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: nodepool.banzaicloud.io/name
operator: In
values:
- loadgen
containers:
- args:
- -brokers=kafka-0:29092,kafka-1:29092,kafka-2:29092,kafka-3:29092
- -topic=perftest1
- -required-acks=all
- -message-size=512
- -workers=20
image: banzaicloud/perfload:0.1.0-blog
imagePullPolicy: Always
name: sangrenel
resources:
limits:
cpu: 2
memory: 1Gi
requests:
cpu: 2
memory: 1Gi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30نوٽ ڪرڻ لاء ڪجهه نقطا:
- لوڊ جنريٽر 512 بائيٽ ڊگھائي جا پيغام ٺاهي ٿو ۽ انهن کي 500 پيغامن جي بيچ ۾ ڪافڪا ڏانهن شايع ڪري ٿو.
- هڪ دليل استعمال ڪندي
-required-acks=allپبليڪيشن کي ڪامياب سمجهيو ويندو آهي جڏهن پيغام جا سڀئي هم وقت ساز نقل ڪيا ويندا آهن ۽ ڪافڪا بروڪرز طرفان تصديق ٿيل آهن. هن جو مطلب اهو آهي ته معيار ۾ اسان ماپيندا آهيون نه رڳو اڳواڻن جي رفتار کي پيغام حاصل ڪرڻ، پر انهن جا پيروڪار پڻ پيغامن کي نقل ڪن ٿا. هن ٽيسٽ جو مقصد صارفين جي پڙهڻ جي رفتار جو جائزو وٺڻ نه آهي (صارفين) تازو موصول ٿيل پيغام جيڪي اڃا تائين او ايس پيج ڪيش ۾ موجود آهن، ۽ ڊسڪ تي محفوظ ڪيل پيغامن جي پڙهڻ جي رفتار سان ان جو مقابلو. - لوڊ جنريٽر 20 ڪارڪنن کي متوازي طور تي هلائي ٿو (
-workers=20). هر ڪم ڪندڙ ۾ 5 پروڊيوسر شامل آهن جيڪي ڪم ڪندڙ جي ڪنيڪشن کي ڪافڪا ڪلستر سان حصيداري ڪن ٿا. نتيجي طور، هر جنريٽر ۾ 100 پروڊيوسر آهن، ۽ اهي سڀئي پيغام موڪليندا آهن ڪافڪا ڪلستر ڏانهن.
ڪلستر جي صحت جي نگراني
ڪافڪا ڪلسٽر جي لوڊ ٽيسٽ دوران، اسان ان جي صحت جي پڻ نگراني ڪئي ته جيئن ڪو به پوڊ ريسٽارٽ نه هجي، نه هم وقت سازي کان ٻاهر نقل، ۽ گهٽ ۾ گهٽ وهڪري سان وڌ ۾ وڌ انٽرپٽ:
- لوڊ جنريٽر شايع ٿيل پيغامن جي تعداد ۽ غلطي جي شرح بابت معياري انگ اکر لکي ٿو. غلطي جي شرح ساڳيو رهڻ گهرجي
0,00%. - ، ڪافڪا آپريٽر پاران ترتيب ڏنل، هڪ ڊيش بورڊ مهيا ڪري ٿو جتي اسان پڻ ڪلستر جي حالت مانيٽر ڪري سگهون ٿا. هن پينل کي ڏسڻ لاء:
supertubes cluster cruisecontrol show -n kafka --kubeconfig <path-to-eks-cluster-kubeconfig-file> - ISR سطح ("ان-سئنڪ" نقلن جو تعداد) ڇڪڻ ۽ توسيع 0 جي برابر آهي.
ماپ جا نتيجا
3 بروکرز، پيغام جي سائيز - 512 بائيٽ
ورهاڱي سان برابر طور تي ٽن بروکرز ۾ ورهايل، اسان ڪارڪردگي حاصل ڪرڻ جي قابل هئاسين ~500 Mb/s (تقريبن 990 هزار پيغام في سيڪنڊ):



JVM ورچوئل مشين جي ميموري واپرائڻ 2 GB کان وڌيڪ نه هئي:



ڊسڪ ذريعي وڌ ۾ وڌ I/O نوڊ ان پٽ تي پهچي ويو سڀني ٽن مثالن تي جن تي بروکرز هلائي رهيا هئا:



نوڊس پاران ميموري جي استعمال تي ڊيٽا مان، اهو هيٺ ڏنل آهي ته سسٽم بفرنگ ۽ ڪيشنگ ~ 10-15 GB ورتو:



3 بروکرز، پيغام جي سائيز - 100 بائيٽ
جيئن جيئن پيغام جي سائيز گھٽجي ٿي، تيئن 15-20% جي گھٽتائي ٿئي ٿي: هر پيغام کي پروسيس ڪرڻ ۾ خرچ ٿيل وقت ان تي اثر انداز ٿئي ٿو. ان کان سواء، پروسيسر لوڊ تقريبا ٻيڻو ٿي چڪو آهي.



جيئن ته بروکر نوڊس اڃا تائين غير استعمال ٿيل ڪور آهن، ڪارڪردگي کي بهتر ڪري سگهجي ٿو ڪافڪا جي ترتيب کي تبديل ڪندي. اهو ڪو آسان ڪم نه آهي، تنهنڪري ان جي ذريعي وڌائڻ لاء اهو بهتر آهي ته وڏن پيغامن سان ڪم ڪيو وڃي.
4 بروکرز، پيغام جي سائيز - 512 بائيٽ
توهان آساني سان ڪافڪا ڪلستر جي ڪارڪردگي کي وڌائي سگهو ٿا صرف نوان بروکرز شامل ڪندي ۽ ورهاڱي جي توازن کي برقرار رکڻ سان (اهو يقيني بڻائي ٿو ته لوڊ بروڪرز جي وچ ۾ برابر طور تي ورهايل آهي). اسان جي صورت ۾، هڪ بروکر کي شامل ڪرڻ کان پوء، ڪلستر throughput وڌي ويو ~580 Mb/s (~ 1,1 ملين پيغام في سيڪنڊ). ترقي توقع کان گهٽ ٿي وئي: اهو بنيادي طور تي ورهاڱي جي عدم توازن جي ڪري آهي (نه سڀئي بروکر پنهنجي صلاحيتن جي چوٽي تي ڪم ڪن ٿا).




JVM مشين جي ميموري واپرائڻ 2 GB کان هيٺ رهي:




ڊرائيوز سان بروکرز جو ڪم ورهاڱي جي عدم توازن کان متاثر ٿيو:




پهچڻ
مٿي پيش ڪيل ورهاڱي واري طريقي کي وڌايو وڃي ٿو وڌيڪ پيچيده منظرنامي کي ڍڪڻ لاءِ جنهن ۾ سوين صارف شامل آهن، ورهاڱي، رولنگ اپڊيٽ، پوڊ ٻيهر شروع، وغيره. هي سڀ اسان کي مختلف حالتن ۾ ڪافڪا ڪلستر جي صلاحيتن جي حدن جو اندازو لڳائڻ، ان جي آپريشن ۾ رڪاوٽن جي نشاندهي ڪرڻ ۽ انهن کي منهن ڏيڻ جا طريقا ڳولڻ جي اجازت ڏئي ٿو.
اسان Supertubes ٺاھيو آھي تڪڙو ۽ آساني سان ھڪڙي ڪلستر کي ترتيب ڏيڻ، ان کي ترتيب ڏيڻ، بروکرز ۽ عنوانن کي شامل ڪرڻ/ھٽائڻ، الرٽ جو جواب ڏيڻ، ۽ Kafka کي عام طور تي Kubernetes تي صحيح ڪم ڪرڻ کي يقيني بڻائڻ لاءِ. اسان جو مقصد توھان جي مدد ڪرڻ آھي بنيادي ڪم تي توجه ڏيڻ (“پيدا ڪريو” ۽ “ڪجھو” ڪافڪا پيغام)، ۽ تمام محنت سپرٽيوبس ۽ ڪافڪا آپريٽر تي ڇڏي ڏيو.
جيڪڏهن توهان Banzai Cloud ٽيڪنالاجيز ۽ اوپن سورس پروجيڪٽ ۾ دلچسپي رکو ٿا، ڪمپني جي رڪنيت حاصل ڪريو تي , يا .
پي ايس مترجم کان
اسان جي بلاگ تي پڻ پڙهو:
- «"؛
- «"؛
- «».
جو ذريعو: www.habr.com
