คำถามติดแท็ก redis

3
วิธีการนำคิวข้อความไปใช้กับ Redis
ทำไม Redis ถึงเข้าคิว? ฉันอยู่ภายใต้ความประทับใจที่ Redis สามารถสร้างผู้สมัครที่ดีสำหรับการนำระบบคิวเข้ามาใช้ จนถึงตอนนี้เราได้ใช้ฐานข้อมูล MySQL กับโพลหรือ RabbitMQ ด้วย RabbitMQ เรามีปัญหามากมาย - ห้องสมุดลูกค้านั้นแย่มากและบั๊กกี้และเราไม่ต้องการลงทุนชั่วโมงนักพัฒนามากเกินไปในการแก้ไขปัญหาเหล่านี้ปัญหาบางอย่างเกี่ยวกับคอนโซลการจัดการเซิร์ฟเวอร์ ฯลฯ และในเวลานั้น อย่างน้อยเราก็ไม่ได้จับเป็นมิลลิวินาทีหรือผลักดันประสิทธิภาพอย่างจริงจังดังนั้นตราบใดที่ระบบมีสถาปัตยกรรมที่รองรับคิวอย่างชาญฉลาดเราอาจมีรูปร่างที่ดี ตกลงนั่นคือพื้นหลัง โดยพื้นฐานแล้วฉันมีโมเดลคิวที่เรียบง่ายคลาสสิกผู้ผลิตหลายรายผลิตงานและบริโภคผู้บริโภคจำนวนมากและทั้งผู้ผลิตและผู้บริโภคต้องสามารถปรับขนาดได้อย่างชาญฉลาด ปรากฎว่าไร้เดียงสาPUBSUBไม่ทำงานเนื่องจากฉันไม่ต้องการให้สมาชิกทั้งหมดใช้งานฉันแค่ต้องการสมาชิกหนึ่งคนเพื่อรับงาน ที่ผ่านครั้งแรกมันดูเหมือนฉันชอบBRPOPLPUSHคือการออกแบบที่ชาญฉลาด เราสามารถใช้ BRPOPLPUSH ได้หรือไม่? การออกแบบพื้นฐานด้วยBRPOPLPUSHคือคุณมีคิวงานหนึ่งคิวและคิวความคืบหน้า เมื่อผู้บริโภคได้รับการทำงานมันอะตอมผลักดันรายการลงในคิวความคืบหน้าและเมื่อเสร็จสิ้นการทำงานมันLREMเป็นมัน สิ่งนี้จะช่วยป้องกันไม่ให้เกิดการปิดกั้นการทำงานหากลูกค้าตายและทำการตรวจสอบได้อย่างง่ายดาย - ตัวอย่างเช่นเราสามารถบอกได้ว่ามีปัญหาที่ทำให้ผู้บริโภคต้องใช้เวลานานในการปฏิบัติงานนอกเหนือจากการบอกว่ามีงานจำนวนมากหรือไม่ มันทำให้มั่นใจ ส่งมอบงานให้กับผู้บริโภคเพียงรายเดียว ทำงานช้าลงในคิวที่กำลังดำเนินการอยู่ดังนั้นจึงไม่สามารถปิดกั้นผู้บริโภคได้ ข้อเสียเปรียบ มันค่อนข้างแปลกสำหรับฉันที่การออกแบบที่ดีที่สุดที่ฉันพบไม่ได้ใช้จริงPUBSUBเนื่องจากนี่เป็นสิ่งที่บล็อกโพสต์ส่วนใหญ่เกี่ยวกับการรอคิว Redis ดังนั้นฉันรู้สึกว่าฉันขาดอะไรบางอย่างที่ชัดเจน วิธีเดียวที่ฉันเห็นการใช้งานPUBSUBโดยไม่ต้องเสียงานสองครั้งคือเพียงแค่ส่งการแจ้งเตือนว่างานมาถึงแล้วซึ่งผู้บริโภคสามารถไม่ปิดกั้นRPOPLPUSHได้ เป็นไปไม่ได้ที่จะขอมากกว่าหนึ่งรายการงานในแต่ละครั้งซึ่งดูเหมือนว่าจะเป็นปัญหาด้านประสิทธิภาพ ไม่ใช่เรื่องใหญ่สำหรับสถานการณ์ของเรา แต่เห็นได้ชัดว่าการดำเนินการนี้ไม่ได้ถูกออกแบบมาสำหรับปริมาณงานสูงหรือสถานการณ์นี้ ในระยะสั้น: ฉันไม่มีอะไรที่โง่หรือเปล่า? เพิ่มแท็ก node.js ด้วยเพราะนั่นคือภาษาที่ฉันใช้เป็นหลัก โหนดอาจเสนอการทำให้เรียบง่ายบางอย่างในการดำเนินการเนื่องจากลักษณะแบบเธรดเดียวและไม่มีการปิดกั้น แต่ยิ่งไปกว่านั้นฉันใช้ไลบรารี่ node-redis และวิธีแก้ปัญหาควรหรืออาจอ่อนไหวต่อจุดแข็งและจุดอ่อนของมัน

1
Redis vs Zookeeper
ดูเหมือนว่าโง่เมื่อเปรียบเทียบเซิร์ฟเวอร์ทั้งสองนี้เนื่องจากพวกเขามีความหมายที่แตกต่างกันมาก แต่ถ้าคุณคิดเกี่ยวกับมันพวกเขาสามารถทำสิ่งที่คล้ายกันมากมาย: เก็บข้อมูลการกำหนดค่าการล็อคแบบกระจายการเข้าคิว ฯลฯ ฉันมีตัวอย่างของRedisที่ฉันใช้กับสิ่งที่เกี่ยวข้องกับการผลิตบางอย่าง แต่ต้องการทำการซิงโครไนซ์อย่างง่ายระหว่างเซิร์ฟเวอร์ อะไรZookeeperให้ฉันที่ Redis จะไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.