ขึ้นอยู่กับความต้องการในการปรับขนาดของคุณและอินสแตนซ์ของบริการไมโครสโคปของคุณจำเป็นต้องร่วมมือกันอย่างไรเพื่อให้ผลลัพธ์เดียว มันช่วยให้รู้ว่าอะไรคือการแลกเปลี่ยน:
เก็บทุกอย่างไว้ในฐานข้อมูลเดียว
- การกำหนดค่าที่ง่ายขึ้น
- ไม่จำเป็นต้องมีการประสานงานหรือสื่อสารกับบริการอื่น ๆ ของคุณ
- ค้นพบชุดข้อมูลของคุณได้ง่ายขึ้น
- ประสิทธิภาพของระบบถูก จำกัด โดยประสิทธิภาพของฐานข้อมูล
การแยกฐานข้อมูลออกจากกัน
- คำตอบแบบเต็มสำหรับคำขออาจถูกกระจายไปทั่วอินสแตนซ์ของบริการไมโคร
- ในกรณีนี้คุณได้เพิ่มการสื่อสารและการเจรจาเพื่อแก้ไขคำขอ
- การจัดการข้อมูลเมื่อคุณปล่อยโหนด microservice (แม้ในขณะที่ฐานข้อมูลยังคงอยู่คุณจะไม่สามารถเข้าถึงได้จนกว่าจะมีการสร้างฐานข้อมูลใหม่ที่ถูกต้อง)
- เพิ่มความซับซ้อนของการกำหนดค่า
คุณกำลังแก้ไขปัญหาอะไร
ในบางกรณีคุณกังวลเกี่ยวกับข้อมูลชั่วคราวเท่านั้น หากฐานข้อมูลดับลงก็ไม่มีปัญหาใหญ่ ในกรณีเหล่านั้นคุณอาจไม่จำเป็นต้องมีฐานข้อมูลเริ่มต้นด้วย เพียงเก็บทุกอย่างไว้ในความทรงจำและทำให้ทุกอย่างรวดเร็วอย่างเห็นได้ชัด นี่เป็นทางออกที่ง่ายที่สุดในการทำงานกับ
ในกรณีอื่นคุณต้องมีความถูกต้องของข้อมูล แต่ฐานข้อมูลของคุณสามารถขยายความจุได้ตามจำนวนโหนดที่มี ในกรณีนี้ฐานข้อมูลเดียวอาจมากกว่าเพียงพอและการจัดการการตอบสนองอิสระเป็นคำตอบที่ถูกต้อง
มีหลายกรณีในระหว่างนั้น ตัวอย่างเช่นคุณอาจมีฐานข้อมูลที่เฉพาะเจาะจงตามภูมิภาคดังนั้นสำหรับแต่ละอินสแตนซ์ของบริการของคุณในภูมิภาคอื่นคุณมีฐานข้อมูลแยกต่างหาก โดยทั่วไปการแบ่งฐานข้อมูลจะทำได้ไม่ดีในบางภูมิภาคดังนั้นนี่เป็นวิธีการแปลข้อมูลเล็กน้อยและควบคุมการประสานงานของคุณเอง
หลักคำสอนและความจริง
ฉันได้อ่านบทความเกี่ยวกับไมโครแวร์จำนวนหนึ่งและดูว่าควรจะแยกส่วนอย่างไร คำแนะนำมีตั้งแต่การเก็บส่วนหน้าส่วนหน้า microservice และ data Tier ไว้เป็นหน่วยทั้งหมดไปจนถึงการแชร์ฐานข้อมูลและ / หรือรหัสส่วนหน้าสำหรับทุกอินสแตนซ์ โดยปกติแล้วการแยกที่มากกว่าจะให้ความสามารถในการปรับขยายที่ยิ่งใหญ่ที่สุด
หาก microservice ของคุณมีการคำนวณที่หนักหน่วงก็สมควรที่จะอนุญาตจำนวน microservices เหล่านั้นตามความจำเป็น - การแชร์ฐานข้อมูลหรือแม้แต่รหัสส่วนหน้าก็ไม่ทำให้เสียหรือขัดขวางวิธีการนี้
ความจริงก็คือความต้องการเฉพาะของโครงการของคุณจะต้องมีชุดของการประนีประนอมที่แตกต่างกันเพื่อให้งานเสร็จในเวลาที่เหมาะสมและจัดการกับภาระของระบบที่คุณวัด (บวกอีกเล็กน้อย) พิจารณา front-end, microsrervice และ data tier trio ที่แยกได้อย่างสมบูรณ์เพื่อเป้าหมายที่สูงส่ง ยิ่งคุณมีความต้องการระบบของคุณมากเท่าใดก็ยิ่งใกล้ถึงเป้าหมายนั้นมากขึ้นเท่านั้น เราไม่ได้ทั้งหมด[insert name of highly successful web entity here]
และพวกเขาไม่ได้เริ่มต้นที่พวกเขาอยู่ตอนนี้ บางครั้งคุณต้องเริ่มต้นด้วยสถานการณ์ที่ไม่สมบูรณ์แบบและมีความสุขกับมัน