كيف أخرجنا الاحتيال من الكوخ

اسمي نيكيتا ، أنا مطور خلفية من فريق مكافحة الاحتيال في Citimobil. سأشارككم اليوم قصة حول كيفية نقل خدمتنا من متراصة إلى خدمة منفصلة ، وكيف توصلنا إلى هذا القرار والمشكلات التي واجهناها.


في البداية ، سأتحدث قليلاً عن خدمتنا.


مكافحة الاحتيال 101


مكافحة الاحتيال لدينا هي مجموعة من القواعد لتحديد الطلبات التي تحتوي على علامات الاحتيال وأنماط الاحتيال.


مثال على الاحتيال في القيادة

, , , - . , n . , , , .


مثال عن احتيال العميل

. - , .


للتحقق من السائق للاحتيال ، نقوم بتشغيل جميع الشيكات ونتيجة لذلك نحصل على أحداث ، كل منها يشير إلى وجود النمط المطلوب في الطلبات المقدمة إلى الإدخال.


يمكن تقسيم الشيكات إلى عدة أنواع:


  1. التحقق من العميل / السائق لمعرفة أي تغيير (على سبيل المثال ، إضافة بطاقة ائتمان جديدة).
  2. تحقق من 1..n الطلبات الأخيرة.
  3. خاص: التحقق من التشغيل الصحيح للسائقين المشاركين في أحداث معينة.

لتكوين القواعد ، هناك واجهة ويب - "لوحة المشرف". وللتحكم البصري في القواعد التي تم تشغيلها ، أنشأنا صفحة ويب تحتوي على تقارير مختلفة مع مجموعة كبيرة من الفلاتر.


: , , , . .



- .


PHP . , . , .


«» , : , , .


. , , , JOIN- , .


, . « » ( ).


:


  • , . .
  • , .

. Golang, .


.


:


(, , ). , . .


, .


: 6 , 25 .


:


OLTP- , OLAP- . , «».


:


  1. SQL ( ) , ClickHouse’ .
  2. Elastic’.

Elastic. , « » , . , JOIN’ Elastic’.


Elastic , . Elastic . 2xx. (, ), allow_partial_search_results.



, , , , MySQL. RabbitMQ, .


RabbitMQ, , . .


, MySQL, , Elastic, . lock Redise, , , . .



REST API.


.



:


  1. Elastic , , refresh , . , ?
  2. MySQL ?

.

RabbitMQ ( ), — (retry).


producer, consumer’. dead-letter: TTL , .


, , , retry-, . , .


.

— refresh . Elasticsearch , .


: , . , , . , , .


, , ? , - , . , retry-?


TTL retry- Elastic, .


dead-letter .



: . 100% . testify, mock’ . , .



, . -, .


, , , NDA. .


, , , .

Source: https://habr.com/ru/post/undefined/


All Articles