Disons que vous payez dans un magasin avec votre carte. Vous êtes maintenant chez vous, vous n'êtes pas sorti depuis un moment et vous recevez un message de votre banque indiquant que vous avez débité 20000 120 $. Comment? Ce que vous avez acheté ne vous a coûté que XNUMX $ ! Cela impliquera un long processus de vérifications auprès de votre banque, et la banque peut prendre des mois pour retrouver et résoudre la transaction frauduleuse.
Il serait bien plus simple d'intégrer un mécanisme de détection de fraude au système afin qu'il identifie et bloque les transactions invalides en temps réel. Avec des pertes mondiales dues à la fraude aux paiements qui devraient dépasser 40 milliards de dollars par an, le coût du retard n'est plus acceptable. Toutefois, cette décision doit être instantanée et le système doit s'auto-apprendre en permanence en fonction des comportements passés des utilisateurs. Par conséquent, il est impensable de faire patienter les clients au guichet pendant que le système de détection de fraude analyse une anomalie. Il est donc indispensable de disposer d'un système à la fois performant et rapide. Ceci est possible grâce au stockage des données en mémoire cache. NCache et traitez-le en quelques millisecondes.
Principaux plats à emporter:
Traitement en moins d'une milliseconde : NCache Élimine les goulots d'étranglement des bases de données en stockant les données en mémoire, permettant ainsi une détection des fraudes en quelques millisecondes lors d'une transaction en direct.
Architecture découplée : L'utilisation de NCache En tant que bus de messagerie Pub/Sub, il sépare la gestion des transactions de la logique de lutte contre la fraude, garantissant un débit élevé et une évolutivité du système.
Logique à trois niveaux : Le système équilibre la détection instantanée (système NRT) avec la précision à long terme en alimentant le traitement hors ligne en données pour un entraînement continu du modèle ML.
Suivi avec état : Structures de données distribuées (comme les listes) conservent l'historique du comportement des clients en temps réel, permettant une reconnaissance instantanée des modèles et une détection des anomalies.
Persistance non bloquante : La mise en cache en écriture différée garantit que la base de données est mise à jour de manière asynchrone, évitant ainsi que les E/S disque ne ralentissent l'expérience utilisateur en temps réel.

Figure 1 : Architecture de détection de fraude événementielle haute performance optimisée par NCache
Généralement, un système de détection de fraude contient trois sous-systèmes, comme illustré à la figure 1 :
- Système en temps quasi réel (NRT) : Ce système traite l'entrée et les résultats sont générés à l'aide de modèles et de règles prédéfinis, au lieu d'effectuer le calcul proprement dit. De plus, les résultats doivent être en millisecondes car il répond directement à l'utilisateur. L'objectif principal de ce système est un débit élevé avec une faible latence, ce qui signifie que ce système devrait idéalement être dans la mémoire locale pour obtenir des performances plus élevées.
- Système de traitement des entrées : Ce système peut prendre de quelques minutes à plusieurs heures pour traiter l'entrée et ajuster les paramètres du système NRT. Ces informations mises à jour sont transmises au système de traitement hors ligne, qui traite ensuite les algorithmes d'apprentissage automatique.
- Système de traitement hors ligne Ce système peut prendre des heures à des mois, pour répondre. Ce système améliore le modèle, entraîne les données et renvoie ces données mises à niveau au système NRT pour de meilleurs résultats.
NCache en tant que cache en mémoire et bus de messagerie Pub/Sub
NCache est un cache distribué en mémoire qui offre une puissante messagerie Pub/Sub et d'autres fonctionnalités telles que les structures de données distribuées. En gardant à l'esprit les systèmes impliqués dans un système de détection de fraude, NCache s'intègre parfaitement dans le système en temps quasi réel car il nécessite des résultats extrêmement rapides. Ceci est possible comme NCache peut être utilisé pour la communication entre plusieurs éléments ainsi que pour stocker les données les plus proches de votre application, ce qui réduit encore les appels réseau pour récupérer les données.
Nous avons créé un exemple de système de détection de fraude dans .NET qui comprend NCache pour améliorer les performances et le débit. Vous pouvez trouver l'échantillon de travail ici sur GitHub.
À un niveau supérieur, l'application fonctionne comme telle :
- L'application cliente communique avec le gestionnaire de demande de transaction qui gère la transaction du client donné.
- Les informations sur la transaction sont publiées sous forme de message au Sujet Pub/Sub.
- Le gestionnaire de détection de fraude s'abonne à ce sujet et reçoit le message de transaction.
- La logique de détection de fraude est effectuée sur l'article et le résultat est envoyé au gestionnaire de transaction qui est renvoyé à l'application cliente.
- Les informations client sont ensuite stockées dans le cache à l'aide de Structures de données distribuées telles que les listes. Cela aidera à prendre des décisions sur les transactions futures beaucoup plus facilement.
- Les données sont conservées dans la base de données à l'aide de Écriture derrière.
Gérer les transactions avec Pub/Sub
Le Transaction Request Manager est initialisé avec le cache. Transaction Request Manager crée la transaction sous forme de message et la publie dans sa rubrique.
|
1 2 3 4 5 |
public void CreateRelevantSubscription() { MessageReceivedCallback transactionmessageReceivedCallback = new TransactionCompletedMessage(this).MessageReceivedCallback; transactionSubscription = base.CreateRelevantSubscriptions(Topics.REPLIESTOPICS, transactionmessageReceivedCallback); } |
Chaque fois qu'une transaction est effectuée via le gestionnaire de demandes de transaction, il crée d'abord un message à partir des informations client, puis le publie sous forme de message sur le sujet de la transaction. Cette rubrique est souscrite par le Fraud Detection Manager, qui reçoit le message et exécute la logique de détection de fraude sur le message entrant et renvoie les résultats au Transaction Request Manager.
|
1 2 3 4 5 |
// Sending messages on the respective topic if (customer != null) { ncache.PublishMessageOnTopic(Topics.TRANSACTIONTOPICS, CreateTransactionFromCustomer(customer), null); } |
Détecter la fraude en temps réel
Le détecteur de fraude fonctionne comme un gestionnaire d'événements, effectuant une détection d'anomalies en temps réel en comparant les modèles de transactions entrantes à des données de référence historiques stockées en mémoire. Il gère toute la logique de vérification et maintient une connexion persistante à faible latence avec le système. NCache cluster. Le gestionnaire de détection des fraudes est initialisé en créant un sujet dans NCache et abonnez-vous à ce sujet. Le rappel pour la rubrique du gestionnaire de détection de fraude existe dans la logique du gestionnaire de demande de transaction car il renvoie les résultats de la logique de détection de fraude au gestionnaire de demande de transaction.
|
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); } |
Lors de l'exécution de la logique de détection des fraudes, le système suit une séquence de vérification à haute densité :
- Vérification d'État : Les données client sont récupérées à partir du cache en mémoire
- Vérification historique : Le système vérifie si la dernière transaction mise en cache a été signalée comme frauduleuse. Si tel est le cas, la transaction en cours est immédiatement annulée.
- Analyse de modèle : En l'absence de signaux d'alerte immédiats, le système applique une logique apprise aux données actuelles.
|
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; } |
Dans cette logique apprise, nous utilisons plusieurs facteurs pour déterminer la validité de la transaction. Nous vérifions si une transaction provient d'une adresse IP valide et d'une adresse e-mail valide qui se trouve dans un domaine approprié. De plus, l'e-mail ne doit pas exister dans une série d'e-mails suspects. Il est également vérifié si la transaction provient d'un endroit suspect. Si l'un des critères ci-dessus échoue, le poids d'échec est incrémenté. Si le poids d'échec est supérieur au poids de décision, la transaction est invalide. Vous pouvez trouver le code pour cela logique sur GitHub.
Mettre en cache les résultats et les conserver dans la base de données
Une fois le résultat déclaré, le résultat est ajouté/mis à jour dans le cache.
|
1 2 |
FraudRequest fraudRequest = CreateFraudRequest(transactionMessage, result); ncache.UpdateCustomerInfoInCache(customerkey, fraudRequest); |
Le cache est configuré pour la source de données. Pour stocker les informations client dans le cluster en mémoire, nous avons utilisé NCache's listes distribuées, qui sont l'une des structures de données distribuées. Les informations des clients sont également conservées dans la base de données à l'aide de Écriture derrière, qui met à jour de manière asynchrone les informations client.
|
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); } |
Une fois mis en cache, un nouveau message est créé à partir de ce résultat et republié sur le sujet souscrit par le gestionnaire de demandes de transaction. Il reçoit le message et publie le résultat dans l'application cliente.
Conclusion
NCache est un cache .NET distribué en mémoire doté de nombreuses fonctionnalités telles que Pub/Sub, les structures de données distribuées, les fournisseurs de sources de données et bien plus encore. En proposant une pile .NET native, NCache Cette solution élimine la surcharge liée à la sérialisation, présente dans d'autres systèmes de mise en cache, ce qui en fait le choix idéal pour la détection de fraudes critiques où chaque milliseconde compte. Le stockage et le traitement des données en mémoire locale permettent de supprimer les coûts de transfert réseau, puisque tout le traitement est effectué via le cache et les résultats sont ensuite mis à jour dans la base de données.
Questions fréquentes
Q : Comment le gestionnaire de détection des fraudes identifie-t-il les transactions suspectes ?
A : Il calcule un « poids d'échec » cumulatif en vérifiant si la transaction provient d'une adresse IP valide, d'un domaine de messagerie de confiance ou d'une localisation géographique connue. Si le poids total dépasse un seuil spécifique, la transaction est signalée.
Q : Que se passe-t-il si une transaction est signalée comme « frauduleuse » lors d'une session précédente ?
A : Le système effectue une vérification de l'historique en récupérant l'enregistrement du client depuis le cache en mémoire. Si la dernière transaction était frauduleuse, le système interrompt immédiatement la transaction en cours avant d'exécuter la suite du traitement.
Q: Pourquoi est NCache Utilisée à la place d'une base de données relationnelle standard pour cette logique ?
A : Les bases de données standard nécessitent souvent des E/S disque, ce qui est trop lent pour les compteurs en temps réel. NCache Elle offre des résultats « ultra-rapides » en conservant les données en mémoire locale, ce qui est essentiel pour éviter que les clients n'attendent au point de vente.
Q : Comment le modèle d'apprentissage automatique est-il amélioré au fil du temps ?
A : Le système utilise un système de traitement hors ligne. Cette couche exploite les données de l'environnement réel pour améliorer les modèles et réentraîner les algorithmes d'apprentissage automatique, puis réinjecte la logique mise à jour dans le système quasi temps réel (NRT).
Q : Comment le système gère-t-il les résultats de la transaction une fois la décision prise ?
A : Une fois que le détecteur de fraude a annoncé un résultat, il met à jour les informations du client dans un NCache Liste de diffusion. Un message est ensuite publié et renvoyé au gestionnaire de requêtes de transaction via un sujet Pub/Sub afin d'en informer l'application cliente.







J'ai bien aimé lire l'article ci-dessus, explique vraiment tout en détail, l'article est très intéressant et efficace. Merci et bonne chance pour les prochains articles.