ฐานข้อมูล Microservices Nosql และคิวข้อความ
เผยแพร่แล้ว: 2022-11-22Microservices เป็นสถาปัตยกรรมซอฟต์แวร์ประเภทหนึ่งที่อนุญาตให้นักพัฒนาสร้างโมดูลการทำงานเดี่ยวที่ทำงานร่วมกันเป็นระบบ ในระบบ microservices แต่ละบริการจะมีฐานข้อมูลของตัวเอง สิ่งนี้ทำให้แต่ละบริการได้รับการพัฒนาและปรับใช้โดยไม่ขึ้นกับบริการอื่นๆ ฐานข้อมูล Nosql เป็นฐานข้อมูลประเภทหนึ่งที่ไม่ได้ใช้โครงสร้างแบบตารางแบบดั้งเดิมของ ฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูล Nosql มักใช้สำหรับการจัดเก็บข้อมูลจำนวนมากที่ไม่เหมาะสำหรับฐานข้อมูลเชิงสัมพันธ์ Microservices สามารถพูดคุยกับฐานข้อมูล nosql โดยใช้วิธีการต่างๆ วิธีการทั่วไปอย่างหนึ่งคือการใช้คิวข้อความ ในแนวทางนี้ แต่ละบริการจะมีคิวข้อความที่ใช้เพื่อสื่อสารกับบริการอื่นๆ เมื่อบริการต้องการเข้าถึงข้อมูลในฐานข้อมูล nosql บริการจะส่งข้อความไปยังคิว บริการอื่นที่รับผิดชอบในการเข้าถึงฐานข้อมูล nosql จะดึงข้อความจากคิวและดึงข้อมูลจากฐานข้อมูล อีกวิธีหนึ่งคือการใช้ REST API ในแนวทางนี้ แต่ละบริการจะเปิดเผย REST API ที่บริการอื่นๆ สามารถใช้เพื่อเข้าถึงข้อมูลในฐานข้อมูล nosql วิธีการนี้มักใช้เมื่อข้อมูลในฐานข้อมูล nosql ได้รับการอัพเดตบ่อยครั้ง อีกวิธีหนึ่งที่ใช้กันทั่วไปคือการใช้ฐานข้อมูลกราฟ ในแนวทางนี้ แต่ละบริการจะแสดงเป็นโหนดในกราฟ ขอบในกราฟแสดงถึงความสัมพันธ์ระหว่างบริการต่างๆ วิธีการนี้มักใช้เมื่อข้อมูลในฐานข้อมูล nosql เชื่อมต่อกันอย่างมาก
เป้าหมายของไมโครเซอร์วิสคือการได้รับความเร็วสูงสุด บริการ NoSQL ส่วนใหญ่สามารถตั้งค่าได้ภายในเวลาเพียง 24 ชั่วโมง ปรับขนาดได้อย่างรวดเร็ว และสร้างโหนดข้อมูลให้ได้มากที่สุดก่อนที่จะสัมผัสเลเยอร์การคงอยู่ ผลจากทั้งหมดนี้ คุณจะมีรอบการเผยแพร่ที่เร็วขึ้น
เมื่อปรับใช้ในปริมาณมากในลักษณะที่รองรับไมโครเซอร์วิส ฐานข้อมูล NoSQL มักใช้งานได้ง่ายกว่า ความสามารถในการรวมฐานข้อมูล NoSQL เข้ากับเทคโนโลยีการสตรีมแบบเรียลไทม์นั้นมักจะเหนือกว่า
ดังที่คุณกล่าวไว้ข้างต้น บริการไมโครทุกรายการจะต้องมีข้อมูลของตน ซึ่งสามารถจัดเก็บในฐานข้อมูล สคีมาเฉพาะ หรือแม้แต่ชุดของตารางเฉพาะ (กำหนดไว้ในฐานข้อมูล)
Microservices โต้ตอบกับฐานข้อมูลอย่างไร

แอปพลิเคชันโต้ตอบกับฐานข้อมูลในรูปแบบเสาหิน ส่วนประกอบทั้งหมดของแอปพลิเคชันใช้ข้อมูลเดียวกันร่วมกัน การเป็นเจ้าของข้อมูลจะกระจายอำนาจในไมโครเซอร์วิส ในขณะที่แอปประเภทอื่นๆ จะดำเนินการโดยตรง โดยทั่วไปแล้ว บริการทั้งหมดมีที่เก็บข้อมูลส่วนตัวที่ปรับให้เหมาะกับฟังก์ชันของตน
การสร้างฐานข้อมูลแยกต่างหากสำหรับแต่ละบริการสามารถช่วยในการบังคับใช้ขอบเขตของโดเมนและป้องกันการโต้ตอบกับข้อมูลโดยไม่ได้ตั้งใจ แต่นั่นไม่ใช่วิธีแก้ปัญหาเดียว ความเป็นไปได้ในการแบ่งปันฐานข้อมูลกับบริการทั้งหมดของคุณก็เป็นตัวเลือกเช่นกัน ตราบใดที่บริการของคุณทำงานและไม่ทำให้คุณประหลาดใจด้วยข้อมูลที่ไม่คาดคิดจากบริการอื่น คุณก็ไม่เป็นไร สถาปัตยกรรมไมโครเซอร์วิสที่ใช้ฐานข้อมูลนั้นยากต่อการปรับขนาด การล่มของฐานข้อมูลจะเกิดขึ้นกับฐานข้อมูลทั้งหมด ไม่ใช่แค่คลัสเตอร์เดียว การเปลี่ยนแปลงในฐานข้อมูลอาจส่งผลกระทบต่อบริการจำนวนหนึ่ง นอกจากนี้ เนื่องจากไมโครเซอร์วิสสร้างขึ้นบนฐานข้อมูลเดียวกันและเชื่อมต่อเข้าด้วยกัน ไมโครเซอร์วิสจึงไม่เป็นอิสระจากกัน ในสถาปัตยกรรม microservices การใช้ฐานข้อมูลที่ใช้ร่วมกันสามารถให้ข้อดีหลายประการ ระบบยังสามารถช่วยในการปรับขนาดและการปรับสถาปัตยกรรม นอกจากนี้ยังช่วยให้พัฒนาและปรับใช้บริการได้ง่ายขึ้น สุดท้ายนี้จะทำให้ง่ายต่อการจัดการและแก้ไขปัญหาระบบ ด้วยเหตุนี้ ไม่ว่าคุณจะใช้ ฐานข้อมูลเดียว สำหรับไมโครเซอร์วิสของคุณหรือใช้ฐานข้อมูลแยกต่างหากสำหรับแต่ละบริการ ตรวจสอบให้แน่ใจว่าสถาปัตยกรรมของคุณสามารถปรับและขยายขนาดได้
ข้อดีข้อเสียของไมโครเซอร์วิส
องค์กรต่าง ๆ พึ่งพาไมโครเซอร์วิสมากขึ้นในช่วงไม่กี่ปีที่ผ่านมา พวกเขาลดความจำเป็นในการพึ่งพาข้ามทีมระหว่างนักพัฒนา แต่ก็มีข้อบกพร่องเช่นกัน ปัญหาอย่างหนึ่งของไมโครเซอร์วิสคือการพึ่งพาฐานข้อมูลเดียว จำเป็นต้องมีการแบ่งปันข้อมูลหากไมโครเซอร์วิสสองแห่งที่ต่างกันต้องการข้อมูลเดียวกัน หากไมโครเซอร์วิสตัวใดตัวหนึ่งล็อกข้อมูลเป็นเวลานาน ข้อมูลอาจไม่พร้อมใช้งาน ปัญหาอีกประการหนึ่งของไมโครเซอร์วิสคือความยากในการเข้าถึงข้อมูลจากไมโครเซอร์วิสอื่นๆ จำเป็นต้องมีโปรโตคอลการสื่อสารสำหรับไมโครเซอร์วิสแต่ละรายการเพื่อเชื่อมต่อกับข้อมูลของอีกฝ่าย การดำเนินการประเภทนี้อาจดำเนินการได้ยาก และอาจส่งผลให้เกิดข้อผิดพลาดได้ วิธีหนึ่งในการแก้ไขปัญหาเหล่านี้คือการใช้ หลายฐานข้อมูล เว็บไซต์ Microservice สามารถใช้ฐานข้อมูลที่ตรงกับความต้องการเฉพาะของตนได้ดีที่สุดโดยใช้วิธีนี้ นอกจากนี้ยังช่วยให้เราใช้เทคโนโลยีฐานข้อมูลที่แตกต่างกันเมื่อพัฒนาไมโครเซอร์วิสต่างๆ ข้อมูลระหว่าง microservices สามารถเข้าถึงได้ง่ายขึ้นด้วยเหตุนี้
ฐานข้อมูลที่ใช้ร่วมกันของไมโครเซอร์วิส

ฐานข้อมูลที่ใช้ร่วมกันของไมโครเซอร์วิสคือฐานข้อมูลที่ใช้ร่วมกันระหว่างไมโครเซอร์วิส ฐานข้อมูลนี้สามารถใช้เพื่อจัดเก็บข้อมูลที่จำเป็นสำหรับไมโครเซอร์วิส หลาย ๆ ตัว สิ่งนี้มีประโยชน์ในกรณีที่ต้องมีการแชร์ข้อมูลระหว่างไมโครเซอร์วิส แต่ไมโครเซอร์วิสแต่ละอันไม่จำเป็นต้องมีสำเนาข้อมูลของตนเอง

แนวทางปฏิบัติที่ดีที่สุดสำหรับฐานข้อมูล Microservice

ไม่มีคำตอบเดียวสำหรับคำถามนี้ เนื่องจากแนวทางปฏิบัติที่ดีที่สุดสำหรับ ฐานข้อมูลไมโครเซอร์วิส จะแตกต่างกันไปขึ้นอยู่กับความต้องการเฉพาะของแอปพลิเคชันของคุณ อย่างไรก็ตาม เคล็ดลับทั่วไปบางประการที่อาจเป็นประโยชน์ ได้แก่ การออกแบบสคีมาฐานข้อมูลของคุณให้เป็นแบบโมดูลาร์และเชื่อมต่อแบบหลวมๆ การใช้คิวข้อความเพื่อแยกไมโครเซอร์วิสออก และใช้โซลูชันการจำลองฐานข้อมูลเพื่อให้แน่ใจว่ามีความพร้อมใช้งานสูง
รูปแบบฐานข้อมูลสำหรับไมโครเซอร์วิส

มีรูปแบบฐานข้อมูลที่แตกต่างกันเล็กน้อยที่สามารถใช้กับไมโครเซอร์วิสได้ ที่พบมากที่สุดคือรูปแบบฐานข้อมูลที่ใช้ร่วมกัน ซึ่งไมโครเซอร์วิสแต่ละแห่งมีฐานข้อมูลของตัวเองที่ใช้สำหรับจัดเก็บข้อมูล ซึ่งอาจเป็นได้ทั้งฐานข้อมูลเชิงสัมพันธ์ เช่น MySQL หรือฐานข้อมูล NoSQL เช่น MongoDB รูปแบบทั่วไปอีกรูปแบบหนึ่งคือรูปแบบการจัดหาเหตุการณ์ ซึ่งไมโครเซอร์วิสแต่ละรายการมีบันทึกเหตุการณ์ของตัวเองที่ใช้สำหรับจัดเก็บข้อมูล บันทึกเหตุการณ์นี้สามารถใช้เพื่อเล่นซ้ำเหตุการณ์ที่เกิดขึ้นในอดีต ซึ่งจะมีประโยชน์สำหรับการดีบักหรือการตรวจสอบ
เข้าร่วมฐานข้อมูล Microservices
Microservices เป็นวิธีการใหม่ในการสร้างแอปพลิเคชันซอฟต์แวร์ที่เน้นบริการอิสระขนาดเล็กที่ทำงานร่วมกัน วิธีการนี้มีประโยชน์มากมาย แต่ข้อเสียที่อาจเกิดขึ้นอย่างหนึ่งคืออาจทำให้การรวมฐานข้อมูลทำได้ยากขึ้น
วิธีหนึ่งที่จะเอาชนะความท้าทายนี้คือใช้เครื่องมือเช่น Apache Kafka ซึ่งสามารถทำหน้าที่เป็นศูนย์กลางสำหรับข้อมูลจากไมโครเซอร์วิสทั้งหมดของคุณ จากนั้นสามารถใช้ Kafka เพื่อทำการรวมข้อมูลนี้ ทำให้ง่ายต่อการทำงานกับข้อมูลจากไมโครเซอร์วิสหลายตัว
รูปแบบการจัดการฐานข้อมูล Microservices
ไม่มีคำตอบเดียวที่เหมาะกับทุกคำตอบสำหรับการจัดการฐานข้อมูลสำหรับไมโครเซอร์วิส แต่มีรูปแบบทั่วไปบางอย่างที่สามารถทำตามได้เพื่อช่วยให้มั่นใจถึงความสอดคล้องของข้อมูลและประสิทธิภาพ รูปแบบทั่วไปอย่างหนึ่งคือการมี ฐานข้อมูลกลาง ที่ไมโครเซอร์วิสทั้งหมดสามารถเข้าถึงได้ ซึ่งสามารถช่วยรับประกันความสอดคล้องของข้อมูล รูปแบบทั่วไปอีกรูปแบบหนึ่งคือการให้ไมโครเซอร์วิสแต่ละรายการจัดการฐานข้อมูลของตนเอง ซึ่งสามารถช่วยปรับปรุงประสิทธิภาพโดยอนุญาตให้ไมโครเซอร์วิสแต่ละรายการปรับขนาดฐานข้อมูลของตนเองโดยอิสระ
รูปแบบใดที่ใช้ในไมโครเซอร์วิส
รูปแบบการค้นพบฝั่งไคลเอ็นต์และการค้นหาฝั่งเซิร์ฟเวอร์ใช้เพื่อกำหนดเส้นทางคำขอสำหรับลูกค้าไปยังอินสแตนซ์บริการที่มีอยู่ในสถาปัตยกรรมไมโครเซอร์วิส รูปแบบการเรียกใช้การส่งข้อความและโพรซีเดอร์ระยะไกลของบริการสามารถใช้ได้หลายวิธี
ฐานข้อมูลถูกจัดการอย่างไรในไมโครเซอร์วิส
ลักษณะเฉพาะหลักของสถาปัตยกรรม microservices คือการให้บริการโดยไม่มีการเชื่อมต่อบริการ แต่ละบริการต้องมีที่เก็บข้อมูลส่วนตัวของตนเองเพื่อให้บรรลุเป้าหมายนี้ ด้วยเหตุนี้ การพัฒนา สถาปัตยกรรมฐานข้อมูล สำหรับบริการไมโครจึงจำเป็นต้องยึดตามรูปแบบบริการเป็นหลัก
ฉันจะจัดการหลายฐานข้อมูลในไมโครเซอร์วิสได้อย่างไร
เมื่อคุณสร้างฐานข้อมูลเดียวสำหรับไมโครเซอร์วิสต่างๆ นี่เป็นรูปแบบต่อต้าน วิธีแก้ไขคือสร้างฐานข้อมูลสำหรับไมโครเซอร์วิสแต่ละรายการ
สถาปัตยกรรมไมโครเซอร์วิส
สถาปัตยกรรม microservices คือสถาปัตยกรรมซอฟต์แวร์ประเภทหนึ่งที่จัดระเบียบซอฟต์แวร์เป็นชุดของบริการอิสระขนาดเล็ก แต่ละบริการมีหน้าที่รับผิดชอบเฉพาะและสื่อสารกับบริการอื่น ๆ เพื่อดำเนินการ สถาปัตยกรรมประเภทนี้ได้รับการออกแบบมาเพื่อปรับปรุงความยืดหยุ่น ความสามารถในการปรับขนาด และการบำรุงรักษาของแอปพลิเคชันซอฟต์แวร์
โทโพโลยีไมโครเซอร์วิสสามประเภทที่แตกต่างกัน
โทโพโลยีที่ใช้ API REST สามารถพบได้ในไดอะแกรมต่อไปนี้ microservices เข้าถึงได้โดย RESTful API ตามโทโพโลยีของ microservices microservices ถูกนำไปใช้งานบนโหนดต่างๆ ในโครงสร้างพื้นฐานและใช้ HTTP มาตรฐานเพื่อสื่อสารระหว่างกัน โทโพโลยีที่ใช้ REST ถูกใช้เพื่อสร้างแอปพลิเคชัน ไมโครเซอร์วิสถูกกระจายไปทั่วโทโพโลยีโดยใช้ RESTful API เดียวกัน ในทางกลับกัน การปรับใช้ microservices อาศัยการสื่อสารผ่านข้อความ API ระหว่าง microservices โทโพโลยีของการส่งข้อความถูกกระจายจากส่วนกลาง โทโพโลยีของ microservices ขึ้นอยู่กับแพลตฟอร์มการส่งข้อความแบบรวมศูนย์ซึ่ง microservices สื่อสารกันเอง ส่วนใหญ่จะใช้สำหรับการสื่อสารของไมโครเซอร์วิส โดยมีการแลกเปลี่ยนข้อความระหว่างไมโครเซอร์วิสและเลเยอร์ออร์เคสตราที่จัดการผ่านแพลตฟอร์มนี้