نظرة تحت الغطاء: تصميم البنية القابلة للتوسع لـ Rabetly

نظرة تحت الغطاء: تصميم البنية القابلة للتوسع لـ Rabetly

نشر في ٢٣ يونيو ٢٠٢٥

استعراض متعمق لبنية Rabetly القادرة على معالجة ملايين عمليات إعادة التوجيه يوميًا: توجيه Nginx، إدارة التزامن في Gunicorn وDjango، Celery وRabbitMQ، تحليلات Kafka، أتمتة SSL، والمراقبة الشاملة.

نظرة تحت الغطاء: تصميم البنية القابلة للتوسع لـ Rabetly

مع تزايد حركة المرور وتعقيد أنماط الاستخدام، يجب أن تكون خدمة تقصير الروابط متينة وعالية الأداء وسهلة الصيانة. في هذا المقال، نفصّل مكوّنات Rabetly الرئيسية التي تحافظ على كفاءتها عند التوسع.

1. Nginx على الحافة

  • نقطة دخول موحدة: HTTP لملفات robots.txt و sitemap.xml، وHTTPS (443) للمستخدمين.
  • توجيه حسب النطاق: ملفات ثابتة ↔ واجهة Ember ↔ خدمة إعادة التوجيه.
  • الأمان: شهادات Let’s Encrypt تتجدد تلقائيًا عبر ACME DNS-01.

2. Gunicorn و Django

  • ٣ عمليات عامل لكل خادم، متصلة بمقبس UNIX.
  • --capture-output يرسل جميع الأخطاء إلى /var/log/gunicorn/error.log.
  • systemd يضمن إعادة التشغيل التلقائي وجمع السجلات.

3. Celery و RabbitMQ

  • مهام إثراء بيانات النقر، البحث الجغرافي، وتنبيهات البريد.
  • Redis لتخزين حالات المهام وإعادة المحاولة الآمنة.

4. تحليلات عالية الحجم بـ Kafka و TimescaleDB

  • أحداث النقر الخام → مواضيع Kafka → جداول PostgreSQL مُجزأة.
  • المقاييس المجمعة في TimescaleDB باستعلامات أقل من 100 مل ثانية.
  • أرشفة الأجزاء القديمة إلى S3.

5. النطاقات المخصصة وأتمتة SSL

عند إضافة نطاق عميل جديد، يتم التحقق عبر Cloudflare API وإعادة تحميل Nginx بسلاسة دون توقف.

6. المراقبة والتنبيه

  • Prometheus يجمع المقاييس، وGrafana تعرضها.
  • Alertmanager يرسل تنبيهات عند ارتفاع أخطاء 5xx.
  • ELK يدمج سجلات Nginx وGunicorn وCelery للتتبع.

تابعونا في الجزء الثاني حول تحسين مخطط قاعدة البيانات وتعزيز الأمان.