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

3
วิธีแบ่งปัน DTO ในไมโครไซต์หรือไม่
สถานการณ์ของฉันเป็นดังนี้ ฉันกำลังออกแบบระบบที่ออกแบบมาเพื่อรับข้อมูลจากเซ็นเซอร์ประเภทต่างๆและแปลงแล้วยืนยันให้ใช้กับส่วนหน้าและบริการวิเคราะห์ต่างๆในภายหลัง ฉันพยายามออกแบบทุกบริการให้มีความเป็นอิสระมากที่สุด แต่ฉันมีปัญหา ทีมได้ตัดสินใจใช้ DTO ที่เราต้องการใช้ บริการภายนอก (ผู้รับข้อมูลเซ็นเซอร์) จะรับข้อมูลด้วยวิธีที่ไม่ซ้ำกันจากนั้นแปลงเป็นวัตถุ JSON (DTO) และส่งออกไปยัง Message Broker ผู้บริโภคของข้อความจะรู้วิธีอ่านข้อความข้อมูลเซ็นเซอร์อย่างแม่นยำ ปัญหาคือฉันใช้ DTO เดียวกันในบริการต่าง ๆ ต้องมีการอัปเดตในหลายตำแหน่ง เห็นได้ชัดว่าเราได้ออกแบบในลักษณะที่มีเขตข้อมูลพิเศษหรือขาดหายไปเล็กน้อยใน DTO ที่นี่และมีปัญหาไม่มากจนกระทั่งบริการได้รับการอัปเดต แต่ก็ยังทำให้ฉันรู้สึกเหมือนฉัน ทำผิดพลาด มันอาจกลายเป็นปวดหัวได้ง่าย ฉันจะสร้างระบบผิดหรือเปล่า? ถ้าไม่เป็นเช่นนั้นวิธีใดบ้างหรืออย่างน้อยที่สุดเพื่อบรรเทาความกังวลของฉัน

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

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