يتم تشغيل الحل القياسي لعميل API واتساب للأعمال على حاوية Docker واحدة. وفي حالة رغبتك في تقسيم الحمل وكان لديك خوادم متعددة ترسل وتتلقى رسائل في واتساب، يمكنك الاستفادة من حل الاتصال المتعدد الذي نوفره فوق كل ذلك.
يتطلب حل الاتصال المتعدد إعداد التوّفر العالي الحالي أولاً. اتبع مستندات التوّفر العالي لإعداده، ثم تابع أدناه.
عند استخدام التوّفر العالي، تكون حاوية Docker واحدة فقط مسؤولة عن إرسال رسائل إلى خوادم واتساب وتلقيها منه. وإذا تجاوزت نسبة استخدام الشبكة للمراسلة الحد الأقصى لمعدل حاوية Docker مفردة، فسيحدث تراكم لعمليات إرسال الرسائل وسيزيد وقت تأخر إرسال الرسالة. لتوسيع نطاق عميل API واتساب للأعمال، يدعم حل الاتصال المتعدد التقسيم لتوزيع الحمولات عبر العديد من حاويات Docker. ولا ندعم حاليًا سوى التقسيم الثابت بالقسم رقم 1 أو 2 أو 4 أو 8 أو 16 أو 32. تكون الإتاحة العالية حالة خاصة من حل multiconnect حيث يكون القسم بالرقم 1.
تتضمن المجموعة عقدتي Coreapp وهما (CoreApp 1
وCoreApp 3
) حيث إنهما مسؤولتان عن إرسال رسائل إلى خادم واتساب وتلقيها منه في الوقت نفسه. ولا تنتمي كل الرسائل إلا إلى قسم واحد بناءً على معرف المستلم.
يستخدم عميل واجهة API واتساب للأعمال التقسيم للوصول إلى حل multiconnect. وبناءً على أرقام الأقسام التي قمت بإعدادها، ستخزّن قاعدة البيانات خريطة قسم تحدد القسم الذي يتعين انتقال الرسائل إليه بناءً على معرف المستلم (أو اسم مستخدم واتساب). وفيما يلي الدالة التي تحدد ذلك:
shard_id = hash(recipient-id) % shard-number
يتم تعيين كل قسم إلى حاوية Docker قيد التشغيل (Coreapp). وسيحدد Webapp حاوية Docker التي يتعين إرسال طلب الرسالة إليها بناءً على إرجاع هذه الدالة. كما أنها توصيك بإعداد أجهزة بالجزء رقم + X بغرض إمكانية تحمل حالات فشل الجهاز X.
في الرسم البياني المكون من قسمين لحل الاتصال المتعدد بالأعلى، يتم توجيه الرسائل إلى CoreApp 1
وCoreApp 3
استنادًا إلى وظيفة التقسيم. في حين تُعد عقدة CoreApp 2
ثانوية — فهي جاهزة، ولكن لا تمتلك اتصال نشط بخوادم واتساب. افترض أن العقدة CoreApp 1
تستدعي الرسائل لـ shard=0
وأن العقدة CoreApp 3
تستدعي الرسائل لـ shard=1
. إذا توقفت العقدة CoreApp 1
، فستتأثر الرسائل من shard=0
فقط. وسيستمر النظام في إرسال واستقبال الرسائل التي تنتمي إلى shard=1
باستخدام العقدة CoreApp 3
. ومثلما هو الحال في التوّفر العالي، ستكشف العقدة Master 1
عن وجود أية حالة فشل في العقدة CoreApp 1
وتجاوز فشل في نسبة استخدام الشبكة في القسم shard=0
للعقدة CoreApp 2
. علمًا بأن عملية تجاوز الفشل هذه تستغرق حوالي 35 ثانية.
بمجرد إعداد المجموعة وفقًا لـ مستندات التوّفر العالي، استخدم الطلب التالي لتشغيل الاتصال المتعدد.
تذكر أنه يجب عليك تشغيل حاويات Docker للقسم رقم + X في Coreapp قبل المتابعة.
لا يضمن الاتصال المتعدد وجود التوّفر العالي. احرص على توفير عدد أكبر من حاويات Coreapp مقارنة بالأقسام الموجودة قيد التشغيل للتوّفر العالي.
POST /v1/account/shards { "cc": "country-code", "phone_number": "phone-number", "shards": 1 | 2 | 4 | 8 | 16 | 32, "pin": "pin", "cert": "verified-name-cert-in-base64" }
الاسم | الوصف |
---|---|
| مطلوب. كود البلد لرقم الهاتف المسجل لعميل API واتساب للأعمال كسلسلة. على سبيل المثال: |
| مطلوب. رقم الهاتف المسجل لعميل API واتساب للأعمال هذا دون توفر كود البلد أو العلامة (+) كسلسلة. على سبيل المثال: |
| مطلوب. عدد الأقسام التي تريد أن تتوفر لديك كعدد صحيح. الخيارات: |
| اختياري. رقم التعريف الشخصي الحالي المكون من 6 أرقام للتحقق الثنائي كسلسلة. على سبيل المثال: |
| مطلوب. مع توفير المعلمة يتيح ملء هذا الحقل للأنشطة التجارية استدعاء نقطة النهاية هذه في أي وقت. قبل ذلك، لم يكن يمكن للأنشطة التجارية استدعاء نقطة النهاية هذه سوى في غضون 7 أيام من تسجيل رقم الهاتف. شهادة بتشفير Base64 مرتبطة برقم الهاتف المحدد مسبقًا. يمكنك الحصول على هذه الشهادة باستخدام مدير الأعمال. راجع نسخ الشهادة بتشفير Base64 لمزيد من المعلومات. الملاحظات:
إذا لم يتم توفير المعلمة |
201 Created : You successfully changed shard number 403 Forbidden : You could hit this if server is temporarily unavailable, retry the request should fix it
GET /v1/account/shards
{ "account": { "shards": number-of-shards } }
اطلع على المرجع، الرسائل، الأداء.
يتيح لك القالب تكوين عدد مثيلات حاوية Coreapp النشطة التي سيتم إنشاؤها. وينشئ القالب مثيلاً إضافيًا واحدًا لحاوية Coreapp للمساعدة في التبديل السريع في حالة فشل Coreapp.
ينشئ القالب العدد التالي من المثيلات لكل نوع بيئة في الاتصال المتعدد، افتراضيًا، عند تمكين التوّفر العالي:
تم تكوين القالب لضبط حجم مثيلات EC2 تلقائيًا استنادًا إلى استخدام الذاكرة. ويزداد استخدام الذاكرة (أو يقل) بالتزامن مع زيادة (أو انخفاض) عدد مثيلات حاوية Coreapp "النشطة". بالتالي، عند إنشاء المزيد من مثيلات Coreapp، يتم ضبط حجم مثيلات EC2 تلقائيًا وفقًا لذلك. ومع ذلك، فإن الحد الأقصى لعدد مثيلات EC2 التي يمكن إنشاؤها محدد على النحو التالي:
مثيلات Coreapp النشطة | الحد الأقصى لعدد مثيلات EC2 |
---|---|
2 | 3 |
4 | 4 |
8 | 5 |
16 | 8 |
32 | 15 |
يحدد معدل طلب API وعدد مثيلات Coreapp النشطة عدد عمليات الاتصال بقاعدة البيانات. ومع وجود 8 مثيلات Coreapp ومعدل API يبلغ 100 رسالة/ثانية، يتطلب الأمر حوالي 700 اتصال بقاعدة البيانات (مع تعطيل SSL) و1200 اتصال بقاعدة البيانات (عند تمكين SSL). مع ذلك، في وجود 32 من مثيلات Coreapp النشطة ومعدل API يبلغ 250 رسالة/ثانية، يتطلب الأمر حوالي 1700 اتصال بقاعدة البيانات.
في الإصدار الحالي، استخدمنا db.m4.2xlarge
لـ 8 من مثيلات Coreapp النشطة (مع تعطيل تشفير الاتصال بقاعدة البيانات) واستخدمنا db.m4.4x.large
لـ 32 من مثيلات Coreapp النشطة (مع تمكين تشفير الاتصال بقاعدة البيانات). يوفر الجدول التالي إرشادات حول تحديد فئة مثيل RDS والحد الأقصى لعدد الاتصالات التي يمكن أن يدعمها:
مثيل RDS | الحد الأقصى لعدد اتصالات قاعدة البيانات |
---|---|
| 318 |
| 636 |
| 1272 |
| 2543 |
| 1212 |
| 2424 |
| 4848 |
| 9696 |
| 19391 |
| 38783 |
| 636 |
| 1272 |
| 2543 |
| 5086 |
| 12716 |
| 20345 |
| 298 |
| 596 |
| 1192 |
| 2384 |