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»DevOps Zone»Deux façons simples de gérer la concurrence de code
    DevOps Zone

    Deux façons simples de gérer la concurrence de code

    novembre 17, 2021
    Deux façons simples de gérer la concurrence de code
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    La concurrence de code est une valeur par défaut dans tout code Rails. Un serveur Web threadé servira simultanément de nombreuses requêtes HTTP, et chacune contiendra son instance de contrôleur. Les adaptateurs de travaux actifs filetés et les canaux de câble d’action gèrent également plusieurs demandes simultanément. Même lorsque l’espace de processus global est partagé, le travail pour chaque instance est géré séparément. Pour les scénarios où l’espace partagé n’est pas modifié, ce processus se déroulera sans problème.

    Voyons en détail comment cela est géré dans nos applications Rails.

    Exécuteur

    Les exécuteurs séparent le framework et les codes d’application en enveloppant le code d’application.

    L’encapsulation du code était plus complexe avant Rails 5.0. Pour protéger un code, soit des classes de middleware Rack distinctes ont été utilisées, soit un emballage direct a été utilisé. Avec les mises à jour récentes de Rails, l’exécuteur gère le wrapping en une seule étape qui est plus facile à comprendre.

    Appelez l’exécuteur pour encapsuler le code de l’application lorsque vous l’invoquez.

    Par exemple:

    Application de rails

    Une caractéristique intéressante de l’exécuteur testamentaire est sa réentrée.

    Deux rappels de l’exécuteur sont ‘courir‘ et ‘compléter.’ Cela permet d’encapsuler le code en parties lorsqu’il n’est pas possible d’encapsuler le code sous forme de blocs.

    Concurrence des threads

    Le thread actuel est déplacé vers le ‘running‘, bloquant temporairement le thread. Ainsi, le fil ne sera accessible par aucune autre requête qui essaie de le faire.

    Rechargeur

    Le Reloader fonctionne de manière similaire à l’Executor. Le code qui doit être protégé est encapsulé avant qu’une autre demande ne soit touchée. Ceci est utilisé dans les scénarios où le code d’application est appelé plusieurs fois par un processus de longue durée. Le plus souvent, dans Rails, les requêtes Web et les tâches actives sont par défaut encapsulées. Le Reloader est donc rarement utilisé.

    Un Reloader est utilisé lorsqu’il est nécessaire de recharger l’application. Lorsque la condition demandée demande un rechargement, le Reloader retarde le rechargement de l’application jusqu’à ce qu’il soit sécurisé. Et pour les scénarios où les rechargements d’applications sont obligatoires, le Reloader attend que le bloc actuel soit exécuté et autorise le rechargement. Ainsi, le code est protégé des erreurs.

    Les ‘to_run‘ et ‘to_complete‘ les rappels sont également utilisés par le Reloader.

    Un déchargement de classe est impliqué dans le processus Reloader. Ici, toutes les classes chargées automatiquement sont supprimées et prêtes à être chargées davantage. Le rechargement de l’application ne doit avoir lieu qu’avant ou après le déchargement de la classe, et donc, les deux rappels supplémentaires de Reloader sont ‘before_class_unload‘ et ‘after_class_unload‘.

    Executor et Reloaders sont également utilisés par les composants du framework Rails. ActionDispatch::Executor and ActionDispatch::Reloader sont inclus dans la pile d’applications par défaut. Chaque fois qu’il y a un changement de code, le Reloader sert une nouvelle copie de l’application pour une requête HTTP. La fonction Active Job utilise également Reloaders, tandis qu’Action Cable utilise Executor. Action Cable utilise également le before_class_unload de Reloader pour déconnecter toutes les connexions.

    Comme nous l’avons vu, la concurrence de code est gérée par défaut avec les tâches actives en thread et les fonctionnalités de câbles d’action des codes Rails. Avec les récentes mises à jour de Rails, des exécuteurs et des rechargeurs sont également ajoutés pour améliorer la gestion de la concurrence du code.

    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.