คำถามติดแท็ก event-sourcing

7
ใช้ Kafka เป็น (CQRS) Eventstore ความคิดที่ดี?
ถึงแม้ว่าผมจะเคยเจอKafkaก่อนผมเพิ่งตระหนัก Kafka บางทีอาจจะใช้เป็น (พื้นฐานของการบริการ) CQRS , eventstore หนึ่งในประเด็นหลักที่คาฟคาสนับสนุน: แน่นอนว่าการจับ / จัดเก็บเหตุการณ์ทั้งหมดของ HA สถาปัตยกรรมผับ / ย่อย ความสามารถในการเล่นซ้ำบันทึกเหตุการณ์ซึ่งช่วยให้ความสามารถสำหรับสมาชิกใหม่ที่จะลงทะเบียนกับระบบหลังจากข้อเท็จจริง เป็นที่ยอมรับว่าฉันไม่ใช่ 100% ที่เชี่ยวชาญในการจัดหา CQRS / การจัดหากิจกรรม แต่ดูเหมือนว่าใกล้เคียงกับร้านค้าที่ควรจะเป็น สิ่งที่ตลกคือ: ฉันไม่สามารถพบได้มากนักเกี่ยวกับการใช้คาฟคาในการเป็นสถานที่จัดงานดังนั้นฉันอาจจะพลาดอะไรบางอย่างไป ดังนั้นอะไรที่ขาดหายไปจากคาฟคาเพื่อให้เป็นอีเวนต์ที่ดี? มันจะทำงานอย่างไร ใช้มันผลิตหรือไม่ สนใจข้อมูลเชิงลึกลิงก์และอื่น ๆ โดยทั่วไปสถานะของระบบจะถูกบันทึกตามธุรกรรม / เหตุการณ์ที่ระบบเคยได้รับแทนที่จะบันทึกเพียงสถานะปัจจุบัน / สแน็ปช็อตของระบบซึ่งเป็นสิ่งที่มักจะทำ (คิดว่ามันเป็นบัญชีแยกประเภททั่วไปในการบัญชี: การทำธุรกรรมทั้งหมดรวมถึงสถานะสุดท้าย) ซึ่งจะช่วยให้ทุกสิ่งที่ยอดเยี่ยม แต่เพียงอ่านบนลิงก์ที่มีให้

6
การใช้ RDBMS เป็นที่เก็บข้อมูลการจัดหาเหตุการณ์
ถ้าฉันใช้ RDBMS (เช่น SQL Server) เพื่อเก็บข้อมูลการจัดหาเหตุการณ์สคีมาจะมีลักษณะอย่างไร ฉันเคยเห็นรูปแบบบางอย่างที่พูดถึงในแง่นามธรรม แต่ไม่มีอะไรเป็นรูปธรรม ตัวอย่างเช่นสมมติว่ามีเอนทิตี "ผลิตภัณฑ์" และการเปลี่ยนแปลงของผลิตภัณฑ์นั้นอาจอยู่ในรูปแบบของ: ราคาต้นทุนและคำอธิบาย ฉันสับสนว่าฉันจะ: มีตาราง "ProductEvent" ซึ่งมีช่องทั้งหมดสำหรับผลิตภัณฑ์โดยที่การเปลี่ยนแปลงแต่ละครั้งหมายถึงระเบียนใหม่ในตารางนั้นรวมทั้ง "ใครทำอะไรที่ไหนทำไมเมื่อใดและอย่างไร" (WWWWWH) ตามความเหมาะสม เมื่อต้นทุนราคาหรือคำอธิบายมีการเปลี่ยนแปลงแถวใหม่ทั้งหมดที่เพิ่มเพื่อแสดงถึงผลิตภัณฑ์ จัดเก็บต้นทุนราคาและคำอธิบายของผลิตภัณฑ์ในตารางแยกกันที่เชื่อมต่อกับตารางผลิตภัณฑ์ด้วยความสัมพันธ์ของคีย์ต่างประเทศ เมื่อเกิดการเปลี่ยนแปลงคุณสมบัติเหล่านั้นให้เขียนแถวใหม่ด้วย WWWWWH ตามความเหมาะสม จัดเก็บ WWWWWH รวมทั้งอ็อบเจ็กต์ที่ทำให้เป็นอนุกรมซึ่งเป็นตัวแทนของเหตุการณ์ในตาราง "ProductEvent" ซึ่งหมายความว่าเหตุการณ์นั้นจะต้องถูกโหลดยกเลิกการต่ออนุกรมและเล่นซ้ำในรหัสแอปพลิเคชันของฉันเพื่อสร้างสถานะแอปพลิเคชันใหม่สำหรับผลิตภัณฑ์ที่กำหนด . โดยเฉพาะอย่างยิ่งฉันกังวลเกี่ยวกับตัวเลือก 2 ข้างต้น ตารางผลิตภัณฑ์จะแทบจะเป็นตารางเดียวต่อคุณสมบัติโดยที่การโหลดสถานะแอปพลิเคชันสำหรับผลิตภัณฑ์ที่กำหนดจะต้องมีการโหลดเหตุการณ์ทั้งหมดสำหรับผลิตภัณฑ์นั้นจากตารางเหตุการณ์ของผลิตภัณฑ์แต่ละรายการ ระเบิดโต๊ะนี้มีกลิ่นผิดสำหรับฉัน ฉันแน่ใจว่า "ขึ้นอยู่กับ" และแม้ว่าจะไม่มี "คำตอบที่ถูกต้อง" สักคำเดียว แต่ฉันก็พยายามทำความเข้าใจกับสิ่งที่ยอมรับได้และสิ่งใดที่ยอมรับไม่ได้โดยสิ้นเชิง ฉันทราบด้วยว่า NoSQL สามารถช่วยได้ที่นี่ซึ่งเหตุการณ์สามารถจัดเก็บไว้กับรูทรวมซึ่งหมายถึงการร้องขอเพียงครั้งเดียวไปยังฐานข้อมูลเพื่อรับเหตุการณ์เพื่อสร้างวัตถุขึ้นใหม่ แต่เราไม่ได้ใช้ฐานข้อมูล NoSQL ที่ ช่วงเวลาที่ฉันรู้สึกถึงทางเลือกอื่น

4
การ seed ฐานข้อมูล microservices
รับบริการ A (CMS) ที่ควบคุมรูปแบบ (ผลิตภัณฑ์สมมติว่ามีเพียงฟิลด์เดียวที่มี id ชื่อเรื่องราคา) และบริการ B (การจัดส่ง) และ C (อีเมล) ที่ต้องแสดงรูปแบบที่กำหนดแนวทางที่ควรจะเป็น การซิงโครไนซ์ข้อมูลโมเดลที่ได้รับจากบริการเหล่านั้นในแนวทางการจัดหากิจกรรม สมมติว่ารายการสินค้าที่ไม่ค่อยมีการเปลี่ยนแปลง ( แต่ไม่เปลี่ยนแปลง) และว่ามีผู้ดูแลระบบที่เข้าถึงข้อมูลสามารถของการจัดส่งและอีเมลบ่อยมาก (ตัวอย่างเช่นฟังก์ชันคือ: B: display titles of products the order containedและ C: display content of email about shipping that is going to be sent) แต่ละบริการมีฐานข้อมูลของตนเอง โซลูชันที่ 1 ส่งข้อมูลที่จำเป็นทั้งหมดเกี่ยวกับผลิตภัณฑ์ภายในเหตุการณ์ซึ่งหมายถึงโครงสร้างต่อไปนี้สำหรับorder_placed: { order_id: [guid], product: { …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.