DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Conception du système Uber – DZone
    Uncategorized

    Conception du système Uber – DZone

    mars 13, 2023
    Conception du système Uber - DZone
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Rejoignez la communauté Développeurweb.com et bénéficiez de l’expérience de membre complète.

    Rejoignez gratuitement

    Les implémentations populaires du service de covoiturage sont les suivantes :

    Exigences

    • Le conducteur peut voir tous les conducteurs disponibles à proximité
    • Le chauffeur peut accepter une course demandée par le passager
    • L’emplacement actuel du passager et du conducteur doit être publié en permanence sur la confirmation de voyage

    Stockage de données

    Schéma de base de données

    Schéma de base de données

    • Les principales entités sont les passagers, les chauffeurs, les véhicules et les tables de trajets
    • La relation entre les conducteurs et la table des véhicules est de 1 à plusieurs
    • La relation entre les conducteurs et la table des trajets est de 1 à plusieurs
    • La relation entre le tableau des passagers et des trajets est de 1 à plusieurs
    • La table des trajets est une table de jointure pour représenter la relation entre les passagers et les chauffeurs

    Type de magasin de données

    • Le magasin de données à large colonne (basé sur l’arborescence LSM) tel qu’Apache Cassandra est utilisé pour conserver les données de localisation chronologiques du client (conducteur et conducteur)
    • Le serveur de cache tel que Redis est utilisé pour stocker l’emplacement actuel du conducteur et du pilote pour des recherches rapides
    • Une file d’attente de messages telle qu’Apache Kafka est utilisée pour gérer le trafic important
    • Une base de données relationnelle telle que Postgres stocke les métadonnées des utilisateurs

    Conception de haut niveau

    • Le DNS redirige les requêtes du client (cavalier et chauffeur) vers les centres de données à proximité
    • Le client (coureur et conducteur) met à jour les magasins de données avec Geohash de leur emplacement en temps réel
    • WebSocket est utilisé pour la communication bidirectionnelle en temps réel entre le pilote et le conducteur
    • Un hachage cohérent est utilisé pour partitionner géographiquement les magasins de données

    Chemin d’écriture

    Chemin d'écriture

    1. Le client (conducteur) crée une connexion WebSocket sur l’équilibreur de charge pour publier l’emplacement actuel (latitude, longitude) du conducteur en temps réel
    2. L’équilibreur de charge utilise l’algorithme round-robin pour déléguer la connexion du client à un serveur disposant d’une capacité libre dans le centre de données à proximité
    3. Le géohash de l’emplacement du conducteur est conservé dans la file d’attente des messages pour gérer le trafic important
    4. Le géohash de l’emplacement du conducteur est stocké dans le magasin de données à large colonne pour plus de durabilité
    5. Le Geohash est stocké sur le cache de localisation de points pour fournir des mises à jour de localisation en temps réel
    6. Le client (cavalier) crée une connexion WebSocket sur l’équilibreur de charge pour publier l’emplacement actuel (latitude, longitude) du cavalier en temps réel
    7. L’équilibreur de charge utilise l’algorithme round-robin pour déléguer la connexion du client à un serveur disposant d’une capacité libre dans le centre de données à proximité
    8. Le Geohash de l’emplacement du passager est conservé dans la file d’attente des messages pour gérer le trafic intense
    9. Le service d’analyse (basé sur MapReduce) interroge le magasin de données à large colonne pour générer des analyses hors ligne sur les données de trajet.
    10. Le service de contrôleur empêche les points d’accès en repartitionnant automatiquement les services avec état
    11. Le cache de localisation des points est dénormalisé par la génération de Geohash multi-caractères pour améliorer les performances de lecture (fournit une fonctionnalité de zoom)
    12. Le serveur détenant la connexion WebSocket du passager interroge le cache de localisation des points pour identifier les chauffeurs disponibles à proximité
    13. Comme approche naïve, la distance euclidienne peut être utilisée pour trouver les véhicules les plus proches dans un Geohash
    14. Le partage des services peut être mis en œuvre à plusieurs niveaux, tels que le niveau de la ville, le partage géographique pour plus de granularité et le niveau du produit (capacité du véhicule)
    15. Les hotspots sont gérés via la réplication et le partitionnement supplémentaire des services avec état par l’ID du pilote
    16. Le magasin de données à larges colonnes est optimisé pour les écritures, tandis que le serveur de cache est optimisé pour les lectures
    17. Le magasin de données à larges colonnes est répliqué sur plusieurs centres de données pour plus de durabilité
    18. La politique LRU est utilisée pour expulser le serveur de cache

    Chemin de lecture

    Chemin de lecture

    Conducteur acceptant une demande de déplacement

    1. Le client (pilote) crée une connexion WebSocket sur l’équilibreur de charge pour recevoir des mises à jour sur les demandes de trajet en temps réel
    2. L’équilibreur de charge utilise l’algorithme round-robin pour déléguer la connexion du client à un serveur disposant d’une capacité libre dans le centre de données à proximité
    3. Le serveur qui détient la connexion WebSocket du conducteur doit acquérir un verrou distribué pour gérer les problèmes de simultanéité lors de l’acceptation des demandes de trajet de passagers uniques simultanés.
    4. Le serveur détenant la connexion WebSocket du conducteur invoque le service de voyage pour confirmer le voyage
    5. Le service de voyage interroge le serveur pub-sub pour créer un canal de communication un à un entre le conducteur et le passager
    6. Le serveur publie les mises à jour de localisation par le pilote sur le serveur pub-sub
    7. Le serveur pub-sub conserve les données de localisation du conducteur dans le magasin de données de trajet pour plus de durabilité
    8. Le serveur pub-sub délègue les mises à jour de localisation par le conducteur au serveur qui détient la connexion WebSocket du conducteur en utilisant le modèle de publication-abonnement
    9. Le serveur délègue la mise à jour de l’emplacement du conducteur à l’équilibreur de charge qui détient la connexion WebSocket du conducteur
    10. Les mises à jour de l’emplacement du conducteur sont publiées pour le passager
    11. L’état du trajet est mis en cache sur le client (passager et conducteur) pour un repli vers un autre centre de données
    12. Chaos Engineering peut être utilisé pour les tests de résilience
    13. Services gossip protocol l’état pour une haute disponibilité

    Magasin de données
    Base de données
    Base de données relationnelle
    Stockage de données
    Conception de systèmes

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.