我们如何摆脱欺诈

我叫Nikita,我是Citimobil反欺诈团队的后端开发人员。今天,我将与您分享一个故事,讲述我们如何将我们的服务从整体转移到单独的服务,我们如何做出此决定以及遇到什么问题。


首先,我将简要介绍我们的服务。


反欺诈101


我们的反欺诈是一套用于识别包含欺诈迹象,欺诈模式的订单的规则。


驾驶欺诈示例

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


客户欺诈示例

. - , .


为了检查驱动程序是否存在欺诈,我们运行所有检查,结果得到事件,每个事件都指示提交给输入的订单中是否存在所需模式。


支票可以分为几种类型:


  1. 检查客户端/驱动程序是否有任何更改(例如,添加了新的信用卡)。
  2. 检查1..n最近的订单。
  3. 特殊:检查参加特定事件的驾驶员的正确操作。

要配置规则,有一个Web界面-“管理面板”。为了直观地控制触发的规则,我们创建了一个网页,其中包含带有大量过滤器的不同报告。


: , , , . .



- .


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