전면에는 고가용성을 위해 keepalive를 사용하는 두 개의 nginx 서버 N1 및 N2가 있습니다
백엔드는 4개의 Tomcat T1, T2, T3 및 T4로 구성된 클러스터입니다(memcached는 세션 공유 문제를 해결하는 데 사용됩니다)
코드에는 처리하기 더 쉬운 일부 js/css 및 기타 정적 파일이 있으며 소스 코드는 이 6개 서버 간에 동기화될 수 있습니다.
시스템은 pdf/doc와 같은 많은 수의 파일을 업로드하고 나중에 미리 보려면 swf 형식으로 변환해야 하므로 T3 및 T4는 특수 처리에 사용됩니다. 그 외 일반업무는 T1, T2에 맡겨주세요
여기서 문제가 발생합니다. 클라이언트는 pdf 또는 swf 파일에 액세스하려고 하며 요청은 nginx로 전송됩니다. 로컬에는 js/css와 같은 정적 파일만 있고 파일이 없기 때문입니다. doc/pdf이므로 T3, T4에는 Proxy_pass 위치를 사용하지만 T3 및 T4에는 tomcat만 있으므로 정적 파일 처리에는 확실히 효율적이지 않습니다. 무엇을 해야 할까요?
두 가지 아이디어가 있습니다:
다들 어떻게 해결하셨는지 모르겠네요?
이 문제가 곧 해결될 것입니까? 이에 대한 많은 시나리오가 있어야 하며 참조할 수 있는 기성 솔루션이 있습니다
가장 간단한 방법은 doc/pdf 리소스에 대한 새 도메인 이름 또는 하위 도메인 이름을 지정하고, nginx를 구성하고, 새 도메인 이름에 대한 모든 요청을 t3 및 t4로 전달하는 것입니다.
하지만 여기서 질문이 있습니다. 사용자가 t3에 파일을 업로드한 후 다음에 파일에 액세스할 때 nginx가 t4에 요청을 전달하면 어떻게 될까요?
그렇다면 t3와 t4 사이에 동기화 메커니즘이 있습니까?
이 문제를 해결하는 몇 가지 방법이 있습니다:
1. 삼바 등 말씀하신 공유 파일 시스템을 사용하시고, t3, t4의 파일을 여기에 업로드해주세요
2. 두 컴퓨터 간에 파일을 수동으로 동기화합니다. 장점은 데이터가 백업과 동일하다는 점이며 단점은 언급되지 않습니다
3. 초기 문제도 해결될 수 있도록 Youpai와 같은 CDN을 사용해 보세요
4. . . .