Maison  >  Questions et réponses  >  le corps du texte

Architecture système - Une question sur l'architecture nginx pour le traitement des fichiers statiques

A l'avant se trouvent deux serveurs nginx N1 et N2 utilisant keepalive pour une haute disponibilité
Le backend est un cluster de 4 tomcat T1, T2, T3 et T4 (memcached est utilisé pour résoudre le problème de partage de session)

Il y aura des js/css et d'autres fichiers statiques dans le code, qui sont plus faciles à gérer. Le code source peut être synchronisé entre ces 6 serveurs.

Le système téléchargera un grand nombre de fichiers tels que pdf/doc et devront être convertis au format swf pour un aperçu ultérieur, donc T3 et T4 sont utilisés pour un traitement spécial. Laissez les autres affaires générales aux T1 et T2

Ensuite, voici le problème. Le client veut accéder à un fichier pdf ou swf, et la requête est envoyée à nginx. Elle ne doit pas être interceptée ici, car il n'y a que des fichiers statiques tels que js/css localement, et il n'y en a pas. doc/pdf, utilisez donc l'emplacement proxy_pass pour T3, T4, mais il n'y a que Tomcat sur T3 et T4, ce qui n'est certainement pas efficace pour traiter les fichiers statiques. ce qu'il faut faire?

J'ai deux idées :

  1. Utilisez un système de fichiers partagé, mais la stabilité doit être étudiée
  2. Utilisez un Apache pour le backend

Je ne sais pas comment tout le monde l'a résolu ?

滿天的星座滿天的星座2736 Il y a quelques jours483

répondre à tous(2)je répondrai

  • 習慣沉默

    習慣沉默2017-05-16 17:26:18

    Ce problème est-il sur le point de s'installer ? Il devrait y avoir de nombreux scénarios pour cela, et il existe des solutions toutes faites auxquelles vous pouvez vous référer

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 17:26:18

    Le moyen le plus simple devrait être de spécifier un nouveau nom de domaine ou un nouveau nom de sous-domaine pour la ressource doc/pdf, de configurer nginx et de transmettre toutes les demandes pour le nouveau nom de domaine à t3 et t4.

    Mais vous avez une question ici : que se passe-t-il si l'utilisateur télécharge un fichier sur t3, puis que nginx transmet la demande à t4 lors du prochain accès au fichier ?
    Alors, existe-t-il un mécanisme de synchronisation entre t3 et t4 ?
    Il existe plusieurs façons de résoudre ce problème :
    1. Utilisez le système de fichiers partagé comme vous l'avez dit, comme samba, et téléchargez les fichiers de t3 et t4 ici
    2. Synchronisez manuellement les fichiers entre deux machines. L'avantage est que les données sont équivalentes à une sauvegarde, et les inconvénients ne sont pas mentionnés
    . 3. Essayez d'utiliser cdn comme Youpai, afin que même vos problèmes initiaux puissent être résolus
    4. . . .

    répondre
    0
  • Annulerrépondre