Pertanyaan Kapan dan bagaimana menggunakan Tornado? Kapan itu tidak berguna?


Ok, Tornado tidak memblokir dan cukup cepat dan dapat menangani banyak permintaan dengan mudah.

Tapi saya kira itu bukan peluru perak dan jika kita hanya membabi buta menjalankan situs berbasis Django atau situs lainnya dengan Tornado, itu tidak akan memberikan peningkatan kinerja.

Saya tidak dapat menemukan penjelasan lengkap tentang ini, jadi saya bertanya di sini:

  • Kapan Tornado harus digunakan?
  • Kapan itu tidak berguna?
  • Saat menggunakannya, apa yang harus diperhitungkan?
  • Bagaimana cara kita membuatnya tidak efisien situs menggunakan Tornado?
  • Ada server dan webframework. Kapan kita harus menggunakan kerangka kerja dan kapan kita dapat menggantinya dengan yang lain?

75
2017-11-18 08:29


asal


Jawaban:


Ada server dan webframework. Kapan kita harus menggunakan kerangka kerja dan kapan kita dapat menggantinya dengan yang lain?

Perbedaan ini agak kabur. Hanya jika Anda melayani halaman statis, Anda akan menggunakan salah satu server cepat seperti lighthttpd. Lebih bijak lagi, sebagian besar server menyediakan berbagai kompleksitas kerangka kerja untuk mengembangkan aplikasi web. Tornado adalah kerangka web yang bagus. Twisted bahkan lebih mampu dan dianggap sebagai kerangka kerja jaringan yang baik. Ini memiliki dukungan untuk banyak protokol.

Tornado and Twisted adalah kerangka kerja yang mendukung non-blocking, pengembangan aplikasi web / jaringan yang tidak sinkron.

Kapan Tornado harus digunakan?   Kapan itu tidak berguna?   Saat menggunakannya, apa yang harus diperhitungkan?

Oleh sifatnya, Async / Non-Blocking I / O bekerja hebat ketika I / O intensif dan tidak intensif perhitungan. Sebagian besar aplikasi web / jaringan sangat sesuai untuk model ini. Jika aplikasi Anda menuntut tugas intensif komputasi tertentu untuk dilakukan maka harus didelegasikan ke beberapa layanan lain yang dapat menanganinya dengan lebih baik. Sedangkan Tornado / Twisted dapat melakukan tugas server web, menanggapi permintaan web.

Bagaimana kita bisa membuat situs yang tidak efisien menggunakan Tornado?

  1. Lakukan tugas komputasi komputasional apa pun
  2. Memperkenalkan operasi pemblokiran

Tapi saya kira itu bukan peluru perak dan jika kita hanya membabi buta menjalankan situs berbasis Django atau situs lainnya dengan Tornado, itu tidak akan memberikan peningkatan kinerja.

Kinerja biasanya merupakan karakteristik arsitektur aplikasi web lengkap. Anda dapat menurunkan kinerja dengan sebagian besar kerangka web, jika aplikasi tidak dirancang dengan benar. Pikirkan tentang caching, load balancing, dll.

Tornado dan Twisted memberikan kinerja yang wajar dan bagus untuk membangun aplikasi web yang sangat bagus. Anda dapat melihat testimonial untuk twisted dan tornado untuk melihat apa yang mereka mampu.


41
2017-11-18 10:27



Saya minta maaf karena menjawab pertanyaan lama, tetapi saya menemukan pertanyaan ini dan bertanya-tanya mengapa itu tidak memiliki lebih banyak jawaban. Untuk menjawab pertanyaan Bart J:

Saya ingin mem-parsing RSS feed dalam aplikasi Tornado. Apakah Anda menganggap itu cukup intensif secara komputasi?

Yah itu tergantung pada jenis parsing yang Anda lakukan dan pada perangkat keras apa. Lama waktu adalah waktu yang lama, jadi jika aplikasi Anda membutuhkan waktu lebih dari setengah detik untuk merespons, aplikasi akan kelihatan lamban.

Kunci untuk sistem cepat adalah arsitektur yang hebat, tidak begitu spesifik seperti kerangka yang Anda gunakan (Twisted, Tornado, Apache + PHP). Tornado memiliki gaya pemrosesan asynchronous dan itu benar-benar apa yang banyak itu turun ke dalam pendapat saya. Node.js, Twisted dan Yaws adalah contoh dari server web asynchronous lainnya yang skala sangat baik karena pendekatan yang ringan dan gaya pemrosesan asynchronous.

Begitu:

Kapan Tornado harus digunakan?

Kapan itu tidak berguna?

Tornado bagus untuk menangani banyak koneksi, karena dapat merespon klien yang masuk, mengirim penangan permintaan dan tidak memikirkan klien itu sampai callback hasil didorong pada antrean acara. Jadi untuk itu Tornado berkualitas khusus harus digunakan ketika Anda ingin menskalakan dengan baik saat menangani banyak permintaan. Pemrosesan async memfasilitasi decoupling fungsional dan akses data bersama-tidak ada. Itu berayun sangat baik dengan desain tanpa kewarganegaraan seperti BERISTIRAHAT atau yang lain Arsitektur Berorientasi Layanans. Anda juga tidak harus berurusan dengan pemijahan benang atau proses dengan overhead yang melekat begitu banyak dan Anda dapat menyimpan beberapa masalah penguncian / IPC.

Tornado tidak akan membuat banyak perbedaan, di sisi lain, jika backend dan / atau penyimpanan data Anda membutuhkan waktu lama untuk memproses permintaan. Ini membantu untuk melakukan desain konkuren dan layanan Web pada khususnya. Arsitektur konkuren membuatnya lebih mudah untuk skala desain Anda dan menjaga kopling rendah. Itu pengalaman saya dengan Tornado setidaknya.


5
2017-09-17 22:40