จะใช้ Tornado เมื่อใดและอย่างไร ไร้ประโยชน์เมื่อไหร่


84

โอเค Tornado ไม่ปิดกั้นและค่อนข้างเร็วและสามารถจัดการคำขอยืนจำนวนมากได้อย่างง่ายดาย

แต่ฉันเดาว่ามันไม่ใช่กระสุนเงินและถ้าเราแค่เรียกใช้ Django-based หรือไซต์อื่น ๆ ที่มี Tornado แบบสุ่มสี่สุ่มห้ามันจะไม่เพิ่มประสิทธิภาพใด ๆ

ฉันไม่พบคำอธิบายที่ครอบคลุมเกี่ยวกับเรื่องนี้ดังนั้นฉันจึงถามที่นี่:

  • ควรใช้ Tornado เมื่อใด
  • ไร้ประโยชน์เมื่อไหร่
  • เมื่อใช้มันควรคำนึงถึงอะไรบ้าง?
  • เราจะสร้างไซต์ที่ไม่มีประสิทธิภาพโดยใช้ Tornado ได้อย่างไร?
  • มีเซิร์ฟเวอร์และเว็บเฟรมเวิร์ค เราควรใช้กรอบงานเมื่อใดและเราจะแทนที่ด้วยกรอบงานอื่นได้เมื่อใด

คำตอบ:


45

มีเซิร์ฟเวอร์และเว็บเฟรมเวิร์ค เราควรใช้กรอบงานเมื่อใดและเราจะแทนที่ด้วยกรอบงานอื่นได้เมื่อใด

ความแตกต่างนี้ค่อนข้างพร่ามัว หากคุณให้บริการเฉพาะเพจแบบคงที่คุณจะใช้เซิร์ฟเวอร์ที่รวดเร็วเช่น lighthttpd มิฉะนั้นเซิร์ฟเวอร์ส่วนใหญ่จะมีความซับซ้อนของเฟรมเวิร์กในการพัฒนาเว็บแอปพลิเคชัน Tornado เป็นเว็บเฟรมเวิร์คที่ดี Twisted มีความสามารถมากกว่าและถือเป็นโครงข่ายที่ดี รองรับโปรโตคอลจำนวนมาก

Tornado และ Twisted เป็นเฟรมเวิร์กที่ให้การสนับสนุนการพัฒนาแอปพลิเคชันเว็บ / เครือข่ายแบบอะซิงโครนัสแบบไม่ปิดกั้น

ควรใช้ Tornado เมื่อใด ไร้ประโยชน์เมื่อไหร่ เมื่อใช้มันควรคำนึงถึงอะไรบ้าง?

โดยธรรมชาติแล้ว Async / Non-Blocking I / O จะทำงานได้ดีเมื่อ I / O เร่งรัดและไม่ต้องใช้การคำนวณอย่างเข้มข้น แอปพลิเคชันเว็บ / เครือข่ายส่วนใหญ่เหมาะกับรุ่นนี้ หากแอปพลิเคชันของคุณต้องการงานที่ต้องใช้การคำนวณอย่างเข้มข้นคุณจะต้องมอบหมายให้บริการอื่น ๆ ที่สามารถจัดการได้ดีกว่า ในขณะที่ Tornado / Twisted สามารถทำงานของเว็บเซิร์ฟเวอร์ตอบสนองต่อคำขอของเว็บได้

เราจะสร้างไซต์ที่ไม่มีประสิทธิภาพโดยใช้ Tornado ได้อย่างไร?

  1. ทำงานที่ต้องใช้คอมพิวเตอร์อย่างเข้มข้น
  2. แนะนำการดำเนินการบล็อก

แต่ฉันเดาว่ามันไม่ใช่กระสุนเงินและถ้าเราแค่เรียกใช้ Django-based หรือไซต์อื่น ๆ ที่มี Tornado แบบสุ่มสี่สุ่มห้ามันจะไม่เพิ่มประสิทธิภาพใด ๆ

ประสิทธิภาพมักเป็นลักษณะของสถาปัตยกรรมเว็บแอปพลิเคชันที่สมบูรณ์ คุณสามารถลดประสิทธิภาพด้วยเว็บเฟรมเวิร์กส่วนใหญ่ได้หากแอปพลิเคชันไม่ได้รับการออกแบบอย่างเหมาะสม คิดถึงการแคชการทำโหลดบาลานซ์เป็นต้น

Tornado และ Twisted ให้ประสิทธิภาพที่สมเหตุสมผลและเหมาะสำหรับการสร้างเว็บแอปพลิเคชันที่มีประสิทธิภาพ คุณสามารถตรวจสอบคำรับรองสำหรับทั้งบิดและพายุทอร์นาโดเพื่อดูว่าพวกเขาสามารถทำอะไรได้บ้าง


1
ขอบคุณสำหรับคำตอบ เพียงแค่ต้องการทำให้บางประเด็นชัดเจน: ฉันสามารถใช้ Flask หรือ Django bihind Tornado และรับประโยชน์ทั้งหมดได้หรือไม่ (ถ้าฉันไม่ได้ทำงานในค่าย) โดยไม่ต้องเปลี่ยนรหัสการสมัคร?
Vladimir Sidorenko

ถ้าใช่ - อะไรคือความแตกต่างเมื่อเทียบกับการวิ่งพูดด้วยฟลัป ขอขอบคุณ.
Vladimir Sidorenko

ฉันต้องการแยกวิเคราะห์ฟีด RSS ในแอปพลิเคชัน Tornado คุณคิดว่าการคำนวณค่อนข้างเข้มข้นหรือไม่?
Susheel Javadi

6

ฉันขอโทษที่ตอบคำถามเก่า ๆ แต่ฉันเจอคำถามนี้และสงสัยว่าทำไมถึงไม่มีคำตอบมากกว่านี้ เพื่อตอบคำถามของ Bart J:

ฉันต้องการแยกวิเคราะห์ฟีด RSS ในแอปพลิเคชัน Tornado คุณคิดว่าการคำนวณค่อนข้างเข้มข้นหรือไม่?

นั่นขึ้นอยู่กับประเภทของการแยกวิเคราะห์ที่คุณกำลังทำและฮาร์ดแวร์อะไร :) เวลานานเป็นเวลานานดังนั้นหากแอปของคุณใช้เวลามากกว่าครึ่งวินาทีในการตอบกลับมันจะดูเฉื่อยชา - โปรไฟล์แอปของคุณ

กุญแจสำคัญของระบบที่รวดเร็วคือสถาปัตยกรรมที่ยอดเยี่ยมไม่ใช่เฉพาะเจาะจงมากนักเช่นเฟรมเวิร์กที่คุณใช้ (Twisted, Tornado, Apache + PHP) ทอร์นาโดมีรูปแบบการประมวลผลแบบอะซิงโครนัสและนั่นคือสิ่งที่หลาย ๆ อย่างเกิดขึ้นในความคิดของฉัน Node.js, Twisted และ Yaws เป็นตัวอย่างของเว็บเซิร์ฟเวอร์แบบอะซิงโครนัสอื่น ๆ ที่ปรับขนาดได้เป็นอย่างดีเนื่องจากแนวทางที่มีน้ำหนักเบาและรูปแบบการประมวลผลแบบอะซิงโครนัส

ดังนั้น:

ควรใช้ Tornado เมื่อใด

ไร้ประโยชน์เมื่อไหร่

Tornado เหมาะสำหรับการจัดการการเชื่อมต่อจำนวนมากเนื่องจากสามารถตอบสนองต่อไคลเอนต์ที่เข้ามาส่งตัวจัดการคำขอและอย่าคิดเกี่ยวกับไคลเอนต์นั้นจนกว่าจะมีการผลักผลลัพธ์การโทรกลับในคิวเหตุการณ์ ดังนั้นสำหรับคุณภาพที่เฉพาะเจาะจงนั้นควรใช้ Tornado เมื่อคุณต้องการปรับขนาดให้ดีเมื่อจัดการกับคำขอจำนวนมาก การประมวลผลแบบ async ช่วยอำนวยความสะดวกในการแยกการทำงานและการเข้าถึงข้อมูลที่ไม่ใช้ร่วมกัน ซึ่งเข้ากันได้ดีกับการออกแบบที่ไร้สัญชาติเช่นRESTหรือService Oriented Architecture s นอกจากนี้คุณยังไม่ต้องจัดการกับเธรดการวางไข่หรือกระบวนการที่มีค่าใช้จ่ายโดยธรรมชาติมากนักและคุณสามารถบันทึกปัญหาการล็อก / IPC ได้

พายุทอร์นาโดจะไม่สร้างความแตกต่างมากนักในทางกลับกันหากแบ็กเอนด์และ / หรือที่เก็บข้อมูลของคุณใช้เวลาดำเนินการตามคำขอเป็นเวลานาน ช่วยในการออกแบบพร้อมกันและบริการบนเว็บโดยเฉพาะ สถาปัตยกรรมที่ทำงานพร้อมกันช่วยให้ปรับขนาดการออกแบบของคุณได้ง่ายขึ้นและทำให้ข้อต่อต่ำ นั่นเป็นประสบการณ์ของฉันกับ Tornado อย่างน้อย


จะเกิดอะไรขึ้นถ้าคุณมีการดำเนินการเพียงเล็กน้อยในบริการของคุณที่มีการคำนวณอย่างเข้มข้น (พูด> 1 วินาที) ยังเป็นไปได้ไหมที่จะทำการประมวลผลในลักษณะที่ไม่ปิดกั้น
tigeronk2

@ tigeronk2 ใช่ แต่คุณจะต้องรันการคำนวณในเธรด / กระบวนการอื่น
Morten Jensen

หรืออาจเรียกใช้กระบวนการที่เข้มข้นเป็นบริการอื่นเพื่อให้เกิดความสามารถในการปรับขนาดและการแยกโดยมีค่าใช้จ่ายเพียงเล็กน้อยเมื่อเทียบกับการจัดการกระบวนการอื่น ดูลิงก์สถาปัตยกรรมที่มุ่งเน้นการบริการ
Tyeth

การแยกวิเคราะห์ RSS นั้นเกือบจะเป็นไปตามคำจำกัดความไม่ใช่การประมวลผลที่หนักหน่วงเว้นแต่คุณจะทำผิดอย่างมาก
tripleee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.