我叫Nikita,我是Citimobil反欺诈团队的后端开发人员。今天,我将与您分享一个故事,讲述我们如何将我们的服务从整体转移到单独的服务,我们如何做出此决定以及遇到什么问题。
首先,我将简要介绍我们的服务。
反欺诈101
我们的反欺诈是一套用于识别包含欺诈迹象,欺诈模式的订单的规则。
为了检查驱动程序是否存在欺诈,我们运行所有检查,结果得到事件,每个事件都指示提交给输入的订单中是否存在所需模式。
支票可以分为几种类型:
- 检查客户端/驱动程序是否有任何更改(例如,添加了新的信用卡)。
- 检查1..n最近的订单。
- 特殊:检查参加特定事件的驾驶员的正确操作。
要配置规则,有一个Web界面-“管理面板”。为了直观地控制触发的规则,我们创建了一个网页,其中包含带有大量过滤器的不同报告。
: , , , . .
- .
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. .
, , , .