Analyse de cas réel: où en réseau l'ensemble du processus de l'évolution de l'architecture du système de paiement

Auteur | Dennis Lui

Modifier | Ash

L'ensemble du processus Cet article vous dira en détail où l'évolution de l'architecture du système de paiement du réseau, qui est le centre des idées de conception de la façon dont, quel genre de fosse à gradins, ce qui a amélioré de référence, de partager différentes expériences dans le combat cas!

Où les systèmes de paiement construits depuis 2011, en cinq ans ont évolué à partir d'un système unique pour beaucoup de couplage élevé de sous-systèmes de haute concurrence, haute disponibilité, les systèmes distribués prennent en charge une variété de services de transaction de paiement. Affaires reçues de la première génération de la variété non courante de non-collection, collection de scènes soutien, les entreprises B2B à partir de zéro, à partir d'un seul réseau peut payer avec des cartes de banque d'argent maintenant, prendre des fleurs, des bons, des enveloppes, Li soustraction, l'intégration, les intérêts et autres trésors de Voyage combinaison des ordres de paiement d'unique à plusieurs commandes en même temps des paiements et des paiements multiples. Ici, sur l'évolution globale d'une introduction simple.

Système de paiement 1.0

Lorsque vous commencez une nouvelle construction de système d'entreprise, la logique métier est relativement simple, le volume d'affaires est relativement faible, afin d'être en mesure de réaliser rapidement la fonction, affichée en ligne, la plupart de l'équipe mettra toute logique dans un système couplé. Cette itération rapide initiale de l'entreprise est, il y a certains avantages. Sans exception, le système de transaction de paiement est également utilisé de cette façon. Comme le montre la figure.

Un système de paiement ne fait pas exception comprend plusieurs éléments importants: la caisse enregistreuse, transaction, passerelle de paiement, Comptes.

  • Caisse: paiement pour afficher les détails, offrant une variété de choix varié de méthodes de paiement

  • Transaction: l'acquisition de règles de traitement et des règles commerciales

  • Paiement: accord avec diverses combinaisons de paiement, telles que la carte bancaire, le solde de l'utilisateur, le crédit de paie, des fleurs de prendre, enveloppes rouges, des bons, se tenir prêt, points, etc.

  • Comptes: utilisés pour enregistrer toutes les transactions, les détails des transactions financières, la comptabilité de la comptabilité financière

  • Passerelle: pour l'amarrage banque de canaux, le canal de paiement tiers (WeChat Alipay)

Dans le petit volume d'affaires, la structure de ces systèmes ne pose aucun problème. Avec l'accès à plus d'affaires, en ajoutant une variété de fonctions logiques complexes, le système traite un peu difficile, principalement dans les domaines suivants:

  • Système des capacités de reprise après incident: Toutes les fonctions sont concentrées ensemble, mais un certain nombre de problèmes de fonction, un impact direct sur l'économie mondiale

  • extension du système: Dans un système distribué, la performance du système dépend de la pire déterminée de l'expansion globale pauvres

  • Les coûts élevés de développement: complexité accrue des membres de l'équipe, les fonctions, plusieurs projets parallèles, l'efficacité du développement est très faible

  • Plus et d'affaires plus complexe: la structure est irrationnelle, ne peut pas répondre aux besoins de développement des affaires

  • Fonctions système confusion: Si le caissier maintenir simplement une liste des banques

  • Dans certains de ces arrière-plan, le système 2.0 est né.

    Système de paiement 2.0

    ère 2.0 est de payer une importante période de développement rapide des systèmes commerciaux. Dans ce processus, non seulement divisé sur l'architecture orientée services du système, et la nécessité de soutenir les entreprises plus complexes.

    Services de Split

    passerelle de Split

    Tout d'abord, la passerelle fendue relativement indépendante, la passerelle appartiennent aux services de base sous-jacents dans le système de paiement, il est une infrastructure plus importante. Étranger comment être en mesure de fournir des services de transaction de paiement, beaucoup dépend de la construction de la capacité de la passerelle.

    Certaines caractéristiques saillantes de la passerelle, qui est un service très abstraite. Étranger peut être résumé à payer, rembourser ces normes requête de service. Par conséquent, la priorité de cette partie de la scission, en premier lieu, afin de mieux jeter une bonne base, en second lieu, il est capable d'un développement indépendant, la troisième est la mise en uvre de cette partie est relativement bonne.

    Passerelle de routage split jeu du système un rôle crucial, et le soutien des options intelligentes de paiement multi-canaux jouent un rôle énorme.

    Système split accounting

    Faites des services de paiement d'affaires, il est important de se rappeler une chose compte claire. Les documents comptables peuvent être très simples et de l'eau, peuvent également être plus professionnel à l'esprit des comptes de comptabilité financière. Dans la division juste avant que le système enregistre le flux de transactions, après la scission d'obtenir une comptabilité à double entrée plus professionnelle et sophistiquée.

    Un simple nouveau système Organigramme comptable:

    Les membres du système indépendant

    Système d'adhésion et le système commercial lui-même est seulement une dépendance sur le système de paiement de la transaction semble être juste un système d'entreprise. Par exemple, les membres de l'entreprise recharge peut être considérée comme une somme des transactions de paiement. Afin de redresser les rôles respectifs pour une partie des membres indépendants du système d'origine. De cette façon, chacun placé plus de clarté, mais aussi pour faciliter le développement indépendant. Maintenant, le système est le seul membre d'un équilibre, et la mise en place de services de nom réel, une variété de gestion d'actifs, la gestion des transactions.

    services de base fractionnés

    Après système plus indépendant à Split, quelques-unes des caractéristiques communes d'origine plusieurs copies de la répétition. Pour la commodité de la gestion centralisée et la maintenance, plus unifiée sur une logique commune de chaque système, fournissant des services d'infrastructure centralisée, tels que les services de sécurité, signe plus des services d'inspection, des services de notification, requête d'information de base, comme le montre Talos système.

    Plusieurs services plus partagés ci-dessus sont considérés comme de l'entreprise ou un lecteur technique. Le processus de paiement de la transaction typique est un processus de synchronisation. Par exemple, les commandes - > trading - > caissière - > payant - > Gateway - > Banque. Une telle séquence a également un meilleur système pour scinder le programme. Selon séquence d'un tel, nous avons ciblé pour faire une fente (passerelle d'exclusion et la section bancaire) pour chaque étape du procédé comme suit:

    1, le noyau du commerce (Apollo)

    Centré sur le mode acquisition et le type de transaction.

    Le système a reçu le soutien unilatéral des ordres de paiement, les commandes à payer. Type de transaction actuellement en charge les transactions directes, les transactions sécurisées, les transactions fendus directes et les prêts hypothécaires partagés transactions, les transactions pré-autorisées. Lorsque le paiement en vrac des commandes de tous les types de transaction peuvent être mélangés. Et le soutien opération de scission de plusieurs comptes. En plus de cette transaction type de transaction vers l'avant, le système prend également en charge un certain nombre de processus de transaction suivi, comme la confirmation d'autorisation préalable, le retrait d'une autorisation préalable, garantie de remboursement révoqué, la deuxième opérations de division.

    Une grande variété de transactions en raison de la complexité de l'activité de chaque unité d'affaires, par rapport à un système de paiement standardisé, mentionnons la prestation de services plus souples et pratique à lassistance.

    2, le noyau de paie (Minos)

    Faites attention à la combinaison et la mise en uvre du programme.

    paiement par carte bancaire, Alipay, micro lettre, prendre des fleurs, trésor Gamewave, l'équilibre, l'intégration, des enveloppes, des coupons, des enveloppes d'adhésion à tenir par divers moyens: paiement.

    Paiement des combinaisons: une seule utilisation peut également être utilisé en combinaison. combinaison de scène distinguer les types de fonds, tels que les cartes bancaires, trésor de paie, vous pouvez sélectionner un seul micro-canal, une pluralité d'autres types de fonds peuvent être utilisés simultanément.

    Avec le soutien de la fondation ont ci-dessus, pour les mêmes ordres de transactions par lots peuvent être combinés de multiples charges de paiement, tels que le séjour à l'hôtel paiement de crédit, des scénarios d'entreprise prennent de remboursement de fleurs. La figure est de verser la position centrale (Minos) dans le système:

    3, caissier

    Caissier directement aux utilisateurs, de sorte que l'expérience de paiement est essentielle. Selon les statistiques, la proportion des commandes à une partie de salaire de renoncer est encore relativement importante. Ainsi, une pratique, votre commande simple à utiliser pour la conversion de la commande est d'une grande aide. Le système prend en charge la caisse application principale (native), l'application pré-caisse, toucher, PC caisse enregistreuse préautorisés, PC plus qu'un seul registre de caisse, PC caissier anglais, PC et autres caisse standard. Caisse positions dans le système comme indiqué sur la Fig.

    Commander une connexion Wi-end:

    caisse de fin PC:

    4, la couche d'accès à l'API

    système d'échange plus de services se fait via l'interface arrière-plan, qui représente une grande partie de la proportion d'affaires de l'ensemble du système. Tels que le paiement tardif des flux de trésorerie, les remboursements d'opération inverse. Mais il y a des informations de transaction est utilisée pour interroger un certain nombre de commandes connexes. Dans ce contexte, de la manière la couche d'accès en lecture et écriture api séparée. Ci-dessous le système ares, le fond de chaque paquet fournissent divers services Dubbo service de classe de requêtes. Odin système est en lecture-écriture, mettant davantage l'accent sur le noyau écriture liées à l'entreprise, telles que la décongélation, les remboursements, la révocation.

    Jusqu'à présent, une structure générale du système tout comme indiqué ci-dessous:

    De Split apporte des défis de service

    Après le service de la structure de répartition du système plus clair, mais pour le développement de la gestion globale du système et les opérations quotidiennes de plus grands défis. Par exemple, les aspects suivants:

    Comment améliorer l'efficacité du développement

    Les principaux services fournis Dubbo et http étranger (https) système de service après division

    1. Les services convenus pour Dubbo

  • définition Interface: contrôle de la taille des particules, le contrôle des frontières. Une interface ne peut pas exister une ambiguïté, une seule

  • Paramètres standard: interfaces complexes en utilisant des objets en tant que paramètres (à la carte), d'éviter la classe mère unifiée, traversable le support des attributs étendus, fournit de créer / constructeur construire des paramètres juridiques, utiliser les paramètres de restriction d'énumération. Évitez d'appeler la mauvaise fin du paramètre passé

  • Valeur de retour: package unifié QResponse, le code de gestion des erreurs (sous forme numérique non sans ambiguïté, afin d'éviter les doubles emplois par secteur d'activité)

  • modèles d'affaires: définir les processus d'entreprise standard unifiant la gestion des exceptions

  • documentation d'interface: une bonne définition de l'interface, l'interface aux documents générés dynamiquement via annotations

  • 2. Accord de http pour les services

    a) paramètres de l'interface: la commande, la parité, une configuration du type de paramètre.

    commande l'information définie par l'interface, la requête comprenant un paramètre de retour de type de chaque paramètre, de vérifier le paramètre, le type de paramètre de validation. La vérification peut être utilisé en combinaison, peuvent être mis en uvre des extensions personnalisées. L'exemple suivant:

    Commande Définition: < commandes >   < nom de la commande = « forex_queryExchangeRate » >   < cnName > Taux de change < / CnName >   < version > 20150808 < / version >   < desc > Interrogation de la monnaie locale et l'objectif de taux de change < / Desc >   < demande >   < param name = "localCurrType" required = "true" >   < validateur id = "CURID" / >   < / PARAM >   < param name = "targetCurrType" required = "true" >   < validateur id = "CURID" / >   < / PARAM >   < / Demande >   < ! - section des paramètres de retour - >   < réponse >   < param name = "localCurrType" >   < cnName > monnaie < / CnName >   < requis > vrai < / requis >   < / PARAM >   < param name = "targetCurrType" >   < cnName > devise cible < / CnName >   < requis > vrai < / requis >   < / PARAM >   < param name = "sellingPrice" >   < cnName > Prix de vente < / CnName >   < requis > vrai < / requis >   < / PARAM >   < param name = "buyingPrice" >   < cnName > Le prix d'achat < / CnName >   < requis > vrai < / requis >   < / PARAM >   < param name = "rateTime" >   < cnName > Taux de change Temps < / CnName >   < requis > vrai < / requis >   < / PARAM >   < / Réponse >   < / commande >   < / Commandes >  vérificateur: < validateurs >   < validateur id = "CURID" type = "regex" >   < motif > ^ {3} $ < / Pattern >   < / Validator >   < / valideurs >  Paramètre Type: < paramTypes >   < Nom typeParam = « merchantCode » >   < cnName > Merchant No. < / CnName >   < desc > Utilisé pour distinguer entre les différentes entreprises < / Desc >   < type > java.lang.String < / type de >   < exemple > testbgd < / Exemple >   < type = validateur "Regex" >   < motif > ^ {} $ 1,20 < / Pattern >   < / Validator >   < / ParamType >   < / paramTypes >  

    b) le contrôle de concurrence

    Dans certains scénarios d'exploitation, il y a des problèmes pour écrire en même temps, ce temps peut être contrôlé en se basant verrouillage du cache. Par exemple, à travers l'interface pour permettre une augmentation des notes. Paramètres d'interface peuvent être spécifiés comme le lockKey de verrouillage, verrous prescrits de temps d'expiration et tentatives, et spécifier l'anomalie (lockGotExIgnore) schéma de traitement.

    @RequestLock (lockKeyPrefix = "combdaikoupay:", lockKey = "$ {} parentMerchantCode _ $ {} parentTradeNo", lockKeyParamMustExists = true, lockKeyExpireSecs = 5, lockUsedRetryTimes = 0, lockUsedRetryLockIntervalMills = 500, lockGotExIgnore = false)

    c) Contrôle de flux

    Actuellement, deux types de contrôle de flux: QPS, le nombre de parallèles.

    QPS divisé en noeuds, des grappes, des noeuds d'interface, grappe d'interface. Par le compte de demandes par seconde est réglée supérieure à une valeur de seuil prédéterminée (ajusté dynamiquement) pour refuser l'accès tout en réduisant le comptage, ou de ne pas diminuer le nombre.

    Le nombre de lignes est de résoudre le cas de demandes à travers plus d'une seconde. A ce stade, QPS remplissent les conditions, mais le trafic global par incréments, l'impact sur le débit du système. Supérieure à une valeur de seuil prédéterminée (ajusté dynamiquement) pour refuser l'accès. Chaque extrémité de la réduction du nombre de requêtes.

    d) vérification de sécurité

    Droits d'interface: accès à l'interface de gestion unifiée et l'authentification, le contrôle granulaire au visiteur, est l'accès au système, interface, numéro de version

    Interface Signature: paramètres de l'interface d'éviter la falsification qui se produisent dans le processus de transfert

    e) suivi unifiée

    Il comprend un nombre d'interface, le code d'erreur, et les statistiques de temps de réponse longue en trois dimensions

    f) documentation Interface

    ci-dessus dépendent de commande, l'étalonnage, la configuration du type de paramètre d'analyse générer

    Comment gérer plusieurs systèmes?

  • Interface Surveillance templated: http, Dubbo unifié modèle multi-système, mettant en valeur la gestion.

  • Les composants peuvent être surveillés en fonction: Redis / Memcache, mybatis, Lock, QMQ, EventBus, DataSource, JobScheduler

  • Générer panneau de surveillance automatisé: scripts de compilation Python automatisé, créez un nouveau système seulement besoin de fournir un nom et un système de nud de configuration du panneau peut générer un panneau de surveillance standard

  • ressources matérielles du système, tomcat, les indicateurs clés de la surveillance visuelle de l'entreprise

  • Comment des opérations quotidiennes efficace?

    Pour les processus critiques de la scène est sortie formatée journal, la collecte et l'élimination. Comme orderLog, UserLog, cardLog, binlog, busilog, tracelog, PageLog ...

    Services du processus de résolution dans le traitement DB

    table Points

    Avec l'augmentation du trafic, une seule table de données est trop grande, la pression de service. table de points donc impératif. Généralement utilisé conformément aux stratégies sous-table tels que le tableau de répartition temporelle, table lune, table de saison, selon certains points clés à table de hachage peuvent également être utilisés en combinaison de deux. Les avantages de la sous-table est facile de migrer les données historiques, ce qui réduit la quantité de données en ligne, la pression de Disperse table.

    Sous-bibliothèques, multi-instance

    Instance unique multi-base de données, une bibliothèque unique multi-services. Une partie des problèmes de l'entreprise aura une incidence sur la situation générale, de manière à mettre le cluster entier. Par conséquent, après la scission des systèmes d'affaires, db divisé est également un aspect important. Par exemple, un cas de paiement bibliothèque divisé. Tableau des opérations de paiement dans la même bibliothèque, parce que les problèmes de capacité du disque et des affaires a été divisé, et a donc décidé à la bibliothèque. Démantèlent Du côté sûr, nous avons adopté un programme conservateur, le premier de l'instance actuelle à faire à partir d'une bibliothèque, puis créez un nouvel utilisateur U à la nécessité de séparer de la bibliothèque, l'autorisation d'écriture pour récupérer le U de commutation, puis attendre la synchronisation maître-esclave est terminée ,, OK U écrit après le tableau correspondant ne coupe pas à la nouvelle instance. Ensuite, supprimez la table chaque bibliothèque indépendante.

    lecture séparée et écriture, lecture d'équilibrage de charge

    Beaucoup de petites lectures d'affaires et de l'écriture, en utilisant la structure MMM, essentiellement un seul ralenti et ne favorise pas la stabilité du groupe tout au travail, non seulement des ressources. L'introduction de la lecture séparée et d'écriture, de lecture est responsable de la politique d'équilibre. L'utilisation efficace des ressources matérielles et de réduire la pression sur chaque serveur.

    a) écriture équilibrage de charge

    b) une source dynamique

    c) lecture d'équilibrage de charge dynamique de la bibliothèque multi-source

    L'induction de l'utilisation

  • servlet3 asynchrone: http fil pour libérer le débit global pour améliorer le système, peut isoler travailleur différents services

  • qmq: Le asynchrone le plus utilisé et plus flexible

  • Dubbo: Pour le fournisseur de services a une réponse lente

  • servlet asynchrone et scénario de liaison qmq est illustré ci-dessous. Http service pour le processus de combinaison à la demande de débit, puis au système back-end et lancer débit transaction, cette fois-service http est entré dans l'attente du scrutin, le moment de lancer le cache en fonction des résultats de l'intervalle d'interrogation de débit de requête. Selon les règles du système commercial à la charge conducteur de façon qmq chargé jusqu'à la fin tous les processus (succès, échec, paiement partiel). La fin de chaque charge se traduira dans le cache pour les requêtes de service http.

    Comme scénarios utilisés ci-dessus sont interrogés, la clé est de déterminer l'intervalle d'interrogation

    Surveillance et alarme

    module de surveillance Java

    Dans les applications embarquées, les données d'index peuvent être configurés pour transmettre de manière flexible une pluralité de manière locale. soutient également l'api des données de traction directe

    cadre de suivi hors-ligne

  • python cadre de script moniteur, db, un module API Java, REDIS analogue pour obtenir des données à partir de, et de l'indice d'émission calculée

  • L'architecture globale du bouchon, des caractéristiques standard universel, peut également être personnalisé développement

  • Les indicateurs peuvent être poussés directement au système de surveillance watcher (tableau de bord) à la page add

  • Alarme a mail, SMS, Qtalk

  • Le principal script python cadre de suivi est composé de quatre éléments clés:

  • metric_manager: gestionnaire d'index

  • graphite_sender: Appuyez index

  • Dbpool: gestion de la mise en commun de connexion de base de données

  • Planificateur: Le planificateur, le calendrier des indicateurs de performance d'acquisition de données

  • Système de flux de données

    En utilisant xflume, kafka, tempête, HDFS, HBase, Redis, journal d'affaires ruche, la collecte et le traitement binlog temps réel. Fournir les journaux opérationnels, calculer et alarme magasin Commande journal du cycle de vie, les différentes requêtes de mise en forme du journal et certains des indicateurs de suivi. Dans l'ensemble processus général comme indiqué ci-dessous:

    alarme

    Après la structure de service et d'alarme de la complexité du système est particulièrement important. Le dépistage est de déterminer quels indicateurs alarme doit et le seuil d'alarme est une question très complexe. Il y a deux cas: on est explicitement considéré comme semble pas, et l'autre exige un certain calculs pour déterminer si l'alarme ou non. Bien sûr, quelques-uns des problèmes de service de couche de base peut conduire à une réaction en chaîne, alors comment identifier le problème le plus immédiat à la police, au désordre d'éviter l'impact rapporté est plus difficile à juger les choses. Compte tenu de cette situation, le système à l'échelle actuelle rapport est sorti, alors le jugement de base en vertu artificielle, comme les interfaces d'alarme de réponse lente, cette fois-ci est apparu alarme DB de requête lente, qui peut en principe confirmer que le problème DB.

    A, alarme clair d'échec

    Connexion NPE, soldent par un échec, erreur système, Access (4xx \ 5xx), les interfaces anormales, délai d'attente de Dubbo, fullgc, requête DB lente

    B, est calculée sur la base d'alarme

    Très peu d'appels, les fluctuations de détail, il n'y a pas de continuité, ayant aucun contraste

    Expect: Comme indiqué ci-dessous, l'augmentation de la valeur actuelle d'un écart de valeur de consigne

    Écrit dans la dernière

    Jusqu'à présent, payer pour la transaction du système de caisse enregistreuse, transaction, le paiement, la passerelle de partage, la comptabilité, les services de base, le suivi de chaque module et un développement sonore indépendant, les services de soutien à l'accès très complexe et très concurrente à beaucoup de puissants par rapport à la précédente. Mais il y a beaucoup de lacunes à améliorer et mis au point.

    Nous continuons d'attendre la transaction à payer 3,0 ......

    Cet article est Qunar technologie Sharon article original, a autorisé la diffusion publique du numéro de renvoi.

    Les auteurs introduisent

    Dennis Lui, où le réseau de la recherche financière et ingénieur de la division de développement, diplômé de l'Université de Jilin en 2012, Jia Ru où le réseau. Nous nous engageons à payer pour le développement de la plate-forme de services de base et des liens de construction payés.

    texte recommandé aujourd'hui

    Cliquez ci-dessous pour lire l'image

    Yao Xing, vice-président de Tencent, pour parler de l'IA: espoir et inquiétude

    De telles opérations centre conçu pour Win 10, vous l'aimez?
    Précédent
    Après mari spectacle doux de Yao Chen d'affection, il a quitté Xiao Ling Su lui vivre une plus excitante
    Prochain
    190322 Xi Yi mille magie de visage changeant l'expression a réussi à sortir oh collection
    animation de Disney « Wreck-It Ralph 2 » est le plus oeuf analytique complet! De Star Wars à diffuser Weipikesi
    « Famille heureuse » fin, a été interrogé amis caractère Roy Chiu dans cette pièce en agissant contre-attaque
    Panda diverses musiques folkloriques montrent le charme du Sichuan Culture Voyage fasciné Espagne
    Nintendo Quelle est la base principale du commutateur de fonction est?
    Plusieurs années plus tard Deng Chao Chen Kun à nouveau sur la même atmosphère de la scène, Chen Kun Deng Chao considérablement gêné dit les mots tristes
    Chorégraphe sauvé un nombre incalculable d'équipe féminine reine Pei Yunjing, l'équipe de ses propres femmes est maintenant comment ça va?
    "Wreck-It Ralph 2" super départ en Amérique du Nord ou "Frozen", "Robin des Bois" se sont précipités
    Après la Nouvelle-Écosse a annoncé sur les étrangers qui a poussé et la station soupe spéciale jouant mauvais
    « Je suis un acteur, » Han Xue de remporter le championnat, mais il a été remis en question: si son classement à son nom?
    De programmeur ordinaire à trois cents personnes équipe CTO, les techniciens ne sont pas faciles à cultiver et facile
    Bi Ying propagande de grande envergure «mais aussi pour le distinguer de coller ensemble, » qui a donné son courage?