اسمي نيكيتا ، أنا مطور خلفية من فريق مكافحة الاحتيال في Citimobil. سأشارككم اليوم قصة حول كيفية نقل خدمتنا من متراصة إلى خدمة منفصلة ، وكيف توصلنا إلى هذا القرار والمشكلات التي واجهناها.
في البداية ، سأتحدث قليلاً عن خدمتنا.
مكافحة الاحتيال 101
مكافحة الاحتيال لدينا هي مجموعة من القواعد لتحديد الطلبات التي تحتوي على علامات الاحتيال وأنماط الاحتيال.
مثال على الاحتيال في القيادة للتحقق من السائق للاحتيال ، نقوم بتشغيل جميع الشيكات ونتيجة لذلك نحصل على أحداث ، كل منها يشير إلى وجود النمط المطلوب في الطلبات المقدمة إلى الإدخال.
يمكن تقسيم الشيكات إلى عدة أنواع:
- التحقق من العميل / السائق لمعرفة أي تغيير (على سبيل المثال ، إضافة بطاقة ائتمان جديدة).
- تحقق من 1..n الطلبات الأخيرة.
- خاص: التحقق من التشغيل الصحيح للسائقين المشاركين في أحداث معينة.
لتكوين القواعد ، هناك واجهة ويب - "لوحة المشرف". وللتحكم البصري في القواعد التي تم تشغيلها ، أنشأنا صفحة ويب تحتوي على تقارير مختلفة مع مجموعة كبيرة من الفلاتر.
: , , , . .
- .
PHP . , . , .
«» , : , , .
. , , , JOIN- , .
, . « » ( ).
:
. Golang, .
.
:
(, , ). , . .
, .
: 6 , 25 .
:
OLTP- , OLAP- . , «».
:
- SQL ( ) , ClickHouse’ .
- Elastic’.
Elastic. , « » , . , JOIN’ Elastic’.
, , , , MySQL. RabbitMQ, .
RabbitMQ, , . .
, MySQL, , Elastic, . lock Redise, , , . .

REST API.
.
:
- Elastic , , refresh , . , ?
- MySQL ?
.
RabbitMQ ( ), — (retry).
producer, consumer’. dead-letter: TTL , .
, , , retry-, . , .
.
— refresh . Elasticsearch , .
: , . , , . , , .
, , ? , - , . , retry-?
TTL retry- Elastic, .
dead-letter .
: . 100% . testify, mock’ . , .
, . -, .
, , , NDA. .
, , , .