ตัวเลือกบางอย่าง
ใช้ช่องทางการสื่อสารแบบถาวร
แทนที่จะเป็น HTTP ให้ปล่อยข้อความในคิวที่พร้อมใช้งานสูงและต่อเนื่อง เช่น Kafka ตราบใดที่เซิร์ฟเวอร์เป้าหมายพร้อมใช้งานในบางจุดก็จะได้รับข้อความ
ตอนนี้คุณมีข้อเสียของการเตรียมและจัดการระบบย่อยที่ซับซ้อน (คิว) ดังนั้นให้แน่ใจว่าคุณวิเคราะห์ว่าสิ่งนี้คุ้มค่าหรือไม่
ถอยกลับและลองอีกครั้ง
ให้ผู้เรียกรักษาคำขอที่ล้มเหลว (อาจเก็บไว้ที่ดิสก์) และลองใหม่เป็นระยะ เป็นสิ่งสำคัญในกรณีนี้เพื่อแยกความแตกต่างระหว่างคำขอของคุณที่ก่อให้เกิดความผิดพลาดเทียบกับการให้บริการเพียงลง อดีตอาจเกิดจากข้อผิดพลาดและควรเข้าสู่ระบบ ... ลองใหม่อาจจะไม่สร้างความแตกต่างจนกว่าการแก้ไขจะทำ
ตรวจจับและชดเชย
งานตรวจสอบเป็นระยะสำหรับเงื่อนไขความสอดคล้องระหว่างไมโครไซต์ เช่นความล้มเหลวบันทึกข้อมูลจนถึงการสืบค้น API โดยตรงตามความจำเป็น หากพบปัญหา (เช่นมีคำสั่งซื้อ แต่ไม่ได้รับรายการบรรจุภัณฑ์) ให้ทำตามขั้นตอนการชดเชย ขั้นตอนเหล่านั้นอาจเป็นการสร้างตั๋วการสนับสนุนสำหรับการแก้ไขด้วยตนเองหรือส่งอีเมลถึงบุคคลอื่นหรืออะไรก็ตาม
พิจารณาทางเลือกการออกแบบ
กรณีเช่นนี้อาจเรียกร้องให้เกตเวย์ API จัดการการโทรไปยังไมโครไซต์ที่ได้รับผลกระทบ วิธีนี้จะช่วยให้คุณควบคุมกลยุทธ์ที่ใช้ในการลดปัญหานี้ คุณอาจไม่ต้องการให้ลูกค้ารับทราบรายละเอียดการติดตั้งเหล่านั้น ดูเบรกเกอร์รูปแบบ
เนื่องจาก microservices เป็นอิสระมักจะมีกรณีความล้มเหลวบางอย่างที่อาจส่งผลให้เกิดความไม่สอดคล้องกัน คุณต้องพร้อมที่จะทำการแก้ไขด้วยตนเองเมื่อเกิดขึ้น
หากคุณต้องการความมั่นคงที่แข็งแกร่งจากนั้น microservices จะไม่เหมาะสม หากยังคงต้อง scalability คุณอาจต้องการที่จะมองเข้าไปshardingที่ข้อมูลที่เกี่ยวข้องสามารถร่วมตั้งอยู่บนชาร์ดเหมือนกันสำหรับการค้ำประกันความสอดคล้อง คุณยังสามารถไต่ระดับ IO โดยการเพิ่มเศษ
หากคุณต้องการความมั่นคงที่แข็งแกร่งและไม่มีปัญหาเรื่องความสามารถในการขยายระบบให้ใช้บริการเสาหิน ใช้ไลบรารีเป็นขอบเขตภายในแอปพลิเคชันของคุณเพื่อแยกข้อกังวลออก