토네이도는 언제 어떻게 사용하나요? 언제 쓸모가 없습니까?


84

좋아, Tornado는 차단되지 않고 매우 빠르며 많은 대기 요청을 쉽게 처리 할 수 ​​있습니다.

그러나 나는 그것이 은총이 아니라고 생각하고 우리가 장고 기반 또는 Tornado를 사용하여 다른 사이트를 맹목적으로 실행하면 성능이 향상되지 않습니다.

이에 대한 포괄적 인 설명을 찾을 수 없으므로 여기에서 요청합니다.

  • 토네이도는 언제 사용해야합니까?
  • 언제 쓸모가 없습니까?
  • 그것을 사용할 때 고려해야 할 사항은 무엇입니까?
  • Tornado를 사용하여 어떻게 비효율적 인 사이트를 만들 수 있습니까?
  • 서버와 웹 프레임 워크가 있습니다. 언제 프레임 워크를 사용해야하며 언제 다른 프레임 워크로 대체 할 수 있습니까?

답변:


45

서버와 웹 프레임 워크가 있습니다. 언제 프레임 워크를 사용해야하며 언제 다른 프레임 워크로 대체 할 수 있습니까?

이 구분은 약간 모호합니다. 정적 페이지 만 제공하는 경우 lighthttpd와 같은 빠른 서버 중 하나를 사용합니다. 그렇지 않으면 대부분의 서버는 웹 애플리케이션을 개발하기 위해 다양한 프레임 워크의 복잡성을 제공합니다. Tornado는 좋은 웹 프레임 워크입니다. Twisted는 훨씬 더 유능하고 좋은 네트워킹 프레임 워크로 간주됩니다. 많은 프로토콜을 지원합니다.

Tornado 및 Twisted는 비 차단, 비동기 웹 / 네트워킹 애플리케이션 개발을 지원하는 프레임 워크입니다.

토네이도는 언제 사용해야합니까? 언제 쓸모가 없습니까? 그것을 사용할 때 고려해야 할 사항은 무엇입니까?

본질적으로 Async / Non-Blocking I / O는 I / O 집약적이고 계산 집약적이지 않을 때 훌륭하게 작동합니다. 대부분의 웹 / 네트워킹 애플리케이션은이 모델에 적합합니다. 응용 프로그램에서 특정 계산 집약적 인 작업을 수행해야하는 경우이를 더 잘 처리 할 수있는 다른 서비스에 위임해야합니다. Tornado / Twisted는 웹 요청에 응답하여 웹 서버의 작업을 수행 할 수 있습니다.

Tornado를 사용하여 어떻게 비효율적 인 사이트를 만들 수 있습니까?

  1. 계산 집약적 인 작업 수행
  2. 차단 작업 소개

그러나 나는 그것이 은총이 아니라고 생각하고 우리가 장고 기반 또는 Tornado를 사용하여 다른 사이트를 맹목적으로 실행하면 성능이 향상되지 않습니다.

성능은 일반적으로 완전한 웹 애플리케이션 아키텍처의 특징입니다. 응용 프로그램이 제대로 설계되지 않은 경우 대부분의 웹 프레임 워크에서 성능을 저하시킬 수 있습니다. 캐싱,로드 밸런싱 등에 대해 생각해보십시오.

Tornado 및 Twisted는 합리적인 성능을 제공하며 고성능 웹 응용 프로그램을 구축하는 데 좋습니다. 트위스트와 토네이도에 대한 사용 후기를 확인하여 그들이 무엇을 할 수 있는지 확인할 수 있습니다.


1
답변 감사합니다. 몇 가지 요점을 명확히하고 싶습니다. Flask 또는 Django bihind Tornado를 사용하고 응용 프로그램 코드를 변경하지 않고도 모든 이점을 얻을 수 있습니까 (캠프 팅 작업을 수행하지 않는 경우)?
Vladimir Sidorenko

그렇다면-플럽으로 달리는 것과 비교할 때 차이점은 무엇입니까? 감사합니다.
Vladimir Sidorenko

Tornado 애플리케이션에서 RSS 피드를 구문 분석하고 싶습니다. 상당히 계산 집약적이라고 생각하십니까?
Susheel Javadi

6

예전 질문에 답 해주셔서 죄송 합니다만이 질문을 발견하고 왜 더 이상 답이 없는지 궁금했습니다. Bart J의 질문에 답하려면 :

Tornado 애플리케이션에서 RSS 피드를 구문 분석하고 싶습니다. 상당히 계산 집약적이라고 생각하십니까?

어떤 종류의 파싱을 수행하고 어떤 하드웨어에 따라 달라집니다. :) 오랜 시간이 걸리므로 앱이 응답하는 데 0.5 초 이상 걸리면 느려 보일 것입니다. 앱을 프로파일 링하십시오.

빠른 시스템의 핵심은 훌륭한 아키텍처이며, 사용중인 프레임 워크 (Twisted, Tornado, Apache + PHP)와 같은 세부 사항이 아닙니다. Tornado는 비동기 처리 스타일을 가지고 있으며 이것이 제 생각에 많은 부분을 차지합니다. Node.js, Twisted 및 Yaws는 경량 접근 방식과 비동기 처리 스타일로 인해 매우 잘 확장되는 다른 비동기 웹 서버의 예입니다.

그래서:

토네이도는 언제 사용해야합니까?

언제 쓸모가 없습니까?

Tornado는 수신 클라이언트에 응답하고 요청 핸들러를 디스패치하고 결과 콜백이 이벤트 큐에 푸시 될 때까지 해당 클라이언트에 대해 생각하지 않기 때문에 많은 연결을 처리하는 데 좋습니다. 따라서 특정 품질을 위해서는 많은 요청을 처리 할 때 잘 확장하고 싶을 때 Tornado를 사용해야합니다. 비동기 처리는 기능적 분리 및 비공유 데이터 액세스를 용이하게합니다. REST 또는 기타 서비스 지향 아키텍처 와 같은 상태 비 저장 설계와 잘 어울 립니다. 또한 고유 한 오버 헤드가있는 스레드 또는 프로세스 생성을 너무 많이 처리 할 필요가 없으며 잠금 / IPC 문제를 줄일 수 있습니다.

반면에 백엔드 및 / 또는 데이터 저장소가 요청을 처리하는 데 오랜 시간이 걸리는 경우 Tornado는 큰 차이를 만들지 않습니다. 특히 동시 설계 및 웹 서비스를 수행하는 데 도움이됩니다. 동시 아키텍처를 사용하면 설계를보다 쉽게 ​​확장하고 커플 링을 낮게 유지할 수 있습니다. 그것은 적어도 토네이도에 대한 나의 경험입니다.


계산 집약적 인 (예 :> 1 초) 서비스에 작업이 거의 없다면 어떻게됩니까? 이러한 종류의 처리를 비 차단 방식으로 수행하는 것이 여전히 가능합니까?
tigeronk2

@ tigeronk2 예,하지만 다른 스레드 / 프로세스에서 계산을 실행해야합니다.
Morten Jensen

또는 잠재적으로 집약적 인 프로세스를 다른 서비스로 실행하여 다른 프로세스를 관리하는 것에 비해 적은 오버 헤드로 확장 성과 분리를 달성 할 수 있습니다. 서비스 지향 아키텍처 링크를보십시오.
Tyeth

RSS 구문 분석은 매우 잘못하지 않는 한 거의 정의에 따라 무거운 처리가 아닙니다.
tripleee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.