بيكس ويف
PixWave هي خدمة محفظة رقمية صغيرة قابلة للتطوير وعالية الأداء مصممة للتعامل مع المدفوعات في الوقت الفعلي عبر PIX ، باستخدام بنية متعددة البوابات . يدمج النظام بوابات دفع متعددة، بما في ذلك Mercado Pago و Gerencianet ، مما يضمن الموثوقية وقدرات احتياطية سلسة. ومن خلال الاختيار الديناميكي للبوابة الأكثر توفرًا في أي لحظة، تعمل PixWave على تقليل وقت التوقف عن العمل وتضمن معالجة الدفع بشكل مستمر.
تم تصميم البنية لتكون مرنة ونموذجية وقابلة للتطوير ، باستخدام Docker للحاويات، وKubernetes للتنسيق، وRedis للتخزين المؤقت، و SNS للمراسلة غير المتزامنة، ومكدس ELK (Logstash، Elasticsearch، Kibana) للتسجيل المركزي والمراقبة في الوقت الفعلي من أداء النظام.
الميزات الرئيسية
- بنية متعددة البوابات مع إمكانية اختيار البوابة في الوقت الفعلي والرجوع التلقائي.
- معالجة المهام غير المتزامنة مع آليات إعادة المحاولة للتعامل مع المعاملات الفاشلة والمهام طويلة الأمد.
- التسجيل المركزي والمراقبة في الوقت الفعلي باستخدام مكدس ELK (Elasticsearch، Logstash، Kibana).
- قابلية التوسع والمرونة مدعومة من Docker وKubernetes، مما يضمن قدرة النظام على التعامل مع الأحمال العالية والبقاء قيد التشغيل تحت الضغط.
هندسة النظام
1. الهندسة المعمارية القائمة على الخدمات الصغيرة
تتبع PixWave بنية قائمة على الخدمات الصغيرة ، حيث يتم فصل المكونات الرئيسية - مثل معالجة الدفع وإدارة المستخدم ومراقبة المعاملات - إلى خدمات مستقلة. يتيح هذا التصميم توسيع نطاق الخدمات الفردية بشكل مستقل وصيانتها دون التأثير على النظام بأكمله.
- يتم استخدام Laravel كإطار عمل خلفي لإدارة معاملات الدفع وتفاعلات المستخدم وطلبات واجهة برمجة التطبيقات (API).
- يقوم Docker بتخزين كل خدمة في حاوية، مما يضمن الاتساق عبر بيئات التطوير والاختبار والإنتاج.
- يقوم Kubernetes بتنسيق نشر هذه الحاويات وإدارتها، مما يوفر ميزات مثل القياس التلقائي والإصلاح الذاتي وموازنة التحميل.
2. معالجة الدفع
جوهر PixWave هو وحدة معالجة الدفع الخاصة بها، والمصممة للتعامل مع معاملات PIX في الوقت الفعلي مع توفر عالي وتسامح مع الأخطاء. يدمج النظام بوابتين أساسيتين للدفع: Mercado Pago و Gerencianet ، ويستخدم آلية اختيار البوابة الذكية.
2.1. نظام متعدد البوابات مع إمكانية الرجوع
- يحاول النظام أولاً معالجة المدفوعات عبر البوابة الرئيسية (إما Mercado Pago أو Gerencianet).
- يقوم Redis بتخزين حالة التوفر لكل بوابة، مما يتيح الاسترجاع السريع واتخاذ القرار.
- إذا كانت البوابة الرئيسية غير متاحة، فسيقوم النظام على الفور بالتبديل إلى البوابة الاحتياطية، مما يضمن معالجة الدفع المستمرة مع الحد الأدنى من وقت التوقف عن العمل.
2.2. إدارة المعاملات
- يتم تسجيل جميع المعاملات في MySQL ، بما في ذلك تفاصيل مثل مبلغ المعاملة، ومعرف المستخدم، والبوابة المستخدمة، والحالة (نجاح، فشل، أو معلق)، والطوابع الزمنية.
- تعمل إدارة الحالة المستندة إلى التعداد على توحيد حالات المعاملات عبر بوابات مختلفة لتحقيق الاتساق في قاعدة البيانات.
- تتعامل قوائم انتظار المهام مع معالجة الدفع بشكل غير متزامن، مما يسمح للمستخدمين ببدء الدفعات دون انتظار اكتمال العملية بأكملها.
3. آليات العمل وإعادة المحاولة
يعد نظام الوظائف في PixWave أمرًا بالغ الأهمية للتعامل مع المهام مثل معالجة الدفع وإعادة المحاولة. من خلال إرسال المهام لطلبات الدفع بشكل غير متزامن، توفر PixWave تجربة غير قابلة للحظر للمستخدمين وتزيد من استجابة النظام بشكل عام.
3.1. التعامل مع الوظيفة
- عند طلب الدفع، يتم إرسال مهمة لمعالجة المعاملة بشكل غير متزامن، ويتم الاتصال ببوابة الدفع ذات الصلة لإرسال المعاملة واسترداد النتيجة.
- تتم معالجة الوظائف بالتوازي، مما يضمن التعامل بكفاءة مع كميات كبيرة من المدفوعات.
3.2. آلية إعادة المحاولة
- إذا فشلت محاولة الدفع بسبب مشكلات في البوابة، فسيقوم النظام بإعادة المحاولة ما يصل إلى 3 مرات قبل وضع علامة على المعاملة على أنها فاشلة.
- بعد كل محاولات إعادة المحاولة، يتحول النظام إلى البوابة الاحتياطية ويعيد محاولة الدفع.
- إذا فشل الإجراء الاحتياطي أيضًا، فسيتم تسجيل المعاملة على أنها فاشلة، وقد يتم إرسال التنبيهات عبر SNS لمزيد من التحقيق.
4. التخزين المؤقت مع Redis
يستخدم PixWave Redis للتخزين المؤقت لتحسين الأداء وتقليل الحمل على قاعدة البيانات الأساسية.
- توفر البوابة : تم تخزينها مؤقتًا في Redis، مما يسمح للنظام بتحديد بوابة الدفع التي سيتم استخدامها بسرعة دون إجراء مكالمات API متكررة.
- عمليات البحث عن المعاملات : يتم تخزين المعاملات التي تمت معالجتها مؤخرًا في ذاكرة التخزين المؤقت، مما يتيح البحث السريع وتقليل الاستعلامات غير الضرورية إلى قاعدة بيانات MySQL.
5. التسجيل والمراقبة المركزية
يتم استخدام Logstash و Elasticsearch لإدارة التسجيل المركزي، مما يوفر رؤى في الوقت الفعلي حول أحداث النظام والأخطاء ومقاييس الأداء.
- يجمع Logstash السجلات من جميع الخدمات (Laravel، وقوائم انتظار المهام، وبوابات الدفع) ويرسلها إلى Elasticsearch للفهرسة.
- يتيح Elasticsearch استعلامًا قويًا لفحوصات صحة النظام واستكشاف الأخطاء وإصلاحها.
- يقدم Kibana لوحة معلومات رسومية لاستكشاف السجلات وتتبع الأخطاء وتصور أداء النظام.
6. قائمة انتظار الرسائل والإخطارات غير المتزامنة
يستخدم PixWave SNS (خدمة الإشعارات البسيطة) للمراسلة بين الخدمات الصغيرة ولإرسال الإشعارات إلى الأنظمة الخارجية.
- عند معالجة معاملة ما، يتم إرسال الإشعارات إلى أنظمة خارجية (على سبيل المثال، تطبيقات المستخدم أو خدمات الطرف الثالث) عبر SNS، مما يضمن بقاء النظام مستجيبًا حتى في ظل حركة المرور العالية.
- تتم معالجة الرسائل الداخلية بين مكونات النظام عبر SQL و SNS ، مما يضمن فصل الاتصال بين الخدمات.
تعليمات التثبيت
1. استنساخ المستودع
للبدء، انسخ مستودع PixWave إلى جهازك المحلي:
git clone https://github.com/your-repository/pixwave.git
cd pixwave
2. إعداد متغيرات البيئة
انسخ الملف .env.example
إلى .env
وقم بتكوين متغيرات البيئة الخاصة بك. تتضمن هذه المتغيرات بيانات اعتماد قاعدة البيانات، وبيانات اعتماد بوابة الدفع (Mercado Pago وGerencianet)، ومفاتيح واجهة برمجة التطبيقات (API) للخدمات الأخرى:
قم بتحديث القيم التالية في ملف .env
:
-
DB_HOST
، DB_PORT
، DB_DATABASE
، DB_USERNAME
، DB_PASSWORD
- إعدادات قاعدة بيانات MySQL. -
MERCADOPAGO_ACCESS_TOKEN
– رمز الوصول إلى Mercado Pago. -
GERENCIANET_CLIENT_ID
، GERENCIANET_CLIENT_SECRET
، GERENCIANET_PIX_KEY
- بيانات اعتماد Gerencianet API. -
SNS_API_KEY
- مفتاح SNS API الخاص بك للإشعارات. -
LOGSTASH_HOST
– مضيف لخدمة Logstash (للتسجيل المركزي).
3. تثبيت التبعيات
قم بتشغيل الأمر التالي لتثبيت كافة التبعيات المطلوبة:
4. قم بإعداد عامل الميناء
تأكد من تثبيت Docker على جهازك. بعد ذلك، استخدم Docker Compose لإنشاء الحاويات الضرورية وتشغيلها:
docker-compose up --build
سيبدأ هذا الأمر الخدمات التالية:
- تطبيق Laravel (واجهة PHP الخلفية)
- MySQL (قاعدة البيانات العلائقية)
- ريديس (ذاكرة التخزين المؤقت)
- Elasticsearch وLogstash (التسجيل المركزي)
- كيبانا (واجهة تحليل السجل)
5. تشغيل عمليات الهجرات والبذرات
بعد إعداد الحاويات وتشغيلها، قم بتنفيذ عمليات الترحيل لإعداد مخطط قاعدة البيانات وزرع بعض البيانات الأولية:
docker exec -it laravel_app php artisan migrate --seed
6. إنشاء مفتاح التطبيق
قم بإنشاء مفتاح تشفير التطبيق، والذي يستخدمه Laravel للتشفير الآمن:
docker exec -it laravel_app php artisan key:generate
7. قم بتشغيل التطبيق
بعد الانتهاء من إعداد كل شيء، يمكنك الآن الوصول إلى التطبيق. افتراضيًا، سيكون التطبيق متاحًا على http://localhost
:
تفضل بزيارة http://localhost
في متصفحك للتفاعل مع نظام PixWave.
تشغيل الاختبارات
يتضمن PixWave مجموعة اختبار شاملة. لإجراء الاختبارات، تأكد من أنك داخل حاوية Docker أو أن لديك بيئة محلية معدة. قم بتشغيل الأمر التالي:
docker exec -it laravel_app php artisan test
سيؤدي ذلك إلى تنفيذ اختبارات الوحدة والميزات لضمان وظائف نظام الدفع، بما في ذلك معالجة المهام، والبوابة الاحتياطية، وإدارة سجل المعاملات.
استكشاف الأخطاء وإصلاحها
تعارضات المنافذ : إذا واجهت تعارضات في المنافذ (على سبيل المثال، Redis أو MySQL قيد التشغيل بالفعل على نظامك)، فقم بتحديث ملف docker-compose.yml
لتغيير تعيينات المنافذ الافتراضية.
أخطاء الأذونات : إذا ظهرت مشكلات في الأذونات عند محاولة الكتابة إلى السجلات أو التخزين، فتأكد من أن مجلدات storage/
bootstrap/cache/
قابلة للكتابة عن طريق تشغيل:
sudo chmod -R 775 storage
sudo chmod -R 775 bootstrap/cache
إعادة تشغيل الحاوية : في حالة إعادة تشغيل الحاويات أو فشل تشغيلها، تحقق من السجلات بحثًا عن رسائل الخطأ التفصيلية:
التقنيات المستخدمة
1. الإطار الخلفي
- Laravel : يُستخدم لتطوير منطق معالجة الدفع الأساسي وتفاعلات واجهة برمجة التطبيقات (API).
2. قاعدة البيانات
- MySQL : قاعدة بيانات علائقية لتخزين تفاصيل المعاملات وبيانات المستخدم ومعلومات البوابة.
3. ذاكرة التخزين المؤقت
- Redis : طبقة التخزين المؤقت لتحسين أوقات الاستجابة وتقليل التحميل على قاعدة البيانات الأساسية.
4. المراسلة
- SNS (خدمة الإشعارات البسيطة) : تستخدم لإرسال الإشعارات غير المتزامنة والرسائل الداخلية بين الخدمات.
5. قائمة الانتظار المهمة
- Laravel Jobs : يدير معالجة المهام في الخلفية، بما في ذلك معاملات الدفع وإعادة المحاولة.
- الحاويات والتنسيق
- Docker : يضمن الاتساق عبر البيئات عن طريق وضع التطبيق في حاوية.
- Kubernetes : يتعامل مع تنسيق الحاويات وتوسيع نطاقها وفحوصات سلامة الخدمات.
7. التسجيل والمراقبة
- Logstash & Elasticsearch : يجمع السجلات ويفهرسها للمراقبة والتحليل في الوقت الفعلي.
- Kibana : يوفر واجهة مرئية لاستكشاف السجلات وتتبع أداء النظام.