อธิบายสถาปัตยกรรมของ Cassandra: บทช่วยสอนที่ครอบคลุม

เผยแพร่แล้ว: 2021-03-10

ตั้งแต่เริ่มก่อตั้งที่ Facebook Cassandra ได้กลายเป็นหนึ่งในโปรเจ็กต์ Apache ที่ได้รับความนิยมมากที่สุด เป็นฐานข้อมูลแบบกระจายและโอเพ่นซอร์สที่ใช้กันอย่างแพร่หลาย และทำให้ชีวิตของวิศวกรซอฟต์แวร์ นักวิทยาศาสตร์ข้อมูล และนักพัฒนาเว็บง่ายขึ้น

ผู้ใช้โซลูชันฐานข้อมูลที่มีประสิทธิภาพนี้ ได้แก่ IBM, Facebook, Reddit, eBay และ Twitter

อย่างไรก็ตาม เพื่อให้คุ้นเคยกับ Cassandra คุณต้องรู้เกี่ยวกับสถาปัตยกรรมและสถาปัตยกรรม Apache Cassandra อาจเข้าใจได้ยากเล็กน้อย

นั่นเป็นเหตุผลที่เราได้สร้างคำแนะนำเบื้องต้นเกี่ยวกับสถาปัตยกรรม Cassandra ดังต่อไปนี้ มันจะทำให้คุณคุ้นเคยกับแนวคิดที่จำเป็นทั้งหมดของสถาปัตยกรรมคาสซานดรา:

สารบัญ

พื้นฐานของสถาปัตยกรรม Cassandra

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

สถาปัตยกรรม Cassandra ช่วยให้ระบบสามารถทำงานได้โดยไม่คำนึงถึงจุดบกพร่องเพียงจุดเดียว ซึ่งหมายความว่าหากคลัสเตอร์มีร้อยโหนดและหนึ่งในนั้นล้มเหลว คลัสเตอร์จะยังคงทำงานอยู่ ในทางกลับกัน ด้วย Hadoop ความล้มเหลวของเนมโหนดจะทำให้ทั้งระบบล้มเหลว

สถาปัตยกรรม Cassandra มีความสามารถในการปรับขยายได้สูง ดังนั้นคลัสเตอร์จึงสามารถมีโหนดได้หลายพันโหนด นอกจากนี้ คุณสามารถเพิ่มโหนดใหม่ให้กับคลัสเตอร์ได้โดยไม่ขัดจังหวะการทำงานของโหนด

นอกเหนือจากคุณสมบัติต่างๆ เราได้กล่าวถึงข้างต้นแล้ว สถาปัตยกรรม Apache Cassandra ยังสนับสนุนศูนย์ข้อมูลหลายแห่ง และเปิดใช้งานการจำลองข้อมูลทั่วทั้งศูนย์ข้อมูล

โทโพโลยีและการออกแบบ

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

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

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

ซุบซิบ

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

เมล็ดพันธุ์

ทุกโหนดใน Cassandra จะกำหนดค่ารายการของ Seeds ซึ่งเป็นรายการของโหนดอื่นๆ โหนดเมล็ดไม่มีจุดประสงค์อื่นนอกเหนือจากการบูตโหนดเมื่อเข้าร่วมคลัสเตอร์เป็นครั้งแรก หลังจากบูตสแตรป โหนดไม่ต้องการเมล็ดพันธุ์ในการรีสตาร์ท ควรใช้โหนดเมล็ดพันธุ์สองหรือสามโหนดต่อศูนย์ข้อมูล Cassandra และรักษารายชื่อเมล็ดพันธุ์ให้สม่ำเสมอ

โครงสร้างฐานข้อมูล

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

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

พาร์ทิชันใน Cassandra

ใน Cassandra ตัวแบ่งพาร์ติชั่นจะแปลงคีย์พาร์ติชั่นเป็นโทเค็น มีตัวเลือกตัวแบ่งพาร์ติชันหลายตัวใน Cassandra โดยที่ Murmur3Partitioner เป็นค่าเริ่มต้น โทเค็นทุกตัวมีค่าจำนวนเต็มระหว่าง -2^63 ถึง +2^63-1 และชื่อของช่วงนี้คือช่วงโทเค็น

Cassandra ทุกคนเป็นเจ้าของส่วนหนึ่งของช่วงนี้และมีข้อมูลที่เกี่ยวข้องกับช่วงเป็นหลัก เราใช้โทเค็นเพื่อค้นหาข้อมูลอย่างแม่นยำระหว่างโหนด

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

โหนดเสมือน

คาสซานดราช่วยลดความซับซ้อนในการคำนวณโทเค็นและความท้าทายในการกำหนดโดยใช้โหนดเสมือนหรือที่เรียกว่า Vnodes

มันแบ่งคลัสเตอร์ออกเป็นโหนดเสมือนจำนวนมากเพื่อกำหนดโทเค็น และทุกโหนดทางกายภาพจะได้รับ Vnodes ในปริมาณเท่ากัน จำนวนเริ่มต้นของ Vnodes ที่เป็นของโหนดคือ 256 คุณสามารถตั้งค่าเดียวกันได้โดยใช้คุณสมบัติ num_tokens เมื่อคุณเพิ่มโหนดใหม่ให้กับคลัสเตอร์ อัลกอริธึมการจัดสรรโทเค็นจะจัดสรรโทเค็นที่จำเป็นโดยใช้ Vnodes

การจำลองแบบ

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

การตั้งค่าสองแบบส่งผลต่อการจัดวางแบบจำลองใน Cassandra ซึ่งเป็นสนิชและกลยุทธ์การจำลองแบบ Snitch กำหนดศูนย์ข้อมูลและชั้นวางที่โหนดเป็นเจ้าของ พวกเขามีหน้าที่แจ้ง Cassandra เกี่ยวกับโทโพโลยีเพื่อให้สิ่งต่าง ๆ มีประสิทธิภาพ

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

ทฤษฎีบท CAP

ระบบแบบกระจายทุกระบบทำงานตามทฤษฎีบท CAP ตามทฤษฎีบทนี้ ระบบแบบกระจายใดๆ สามารถส่งมอบคุณสมบัติสองในสามคุณสมบัติได้อย่างเหมาะสม ความสม่ำเสมอ ความพร้อมใช้งาน และความทนทานต่อพาร์ติชัน

ใน Cassandra คุณสามารถเลือกระหว่างความพร้อมใช้งานและความสอดคล้องได้ ซึ่งหมายความว่าข้อมูลสามารถมีความสอดคล้องสูงด้วยความพร้อมใช้งานที่ต่ำกว่าหรือมีความพร้อมใช้งานสูงที่มีความสอดคล้องต่ำ

แนวคิดของการขอจำนวนการตอบรับที่เฉพาะเจาะจงเรียกว่า ความสอดคล้องที่ปรับได้ และคุณสามารถนำไปใช้ที่ระดับการสืบค้นแต่ละรายการได้

กระบวนการเขียน

ในกระบวนการนี้ ข้อมูลจะถูกเขียนลงในบันทึกความคิดเห็นบนดิสก์แล้วส่งไปยังโหนดที่รับผิดชอบตามค่าแฮช

หลังจากนั้น โหนดจะเขียนข้อมูลไปยังตารางในหน่วยความจำที่เรียกว่า memtable จากตำแหน่งที่ข้อมูลถูกเขียนไปยัง "sstable" ในหน่วยความจำ ถัดไปจะได้รับการอัปเดตเป็นตารางจริง

หากโหนดที่รับผิดชอบหยุดทำงานด้วยเหตุผลบางประการ ข้อมูลจะถูกเขียนไปยังโหนดอื่น

เรียนรู้เพิ่มเติมเกี่ยวกับสถาปัตยกรรม Cassandra

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

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับฐานข้อมูล คุณสามารถตรวจสอบแหล่งข้อมูลต่อไปนี้:

SQL สำหรับวิทยาศาสตร์ข้อมูล: ทำไมต้องเป็น SQL, รายการประโยชน์ & คำสั่ง

20 คำถามและคำตอบในการสัมภาษณ์ SQL ที่พบบ่อยที่สุด [สำหรับนักศึกษาใหม่]

หลักสูตรออนไลน์ฟรีของ SQL พร้อมใบรับรอง [2021]

ในทางกลับกัน หากคุณกำลังมองหาประสบการณ์การเรียนรู้ที่เป็นส่วนตัว เราขอแนะนำให้เรียนหลักสูตรวิทยาศาสตร์ข้อมูล ที่ upGrad เรามี ประกาศนียบัตร PG ด้านวิทยาศาสตร์ข้อมูล และ วิทยาศาสตรมหาบัณฑิตสาขาวิทยาศาสตร์ ข้อมูล หลักสูตรเหล่านี้จะสอนทักษะที่จำเป็นทั้งหมดแก่คุณในการเป็นผู้เชี่ยวชาญด้านวิทยาศาสตร์ข้อมูล

บทสรุป

หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรม Big Data ให้ตรวจสอบ PG Diploma in Software Development Specialization ในโปรแกรม Big Data ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 7 กรณี ครอบคลุมภาษาและเครื่องมือในการเขียนโปรแกรม 14 รายการ ในการประชุมเชิงปฏิบัติการ ความช่วยเหลือด้านการเรียนรู้และการจัดหางานอย่างเข้มงวดมากกว่า 400 ชั่วโมงกับบริษัทชั้นนำ

ตรวจสอบหลักสูตรวิศวกรรมซอฟต์แวร์อื่นๆ ของเราที่ upGrad

ด้วยหลักสูตรที่ทันสมัยใน Big Data

หลักสูตรที่ทันสมัยในข้อมูลขนาดใหญ่จาก IIIT-B
โปรแกรมประกาศนียบัตรขั้นสูงด้าน Big Data จาก IIIT Bangalore