ฉันเพิ่งอ่านบทความนี้และฉันสับสน
ลองจินตนาการ 1 webapp และ 1 แอพลิเคชันที่แตกต่างกันทำหน้าที่เป็น "คนงาน" ทั้งสองร่วมกันฐานข้อมูลเดียวกัน
โอ้ฉันพูดว่า "การแบ่งปัน" .. แต่บทความจะเตือนอะไร :
ประการที่สี่การแบ่งปันฐานข้อมูลระหว่างแอปพลิเคชัน (หรือบริการ) เป็นสิ่งที่ไม่ดี มันเป็นการล่อลวงเกินไปที่จะทำให้รัฐร่วมอสัณฐานอยู่ในนั้นและก่อนที่คุณจะรู้ว่าคุณจะมีสัตว์ประหลาดคู่ขนานอย่างมหาศาล
=> ไม่เห็นด้วย มีบางกรณีที่แอปพลิเคชันที่แตกต่างยังคงเป็นส่วนหนึ่งของหน่วยเดียวกันดังนั้นแนวคิดของ "ปัญหาการมีเพศสัมพันธ์" จึงไม่มีเหตุผลในกรณีนี้
มาดำเนินการต่อ: เว็บแอปจัดการคำขอ HTTP ของไคลเอ็นต์และอาจอัปเดตเมื่อใดก็ได้ที่มีการรวม (คำศัพท์ DDD) เพื่อสร้างกิจกรรมโดเมนที่สอดคล้องกัน
เป้าหมายของผู้ปฏิบัติงานคือการจัดการกิจกรรมโดเมนเหล่านั้นโดยการประมวลผลงานที่ต้องการ
ประเด็นก็คือ:
ข้อมูลเหตุการณ์ควรส่งผ่านไปยังผู้ปฏิบัติงานอย่างไร
วิธีแรกในการส่งเสริมการอ่านบทความคือการใช้ RabbitMQ เป็นมิดเดิลแวร์ที่มุ่งเน้นข้อความ
เวิร์กโฟลว์จะง่าย:
เมื่อใดก็ตามที่เว็บไดโนสร้างเหตุการณ์มันจะเผยแพร่ผ่าน RabbitMQ ซึ่งฟีดคนงาน
ข้อเสียเปรียบก็คือไม่มีสิ่งใดรับประกันความสอดคล้องทันทีระหว่างการคอมมิชชันของการอัพเดตแบบรวมและการเผยแพร่เหตุการณ์โดยไม่ต้องจัดการกับความล้มเหลวในการส่งที่เป็นไปได้ ... หรือปัญหาฮาร์ดแวร์; นั่นเป็นอีกประเด็นหลัก
ตัวอย่าง: เป็นไปได้ว่าเหตุการณ์ถูกเผยแพร่โดยไม่ประสบความสำเร็จในการอัปเดตรวม ... ส่งผลให้เกิดเหตุการณ์ที่แสดงถึงการแสดงโมเดลโดเมนที่ผิดพลาด
คุณสามารถยืนยันได้ว่า XA ทั่วโลก (การยอมรับแบบสองเฟส) มีอยู่แล้ว แต่ไม่ใช่โซลูชันที่เหมาะกับฐานข้อมูลหรือมิดเดิลแวร์ทั้งหมด
ดังนั้นอะไรจะเป็นทางออกที่ดีในการรับรองความสอดคล้องนี้ในทันที? :
IMO จัดเก็บเหตุการณ์ในฐานข้อมูลในธุรกรรมโลคัลเดียวกันกับการอัพเดตแบบรวม
ตัวจัดกำหนดการแบบอะซิงโครนัสอย่างง่ายจะถูกสร้างและรับผิดชอบในการสอบถามเหตุการณ์ที่ไม่ได้เผยแพร่ในปัจจุบันจากฐานข้อมูลและส่งไปยัง RabbitMQ ซึ่งจะส่งผลให้ผู้ปฏิบัติงาน
แต่ทำไมต้องมีตัวกำหนดตารางเวลาพิเศษในฝั่งเว็บแอปและโดยวิธี: ทำไมต้องมี RabbitMQ ในกรณีนี้
โดยวิธีนี้มันดูเหมือนว่ามีเหตุผลว่า RabbitMQ อาจไม่จำเป็นโดยเฉพาะอย่างยิ่งเพราะมีการแชร์ฐานข้อมูล
อันที่จริงไม่ว่าในกรณีใดเราเห็นว่าความสอดคล้องทันทีนั้นเกี่ยวข้องกับการสำรวจจากฐานข้อมูล
ดังนั้นทำไมคนงานถึงไม่รับผิดชอบโดยตรงกับการเลือกตั้งครั้งนี้?
ดังนั้นฉันจึงสงสัยว่าทำไมบทความมากมายบนเว็บจึงไม่สามารถจัดคิวฐานข้อมูลได้ยากขณะที่ส่งเสริมมิดเดิลแวร์ที่เน้นข้อความ
ข้อความที่ตัดตอนมาจากบทความ:
ง่ายใช้เครื่องมือที่เหมาะสมสำหรับงาน: สถานการณ์นี้กำลังส่งเสียงร้องสำหรับระบบส่งข้อความ มันแก้ปัญหาทั้งหมดที่อธิบายไว้ข้างต้น ไม่ต้องทำการสำรวจอีกต่อไปการส่งข้อความที่มีประสิทธิภาพไม่จำเป็นต้องล้างข้อความที่เสร็จสมบูรณ์จากคิวและไม่มีสถานะที่แชร์
และความสอดคล้องทันทีละเว้น?
เพื่อสรุปผลจริงๆมันดูเหมือนว่าสิ่งที่กรณีที่เป็นความหมายของฐานข้อมูลที่ใช้ร่วมกันหรือไม่เราต้องเลือกตั้งฐานข้อมูล
ฉันคิดถึงความคิดที่สำคัญบ้างไหม?
ขอบคุณ