当前位置:网站首页>Analyse approfondie de la conception du système relationnel du Groupe de cercles

Analyse approfondie de la conception du système relationnel du Groupe de cercles

2022-06-11 14:36:00 Netease Cloud letter

Guide de lecture:Netease Cloud Xin Xinjin IM Produits topstream「Groupe de cercles」Une grande attention a été accordée après le départ,De nombreux clients de Cloud Credit se connectent à「Groupe de cercles」Les détails techniques et les principes sous - jacents de,À cette fin,,Nous avons décidé de lancer Cloud letter「Groupe de cercles」Série d'articles techniques connexes,Partager Netease Cloud letter à「Groupe de cercles」Quelques réflexions sur la conception technique.

Caractéristiques de l'entreprise

Un mot qui prévaut dans l'industrie de l'Internet,La technologie est au service des entreprises.Concrètement dans la pratique,Un aspect important est la conception de solutions techniques axées sur les caractéristiques de l'entreprise.Donc,,Pour comprendre「Groupe de cercles」Conception du système relationnel,Il faut d'abord comprendre「Groupe de cercles」Relations avec les caractéristiques commerciales.

「Groupe de cercles」Quelles sont les caractéristiques de l'entreprise relationnelle?L'un est la complexité des relations,C'est - à - dire qu'il y a beaucoup de sujets de relation、Mécanisme de gestion divers、Poids de couplage de liaison;L'autre est l'énorme,C'est - à - dire que le nombre de membres peut atteindre l'échelle des millions、Le lot de changement peut atteindre un million de magnitudes.

Ce qu'on appelleRelations complexes,Plus précisément:Premièrement, il y a beaucoup de sujets relationnels.In「Groupe de cercles」En affaires,Le principal de la relation comprend le serveur、Channel、Groupe d'identification、Groupes de canaux, etc,Le serveur héberge les relations communautaires,Responsable du maintien de l'adhésion communautaire;Le canal est subordonné au serveur,Relations de contenu porteuses,Responsable de la maintenance des interactions de contenu;Les groupes d'identité peuvent être subordonnés à un serveur ou à un canal,Relation d'autorisation d'identité du transporteur,Responsable de la configuration de l'identité et des permissions;Les paquets de canaux sont subordonnés au serveur,Associer un autre groupe de canaux,Relations du modèle de canal porteur,Responsable de la classification des canaux et de la configuration partagée.Deuxièmement, le mécanisme de gestion est compliqué.In「Groupe de cercles」En affaires,Uniquement en ce qui concerne les mécanismes de gestion des membres,Les membres du serveur prennent l'invitation/Mécanisme de demande, Les membres du canal adoptent la publicité / Mode privé +Noir/Mécanisme de la liste blanche, Les membres du Groupe d'identité adoptent l'adhésion / Mécanisme de retrait , Les membres du Groupe de canaux et les membres du canal adoptent un mécanisme de synchronisation . Enfin, couplage de liaison .In「Groupe de cercles」En affaires, Prenons l'exemple de la maintenance des membres du canal , Les membres de la chaîne ne sont pas seulement rendus publics / Mode privé +Noir/ Effets des changements de configuration de la liste blanche , Et avec les changements de membres du serveur 、 Changement de groupe d'identité 、 Changement de membre du Groupe d'identité .

Ce qu'on appelleGrande échelle,Plus précisément: D'une part, il y a des millions de membres .In「Groupe de cercles」En affaires, Le nombre de membres du serveur peut atteindre des millions ,Plus loin, Canaux et groupes d'identité sur des serveurs membres en millions , Le nombre de membres peut également atteindre un million . D'autre part, le volume de changement peut atteindre un million .In「Groupe de cercles」En affaires, Non seulement le nombre de membres est énorme , Et le nombre d'opérations de changement d'un lot peut atteindre l'échelle des millions .Y compris:: Supprimer les serveurs de millions de membres /Channel/Groupe d'identification, Ajouter ou supprimer des chaînes / Millions de groupes membres dans la liste noire et blanche des groupes de canaux, etc. .

De「Groupe de cercles」 Les deux principales caractéristiques de l'entreprise relationnelle ,On peut le découvrir.「Groupe de cercles」 Les relations sont de nouveaux scénarios d'affaires qui diffèrent des relations de groupe , Sera confronté à de nouvelles difficultés techniques .

Difficultés techniques

「Groupe de cercles」 La difficulté technique du système relationnel comporte deux aspects principaux: .L'un d'eux est Sujet Multi - relationnel 、 Couplage associatif de plusieurs mécanismes de gestion dans une structure hiérarchique La complexité de la logique opérationnelle qui en résulte ;Le deuxième estNombre de membres、 Grande échelle de changement de lot Le traitement des affaires qui en résulte est effectué au moment 、Espace、 Complexité des frais généraux, comme les ressources .

Complexité de la logique opérationnelle  

Tout d'abord,「Groupe de cercles」 Structure à plusieurs niveaux .Inclure les serveurs/ Structure secondaire du canal 、Serveur/ Groupe de canaux / Structure à trois niveaux du canal, etc. . Changement d'entité de relation unique , Ne concerne pas seulement ses propres changements , Et implique des changements dans l'entité de la relation parent - enfant , On peut dire qu'on tire, on active tout le corps. .En comparaison, Le Groupe n'a pas de hiérarchie , Le changement de groupe, c'est bien d'être seul. .

Deuxièmement,「Groupe de cercles」 Il y a des groupes d'identité . Un groupe d'identité est une collection de membres du serveur qui ont des permissions communes , Les membres de différents groupes d'identité peuvent se croiser , Les groupes d'identité participent à l'administration des membres dans son ensemble .C'est - à - dire, Le changement de membre n'est plus seulement un membre individuel (1-100Les gens) Entrée / sortie de , L'ensemble du Groupe apparaîtra (1-1000000Les gens) De grandes entrées et sorties .En comparaison, Le Groupe n'a pas de groupe d'identité , Les membres spéciaux du Groupe comprennent le propriétaire du Groupe 、 Il n'y a pas beaucoup d'administrateurs 、Pas de répétition.

Enfin「Groupe de cercles」 Il existe plusieurs mécanismes de gestion des membres . Les membres du serveur et les membres du Groupe d'identité sont gérés de la même manière que les groupes , Les mécanismes de gestion des membres des canaux et des groupes de canaux sont nouveaux . Les chaînes sont ouvertes et privées , Le mode public permet par défaut à tous les membres du serveur d'être visibles , Mais exclure les groupes d'identité de la liste noire et les membres de la liste noire ; Le mode privé n'est pas visible par défaut pour tous les membres du serveur , Mais libérez le Groupe d'identification de la liste blanche et les membres de la liste blanche. . En plus d'être rendu public / Mode privé +Noir/ Effets des changements de configuration de la liste blanche , Les membres du canal sont également dépendants du principal de la relation ( Membres du serveur 、Groupe d'identification、 Membres du Groupe d'identité )Impact du changement.Plus loin, ..Les membres du canal sont également touchés par les changements de paquets de canaux synchronisés .En comparaison, Invitation des membres du Groupe /Mécanisme de demande,On peut dire que c'est une sorcière..

Complexité du traitement des affaires  

D'abord Nombre important de membres . Comme le nombre de membres peut atteindre des millions , Frais généraux de stockage pour l'ensemble de la liste des membres 、Frais généraux de transmission du réseau, Est devenu énorme , Cache du serveur indépendamment des données de la liste complète des membres , Ou la synchronisation complète des données de la liste des membres du serveur au client , Sera difficile à réaliser .

Et ensuite, Grande échelle de changement de lot . Changement de relation pour un seul appel d'interface , Peut entraîner des changements dans les relations de liaison à l'échelle du million , Cela peut entraîner d'énormes frais généraux de traitement 、 Calculer le coût des ressources , Traitement complet indépendamment de la synchronisation de tous les changements , Ou toutes les commandes de changement sont traitées , Sera difficile à réaliser .

Et enfin, La taille du message de notification est énorme . Le système relationnel nécessite non seulement le traitement des données pour le changement de relation , Et vous devez informer le client du résultat du changement .Parce que「Groupe de cercles」 Le nombre de membres de chaque sujet de relation est énorme , Faire en sorte qu'un seul changement soit diffusé en millions de notifications simultanément , Coût des ressources informatiques nécessaires 、 Les frais généraux de transmission du réseau sont énormes .

En comparaison, Schéma de groupe en raison du nombre de membres 、 Taille limitée du lot de changement , Ces difficultés techniques ne sont pas abordées .

De「Groupe de cercles」 Deux aspects du système relationnel ,On peut le découvrir.「Groupe de cercles」 Les systèmes relationnels sont confrontés à de nouvelles difficultés techniques différentes des groupes , Pour résoudre ces difficultés techniques , Nécessité de solutions technologiques innovantes .

Analyse technique

「Groupe de cercles」 Le système relationnel est l'ensemble 「Groupe de cercles」 Éléments essentiels du programme ,En particulier「Groupe de cercles」 Avant la solution technique du système relationnel , Il faut d'abord comprendre 「Groupe de cercles」 Structure globale du programme .

 「Groupe de cercles」Structure générale 

Ça montre「Groupe de cercles」 Structure globale du programme ,Je vois.「Groupe de cercles」 L'ensemble est une architecture à plusieurs niveaux .De haut en bas:

  • Niveau client: Inclure les terminaux mobiles pour l'intégration des clients 、Côté Bureau、Multiplateforme SDK, Et disponible pour le serveur OpenAPI.

  • Couche d'accès:Y compris: LBS Services、 Services de connexion longue et API Passerelle, Client correspondant séparément SDK Et serveurs utilisateurs .

  • Couche réseau: Réseau mondial de transmission en temps réel, y compris l'auto - développement WE-CAN.

  • Business level:Y compris pour SDK Traitement des affaires App Services et OpenAPI Traitement des affaires WebServer Services.

  • Niveau de service: Partition avec connexion 、Message、Relations、Groupe d'identification、 Module de service de soutien, etc. , Chaque module de service comprend plusieurs microservices ou consommateurs .

  • Niveau des infrastructures: Comprend les bases de données et les intergiciels utilisés par le système .

Architecture du système relationnel  

 

 

L'image ci - dessus montre「Groupe de cercles」 Architecture technique du système relationnel ,Je vois.「Groupe de cercles」 Système de relations omniprésent 「Groupe de cercles」 Couche d'accès du schéma 、Couche réseau、 Niveau opérationnel et niveau de service . Du point de vue fonctionnel, il est divisé en trois parties. ,Y compris:: Module de synchronisation des opérations relationnelles 、 Module de traitement asynchrone des événements relationnels et module de diffusion en ligne des notifications de changement .

Détails techniques du système relationnel  

In「Groupe de cercles」 Dans le système relationnel , Les détails techniques des trois éléments du programme sont examinés plus en détail ci - dessous. , Y compris la gestion des membres du canal 、 Avis de modification diffusion en ligne et recherche en nuage de données relationnelles .

  • Gestion des membres des canaux

    Gestion des membres des canaux ,- Oui.「Groupe de cercles」 Questions très difficiles . Les membres de la chaîne sont impliqués Sujet Multi - relationnel Mécanismes de gestion multiples Changement de liaison Couplage sévère, Le nombre de membres et la taille du lot de changement sont énormes ,On peut dire que oui.「Groupe de cercles」 Représentation typique des relations commerciales . La complexité de la gestion des membres des canaux en termes de logique opérationnelle et de traitement des affaires est concevable. . Problèmes de gestion des membres des canaux ,「Groupe de cercles」 .Deux grands mécanismes ont été conçus pour y faire face .Y compris:: Mécanisme combiné de maintien de l'état final et de calcul de la transition 、 Mécanisme de traitement parallèle asynchrone séquentiel des événements .

    Mécanisme combiné de maintien de l'état final et de calcul de la transition ,Plus précisément, Les données sur l'adhésion au canal sont finalement conservées dans la base de données persistence , Et dans la phase finale où les membres du canal ne changent pas , Prise en charge directe des demandes de données des membres du canal . Quand les membres du canal changent , En raison de la complexité de la logique du changement et du traitement du changement , Il faudra du temps pour compléter le changement de relation ,AppeléLa phase de transition.Pendant la phase de transition, Les données de la table des membres du canal persistantes dans la base de données ne sont pas entièrement exactes , Impossible de soutenir directement les exigences de requête pour les données des membres du canal . À ce stade, les membres du canal sont transférés aux membres du canal pour configurer les métadonnées et calculer directement les membres du canal afin de soutenir les exigences de requête. . Parce que les modifications des métadonnées de configuration des membres du canal sont synchronisées , Par conséquent, l'exactitude de la requête peut être assurée en configurant les métadonnées des membres du canal pour calculer directement les membres du canal pendant la phase de transition. . En divisant la gestion de l'adhésion au canal en deux étapes: l'état final et la transition , Et le système d'interrogation des membres de différents canaux est adopté à différentes étapes , Non seulement il résout le problème des coûts élevés de l'acquisition des ressources des membres du canal uniquement par calcul , De plus, il résout le problème de l'inexactitude des résultats de l'acquisition des membres du canal par la base de données en raison du retard dans le changement des membres du canal. .

    En plus des problèmes d'acquisition des membres du canal , Le traitement des changements dans les membres du canal est également important .Oui. Mécanisme de traitement parallèle asynchrone séquentiel des pièces , Est utilisé pour résoudre les problèmes de traitement du changement des membres du canal . .L'une consiste à stratifier les opérations de changement qui affectent l'adhésion au canal 、 La systématisation est définie comme un événement de changement , Réduire considérablement la complexité de la logique opérationnelle de la gestion des membres des canaux . Deuxième passage ID Hashi、Serrure distribuée、 Contrôle du numéro de version de l'événement, etc., pour assurer le traitement séquentiel des événements de changement , Éviter efficacement les erreurs de données persistantes causées par le traitement désordonné des événements . Troisièmement, les événements sont transmis par file d'attente de messages et traités asynchrone sur le consommateur , Résoudre efficacement le problème de blocage de l'appel d'interface causé par un trop grand nombre de changements de liaison . Le quatrième est accéléré par l'accélération parallèle multithreadée et la réutilisation locale du cache dans le traitement d'un seul événement , Réduire considérablement le délai de modification de l'adhésion au canal .

  • Avis de modification diffusion en ligne

    Le système relationnel nécessite non seulement le traitement des données pour le changement de relation , Et vous devez informer le client du résultat du changement . En millions 「Groupe de cercles」Dans la relation, Avis de modification de chaque relation , Sont confrontés à une prolifération massive de récepteurs . En plus de l'augmentation de la distribution des notifications , Les différences entre les destinataires en ce qui concerne les délais de réception des notifications sont également préoccupantes . Questions de diffusion en ligne pour les avis de modification ,「Groupe de cercles」 .Deux grands mécanismes ont été conçus pour y faire face .Y compris:: Mécanisme de notification du changement de classification 、 Mécanisme de retrait des notifications de données .

    In Avis de modification de la classification Dans le mécanisme,D'un côté, Selon le rôle de la personne concernée dans le changement , Classification des participants et des observateurs , C'est - à - dire que les participants doivent être informés , L'observateur informe en fonction des besoins de l'abonnement .Parmi euxParticipants Il s'agit généralement d'un petit nombre de personnes clés dans le changement. ,L'observateur D'autres personnes que les participants peuvent voir les résultats du changement . Notification par catégorie , Une attention raisonnable est accordée aux différences entre les différents destinataires en ce qui concerne la réception des avis , La diffusion des avis de modification a également été réduite avec précision. .D'un autre côté, L'observateur informe en fonction des besoins de l'abonnement ,Peut jouer pleinement「Groupe de cercles」De Mode d'abonnement à la radiodiffusion en ligne Avantages. Ce qu'on appelle le modèle d'abonnement à la radiodiffusion en ligne , Après la connexion de l'utilisateur , Vous devez vous abonner à un serveur d'intérêt / Notification de la chaîne ,「Groupe de cercles」 Le système enregistre ces informations d'abonnement , Quand il y a une nouvelle notification ,「Groupe de cercles」Passage du systèmeRelations d'abonnement Liste des non - membres + État en ligne obtenir la liste des utilisateurs qui ont besoin d'une diffusion en ligne , Il n'est plus nécessaire de traverser le serveur / Tous les membres du canal et leur statut en ligne . En utilisant le mode d'abonnement à la radiodiffusion en ligne ,Non seulementRemarquable Réduire les frais généraux de calcul et de bande passante pour la diffusion en ligne des avis de modification ,Et oui. Mise en œuvre de l'accélération parallèle et de l'expansion horizontale de la diffusion en ligne des avis de changement dans les grappes de services à longue connexion .

    Le but ultime de l'avis de modification est de transmettre les données modifiées au client . Différent du Groupe ,「Groupe de cercles」 Les données modifiées ne sont pas communiquées directement au client par notification , Au lieu de cela, un mécanisme est utilisé pour aviser le client qu'il y a un changement et déclencher le client pour extraire les données de résultat. .Pourquoi?, Synchroniser complètement les données relationnelles avec le client au lieu du Groupe ,「Groupe de cercles」 Le client ne stocke plus une image complète des données relationnelles , Il n'est donc plus nécessaire de passer par l'historique complet + La méthode de changement progressif maintient un miroir complet des données relationnelles sur le client .En même temps,, Les observateurs qui s'abonnent aux notifications de changement ne se soucient pas toujours des résultats des changements. , Les observateurs qui s'intéressent aux données sur les résultats d'un changement sont beaucoup moins nombreux que ceux qui s'abonnent à un avis de changement. ,Donc,, Le mécanisme d'extraction des notifications de données réduit considérablement les frais généraux de ressources pour les notifications de changement .En plus, Par rapport à la notification des données modifiées , Notification des modifications seulement , Faciliter la fusion directe du même type de notification , Sans se soucier du moment où les données de changement fusionnées existent 、 Problèmes de concurrence, etc. ,Voilà., Le mécanisme d'extraction des notifications de données peut réduire considérablement les frais généraux de diffusion en ligne du serveur et les frais généraux de réception des notifications des clients grâce à la fusion des notifications en peu de temps. .

 

  • Recherche en nuage de données relationnelles

    In「Groupe de cercles」Moyenne, Augmentation substantielle de l'échelle des relations d'accompagnement , Le schéma de requête précise et de tri flexible du Groupe basé sur la requête complète des données relationnelles du serveur d'application ou la synchronisation complète des données relationnelles du client n'est plus applicable .C'est,「Groupe de cercles」Adopté Recherche en nuage de données relationnelles Programme.

    「Groupe de cercles」 Le système de recherche en nuage de données relationnelles peut soutenir Serveur、Channel、Membres Capacité de récupération . Diviser à partir du scénario de récupération , Y compris la recherche carrée et la recherche interne .

    Recherche carrée : Pour récupérer les serveurs d'intérêt . Peut être basé sur le nom 、 Recherche multidimensionnelle par catégorie, etc. . Les résultats de la recherche peuvent être basés sur des champs prédéfinis ( Nombre de membres, etc. ) Ou valeur personnalisée ( Chaleur des données, etc. )Et trier.

    Recherche interne : Utilisé pour récupérer les serveurs visibles par l'utilisateur 、Channel、Membres, etc. Peut être basé sur le nom 、 Recherche multidimensionnelle comme les surnoms . Les résultats de la recherche peuvent être basés sur des champs prédéfinis (Temps de création, etc.) Ou valeur personnalisée ( Chaleur des données, etc. )Et trier.

Résumé

C'est tout ce qu'il a dit.,Yunxin「Groupe de cercles」 En tant que nouveau produit , Il n'y a pas de limite au bagage historique ( Mais peut absorber pleinement les avantages de l'histoire ), Vous pouvez l'utiliser pour construire une classe Discord Produits, Ou n'importe quel type de société que vous voulez /Divertissement/Produits du jeu, Vous êtes les bienvenus. .

原网站

版权声明
本文为[Netease Cloud letter]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/162/202206111419136091.html