Коли і як застосовувати Торнадо? Коли це марно?


84

Добре, Торнадо не блокує і досить швидко, і він може легко обробляти багато постійних запитів.

Але я думаю, це не срібна куля, і якщо ми просто наосліп запустимо Django або будь-який інший сайт з Tornado, це не дасть жодного підвищення продуктивності.

Я не зміг знайти вичерпного пояснення цьому, тому запитую його тут:

  • Коли слід застосовувати Торнадо?
  • Коли це марно?
  • Що слід враховувати при його використанні?
  • Як ми можемо зробити неефективний сайт за допомогою Tornado?
  • Існує сервер і веб-фреймворк. Коли нам слід використовувати фреймворк і коли ми можемо замінити його іншим?

Відповіді:


45

Існує сервер і веб-фреймворк. Коли нам слід використовувати фреймворк і коли ми можемо замінити його іншим?

Ця відмінність трохи розмита. Якщо ви обслуговуєте лише статичні сторінки, ви скористаєтесь одним із швидких серверів, таким як lighthttpd. В іншому випадку більшість серверів забезпечують різну складність фреймворку для розробки веб-додатків. Торнадо - хороший веб-фреймворк. Twisted є ще більш здібним і вважається гарною мережевою структурою. Він підтримує безліч протоколів.

Tornado та Twisted - це фреймворки, які забезпечують підтримку неблокувальної асинхронної розробки веб-мережевих додатків.

Коли слід застосовувати Торнадо? Коли це марно? Що слід враховувати при його використанні?

За своєю природою Async / Non-Blocking I / O чудово працює, коли він інтенсивний введення / виводу, а не обчислювальний. Більшість веб-додатків / мереж добре підходить для цієї моделі. Якщо ваша програма вимагає виконання певних обчислювальних завдань, її потрібно делегувати якійсь іншій службі, яка може з цим краще працювати. Тоді як Tornado / Twisted може виконувати роботу веб-сервера, відповідаючи на веб-запити.

Як ми можемо зробити неефективний сайт за допомогою Tornado?

  1. Виконуйте будь-які обчислювальні завдання
  2. Ввести операції блокування

Але я думаю, це не срібна куля, і якщо ми просто наосліп запустимо Django або будь-який інший сайт з Tornado, це не дасть жодного підвищення продуктивності.

Продуктивність, як правило, є характеристикою повної архітектури веб-додатків. Ви можете знизити продуктивність більшості веб-фреймворків, якщо програма не розроблена належним чином. Подумайте про кешування, балансування навантаження тощо.

Tornado і Twisted забезпечують розумну продуктивність і вони добре підходять для створення продуктивних веб-додатків. Ви можете перевірити відгуки як про кручений, так і про смерч, щоб побачити, на що вони здатні.


1
Дякую за відповідь. Просто хочу чітко пояснити деякі моменти: чи можу я використовувати Flask або Django bihind Tornado і отримати всі його переваги (якщо я не роблю жодних завдань з обчислення) без зміни коду програми?
Володимир Сидоренко

Якщо так, то якою буде різниця порівняно із бігом, скажімо, з перепадом? Дякую.
Володимир Сидоренко

Я хотів би проаналізувати RSS-канали у програмі Tornado. Чи вважаєте ви, що це досить обчислювально?
Susheel Javadi

6

Мені шкода, що я відповів на старе запитання, але я натрапив на це і здивувався, чому у нього немає більше відповідей. Щоб відповісти на питання Барта Дж.

Я хотів би проаналізувати RSS-канали у програмі Tornado. Чи вважаєте ви, що це досить обчислювально?

Ну, це залежить від того, який аналіз ви робите та від якого обладнання :) Довгий час - це довгий час, тому, якщо ваша програма займає більше, ніж півсекунди, щоб відповісти, це буде здаватися млявим - створіть профіль своєї програми.

Ключ до швидких систем - це чудова архітектура, не стільки специфіка, скільки, наприклад, який фреймворк ви використовуєте (Twisted, Tornado, Apache + PHP). Торнадо має асинхронний стиль обробки, і це, насправді, багато чого, на мій погляд, зводиться. Node.js, Twisted та Yaws - це приклади інших асинхронних веб-серверів, які дуже добре масштабуються завдяки легкому підходу та стилю асинхронної обробки.

Тому:

Коли слід застосовувати Торнадо?

Коли це марно?

Tornado добре підходить для роботи з великою кількістю з'єднань, оскільки він може реагувати на вхідного клієнта, відправляти обробник запитів і не думати про цього клієнта, доки зворотний виклик результату не буде висунутий в чергу подій. Отже, для цієї конкретної якості Tornado слід використовувати, коли ви хочете добре масштабуватись при обробці великої кількості запитів. Асинхронна обробка полегшує функціональне роз'єднання та спільний доступ до даних. Це дуже добре коливається з дизайном без громадянства, таким як REST або інша архітектура, орієнтована на обслуговування . Вам також не доведеться стільки мати справу з нерестовими потоками або процесами з притаманними накладними витратами, і ви можете врятувати деякі проблеми з блокуванням / IPC.

Торнадо, з іншого боку, не сильно змінитиметься, якщо ваш сервер та / або сховище даних займає багато часу для обробки запитів. Це допомагає робити паралельний дизайн та, зокрема, веб-сервіси. Паралельна архітектура полегшує масштабування вашого дизайну та підтримує низький рівень зчеплення. Це, принаймні, мій досвід роботи з Торнадо.


Що робити, якщо у вашій службі є мало операцій, які обчислювально обчислювальні (скажімо> 1 сек)? Чи все-таки можливо зробити такий вид обробки неблокуючим способом?
tigeronk2

@ tigeronk2 Так, але вам доведеться запустити обчислення в іншому потоці / процесі.
Morten Jensen

Або потенційно запустити інтенсивний процес як іншу службу для досягнення масштабованості та розділення з невеликими накладними витратами порівняно з управлінням іншим процесом. Подивіться на посилання на архітектуру, орієнтовану на обслуговування.
Тайет

Розбір RSS майже за визначенням не є важкою обробкою, якщо ви не робите це дуже дуже неправильно.
триплеє
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.