假设您使用您的卡在超市付款。 现在您在家,有一段时间没出门了,您从银行收到一条消息,说明您已借记 20000 美元。 如何? 你买的东西只花了你120美元! 这将需要与您的银行进行长时间的验证,并且银行可能需要几个月的时间来追踪和解决欺诈性交易。
如果系统中加入欺诈检测机制,能够实时识别并阻止无效交易,将会大大简化流程。全球支付欺诈造成的损失预计每年将超过 40 亿美元,因此延迟造成的损失已不堪设想。然而,这一决策必须即时做出,并且系统应根据用户的历史行为不断进行自我训练。因此,您不能指望客户在柜台等待,而您的欺诈检测系统却需要时间来检测异常情况。您需要一个高效且快速的系统。如果您使用缓存等技术将数据存储在内存中,就能实现这一点。 NCache 并在几毫秒内处理它。
关键要点:
亚毫秒级处理: NCache 通过将数据存储在内存中,消除了数据库瓶颈,从而可以在实时交易期间的几毫秒内进行欺诈检测。
解耦架构: 运用 NCache 发布/订阅消息总线将交易管理与欺诈逻辑分离,从而确保高吞吐量和系统可扩展性。
三层逻辑: 该系统通过将数据输入离线处理进行持续的机器学习模型训练,从而平衡即时检测(近实时系统)和长期准确性。
状态跟踪: 分布式数据结构 (如列表)维护实时客户行为历史记录,从而实现即时模式识别和异常检测。
非阻塞持久化: 写后缓存可确保数据库异步更新,防止磁盘 I/O 降低实时用户体验。

图 1:高性能事件驱动型欺诈检测架构 NCache
通常,欺诈检测系统包含三个子系统,如图 1 所示:
- 近实时 (NRT) 系统: 该系统处理输入并使用预定义的模式和规则生成结果,而不是执行实际计算。 此外,结果必须以毫秒为单位,因为它直接响应用户。 该系统的主要目的是高吞吐量和低延迟,这意味着该系统应该理想地位于本地内存中以实现更高的性能。
- 输入处理系统: 该系统可能需要几分钟到几小时来处理输入和调整 NRT 系统的参数。 这些更新的信息被馈送到离线处理系统,进一步处理机器学习算法。
- 离线处理系统 该系统可能需要数小时到数月才能做出响应。 该系统改进模型、训练数据,并将升级后的数据反馈给 NRT 系统以获得更好的结果。
NCache 作为内存缓存和发布/订阅消息总线
NCache 是一种内存分布式缓存,提供强大的 Pub/Sub 消息传递和其他功能,例如分布式数据结构。 关注欺诈检测系统中涉及的系统, NCache 无缝适合近实时系统,因为它需要超快的结果。 这是可能的 NCache 可用于多个元素之间的通信以及存储离应用程序最近的数据,进一步减少获取数据的网络调用。
我们在 .NET 中创建了一个示例欺诈检测系统,其中包括 NCache 以提高性能和吞吐量。 您可以找到工作样本 在 GitHub 上.
在上层,应用程序是这样工作的:
- 客户端应用程序与管理给定客户交易的交易请求管理器进行通信。
- 交易信息作为消息发布给 发布/订阅主题.
- Fraud Detection Manager 订阅此主题并接收交易消息。
- 对项目执行欺诈检测逻辑,并将结果发送到事务管理器,然后再发送回客户端应用程序。
- 客户信息然后使用缓存存储在缓存中 分布式数据结构 比如列表。 这将有助于更轻松地做出未来交易的决策。
- 数据使用持久化在数据库中 后写.
使用 Pub/Sub 管理事务
事务请求管理器使用缓存进行初始化。 事务请求管理器将事务创建为消息并将其发布到其主题。
|
1 2 3 4 5 |
public void CreateRelevantSubscription() { MessageReceivedCallback transactionmessageReceivedCallback = new TransactionCompletedMessage(this).MessageReceivedCallback; transactionSubscription = base.CreateRelevantSubscriptions(Topics.REPLIESTOPICS, transactionmessageReceivedCallback); } |
每当通过交易请求管理器进行交易时,它首先从客户信息中创建一条消息,然后将其作为交易主题的消息发布。 该主题由欺诈检测管理器订阅,它接收消息并对传入的消息执行欺诈检测逻辑,并将结果发送回事务请求管理器。
|
1 2 3 4 5 |
// Sending messages on the respective topic if (customer != null) { ncache.PublishMessageOnTopic(Topics.TRANSACTIONTOPICS, CreateTransactionFromCustomer(customer), null); } |
实时检测欺诈
欺诈检测器作为事件驱动型处理器,通过将传入的交易模式与存储在内存中的历史基准进行比较,执行实时异常检测。它管理所有验证逻辑,并与服务器保持持久的低延迟连接。 NCache 集群。欺诈检测管理器通过在集群中创建一个主题来初始化。 NCache 并订阅此主题。 欺诈检测管理器主题的回调存在于事务请求管理器逻辑中,因为它将欺诈检测逻辑的结果发送回事务请求管理器。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public void InitiliazeFraudManager() { base.CreateRelaventTopics(Topics.REPLIESTOPICS); base.CreateRelaventTopics(Topics.TRANSACTIONTOPICS); CreateRelevantSubscription(); } public void CreateRelevantSubscription() { // Initializes the relevant subscribers with their callbacks MessageReceivedCallback transacionManagermessageReceivedCallback = new StartTransactionMessage(this).MessageReceivedCallback; transactionSubscription = base.CreateRelevantSubscriptions(Topics.TRANSACTIONTOPICS, transacionManagermessageReceivedCallback); } |
在执行欺诈检测逻辑期间,系统遵循高密度验证序列:
- 状态核实: 客户数据从内存缓存中检索。
- 历史核查: 系统会验证上次缓存的交易是否被标记为欺诈交易。如果是,则当前交易立即失败。
- 模式分析: 如果没有立即出现危险信号,系统会将已学习的逻辑应用于当前数据。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if (customerInfo != null) { if (learntLogic.FraudFoundInLastTransactions(transactionMessage, customerInfo)) { result = Result.Faliure; } } if (result != Result.Faliure) { bool isValid = learntLogic.IsTransactionValid(transactionMessage); if (!isValid) result = Result.Suspicious; } |
在这个学习的逻辑中,我们使用多个因素来确定交易的有效性。 我们检查交易是否源自有效的 IPAddress 和位于正确域中的有效电子邮件地址。 此外,该电子邮件不应存在于一系列可疑电子邮件中。 还会检查交易是否来自任何可疑位置。 如果上述任何一个标准失败,则失败权重增加。 如果失败权重大于决策权重,则交易无效。 你可以找到这个的代码 GitHub 上的逻辑.
缓存结果并将其保存到数据库
声明结果后,将在缓存中添加/更新结果。
|
1 2 |
FraudRequest fraudRequest = CreateFraudRequest(transactionMessage, result); ncache.UpdateCustomerInfoInCache(customerkey, fraudRequest); |
缓存是为数据源配置的。 为了在内存集群中存储客户信息,我们使用了 NCache“ 分布式列表,这是分布式数据结构之一。 客户的信息也使用持久化到数据库中 后写,它异步更新客户信息。
|
1 2 3 4 5 6 7 8 9 10 11 |
IDistributedList list = cache.DataTypeManager.GetList(key); if (list == null) AddCustomerInCache(key, null, cutomerInfo); else { // Update info of a customer against its id list.WriteThruOptions = new WriteThruOptions(WriteMode.WriteBehind); list.Add(cutomerInfo); } |
缓存后,会根据该结果创建一条新消息,并将其发布回事务请求管理器订阅的主题上。 它接收消息并将结果发布回客户端应用程序。
结语
NCache 是一个分布式内存 .NET 缓存,它具备发布/订阅、分布式数据结构、数据源提供程序等多种功能。通过提供原生 .NET 技术栈, NCache 它消除了其他缓存方案中存在的序列化开销,使其成为高风险欺诈检测的理想选择,因为在这种场景下,每一毫秒都至关重要。将数据存储和处理在本地内存中的目的是消除网络传输的成本,因为所有处理都在缓存中完成,结果随后会更新到数据库中。
常见问题
问:欺诈检测管理器如何识别可疑交易?
答:它会检查交易是否来自有效的 IP 地址、可信的电子邮件域或已知的地理位置,从而计算出一个累积的“失败权重”。如果总权重超过特定阈值,则该交易会被标记。
问:如果一笔交易在前一次交易中被标记为“欺诈交易”,会发生什么情况?
答:系统会从内存缓存中检索客户记录,执行历史状态检查。如果最近一次交易存在欺诈行为,系统会在执行后续逻辑之前立即判定当前尝试失败。
问:为什么 NCache 此逻辑是否使用标准关系型数据库代替?
答:标准数据库通常需要磁盘 I/O,这对于实时计数器来说太慢了。 NCache 通过将数据保存在本地内存中,提供“极快”的结果,这对于防止顾客在销售点等待至关重要。
问:机器学习模型是如何随着时间推移而改进的?
答:该系统采用离线处理系统。该层从实时环境中获取数据,以改进模式并重新训练机器学习算法,然后将升级后的逻辑反馈到近实时(NRT)系统中。
问:系统做出决定后如何处理交易结果?
答:一旦欺诈检测器得出结果,它就会更新客户信息。 NCache 分布式列表。然后,通过发布/订阅主题将消息发布回事务请求管理器,以通知客户端应用程序。







喜欢阅读上面的文章,真的很详细地解释了一切,这篇文章非常有趣和有效。 谢谢你,祝你接下来的文章好运。