กระจายคิวงาน (เช่นคื่นฉ่าย) เทียบกับสคริปต์ crontab


92

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

ฉันรู้ว่าในคื่นฉ่ายซึ่งเป็นเฟรมเวิร์กของไพ ธ อนคุณสามารถตั้งค่าหน้าต่างที่กำหนดเวลาเพื่อให้ฟังก์ชันทำงาน อย่างไรก็ตามสามารถทำได้อย่างง่ายดายใน linux crontab ที่กำกับไว้ที่สคริปต์ python

และเท่าที่ฉันรู้และแสดงจากเว็บแอป django-celery ของฉันเองคื่นฉ่ายใช้หน่วยความจำ RAM มากกว่าการตั้งค่า crontab ดิบ ความแตกต่างเพียงไม่กี่ร้อย MB สำหรับแอปที่ค่อนข้างเล็ก

ใครสามารถช่วยฉันด้วยความแตกต่างนี้? บางทีคำอธิบายระดับสูงเกี่ยวกับวิธีการทำงานของคิวงาน / crontabs โดยทั่วไปก็น่าจะดีเช่นกัน

ขอบคุณ.

คำตอบ:


135

ขึ้นอยู่กับว่าคุณต้องการให้งานของคุณทำอะไรถ้าคุณต้องการแจกจ่ายและวิธีที่คุณต้องการจัดการ

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

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

ตัวอย่างเช่นสมมติว่าคุณเพิ่งเปิดตัวเว็บแอปพลิเคชันใหม่และคุณได้รับการลงชื่อสมัครใช้หลายร้อยครั้งซึ่งต้องมีอีเมลส่งถึงผู้ใช้แต่ละคน การส่งอีเมลอาจใช้เวลานาน (ในเชิงเปรียบเทียบ) ดังนั้นคุณจึงตัดสินใจว่าจะจัดการอีเมลเปิดใช้งานผ่านงานต่างๆ

หากคุณใช้ cron คุณจะต้องตรวจสอบให้แน่ใจว่าทุกนาที cron สามารถประมวลผลอีเมลทั้งหมดที่ต้องส่งได้ หากคุณมีเซิร์ฟเวอร์หลายเครื่องตอนนี้คุณต้องตรวจสอบให้แน่ใจว่าไม่ได้ส่งอีเมลการเปิดใช้งานหลายฉบับไปยังผู้ใช้คนเดียวกันคุณต้องมีการซิงโครไนซ์บางประเภท

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

คุณสามารถใช้ผักชีฝรั่งแทน cron ได้ แต่นั่นไม่ใช่การใช้งานหลัก ใช้สำหรับการทำฟาร์มงานแบบอะซิงโครนัสในคลัสเตอร์แบบกระจาย

และแน่นอนคื่นฉ่ายมีคุณสมบัติมากมายที่ cron ไม่มี

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