การซื้อบัญชี Azure Microsoft Cloud ในนามของการเรียกเก็บเงินเพื่อพูดคุยเกี่ยวกับฐานข้อมูลแบบกระจายทั่วโลก: ฉันใช้ Cosmos DB เพื่อดึงการดำเนินการและการบำรุงรักษาออกจาก "หลุมไฟ" ได้อย่างไร
เพื่อนๆที่เคยทำงานเกี่ยวกับสถาปัตยกรรมดั้งเดิมของคลาวด์และธุรกิจระดับโลกอาจเคยประสบกับช่วงเวลาที่มืดมนที่สุดที่ทำให้หนังศีรษะมึนงง:
เมื่อเวลา03.00น. ตามเวลาปักกิ่งโทรศัพท์มือถือสั่นอย่างรุนแรงและระบบตรวจสอบส่งเสียงเตือนระดับสูงสุด-"ความล่าช้าในการเข้าถึงของผู้ใช้ในยุโรปเพิ่มสูงขึ้น", "ความขัดแย้งที่รุนแรงในการซิงโครไนซ์ข้อมูลข้ามภูมิภาค", "CPU ฐานข้อมูลหลักทะยานขึ้น100% โดยไม่ตอบสนอง" ในตอนนี้คุณลุกขึ้นมาพร้อมกับรอยคล้ำเชื่อมต่อกับ VPN และเริ่มเผชิญกับกลยุทธ์การแบ่งไลบรารีและตารางที่น่าตื่นตาความล่าช้าในการซิงโครไนซ์ต้นแบบและทาสการสูญเสีย Binlog และดัชนีที่ไม่ถูกต้องตลอดกาล
บริการซื้อและเติมเงินบัญชีคลาวด์ Azure ของ Microsoft
พูดตามตรงเมื่อสถาปัตยกรรมฐานข้อมูลแบบเดิมเผชิญกับโลกาภิวัตน์ที่แท้จริงและบริการที่เกิดขึ้นพร้อมกันสูงค่าใช้จ่ายในการดำเนินการและการบำรุงรักษาเป็นเพียงหลุมลึก
เมื่อไม่นานมานี้ฉันได้ดื่มกับเพื่อนเก่าสองสามคนที่ทำงานด้านสถาปัตยกรรมทุกคนยังคงบ่นว่า: "จะมีฐานข้อมูลเมื่อใดซึ่งสามารถซิงโครไนซ์ข้อมูลไปทั่วทุกมุมโลกได้โดยไม่ต้องกังวลเกี่ยวกับการแบ่งส่วนการขยายและการล็อกทุกวันขัดแย้ง?” ในความเป็นจริงในช่วงไม่กี่ปีที่ผ่านมาทุกคนได้ลองใช้โซลูชันต่างๆในสภาพแวดล้อมการผลิตตั้งแต่คลัสเตอร์ MySQL/PostgreSQL ที่สร้างขึ้นเองไปจนถึง NoSQL แบบกระจายโอเพ่นซอร์สต่างๆและในที่สุดก็พบว่าหากคุณต้องการรวม "การกระจายทั่วโลก" และ "การดำเนินการและการบำรุงรักษาที่รวดเร็ว" คำนี้ลงจอดจริงๆ
Azure Cosmos DB
ถือได้ว่าเป็นการดำรงอยู่ในระดับมาตรฐานที่ไม่สามารถหลีกเลี่ยงได้
วันนี้ฉันจะไม่พูดถึงเอกสารไวท์เปเปอร์อย่างเป็นทางการที่คลุมเครือและแผนภาพสถาปัตยกรรมแบบแห้งฉันต้องการพูดคุยกับคุณว่า Cosmos DB ช่วยให้เราเล่นประสบการณ์การใช้งานและการบำรุงรักษาของ NoSQL แบบกระจายทั่วโลกจากมุมมองของช่างเทคนิคแนวหน้าได้อย่างไร
1.ความเจ็บปวดจากการกระจายทั่วโลกแบบดั้งเดิม: ทำไมคุณถึงทำงานล่วงเวลาตอนดึกเสมอ?
ก่อนที่จะพูดถึง Cosmos DB เรามาดูจุดเจ็บปวดของโซลูชันแบบเดิมกันก่อน
บริการซื้อและเติมเงินบัญชีคลาวด์ Azure ของ Microsoft
สมมติว่าธุรกิจของคุณไปต่างประเทศและผู้ใช้กระจัดกระจายไปทั่วอเมริกาเหนือยุโรปและเอเชียตะวันออกเฉียงใต้เพื่อให้ผู้ใช้ในพื้นที่ได้รับประสบการณ์การเข้าถึงที่นุ่มนวลคุณต้องปรับใช้โหนดฐานข้อมูลในพื้นที่ในตอนนี้เองปัญหาก็เริ่มตามมา:
ความล่าช้าและความขัดแย้งในการซิงโครไนซ์ข้อมูล (Split-Brain): ความล่าช้าทางกายภาพของสายเคเบิลออปติคอลข้ามชาติมีอยู่อย่างเป็นกลางหากผู้ใช้ในสหรัฐอเมริกาและผู้ใช้ในยุโรปแก้ไขข้อมูลเดียวกันในเวลาเดียวกันคุณจะแก้ไขข้อขัดแย้งได้อย่างไรจะเขียนทับตามเวลาประทับหรือไม่? หรือเขียนตรรกะค่าตอบแทนทางธุรกิจที่ซับซ้อน?
การขยายตัวเปรียบได้กับ "ปฏิบัติการครั้งใหญ่": จู่ๆธุรกิจก็แตกออกและไม่สามารถดำเนินการแบบสแตนด์อะโลนได้ทำการแบ่งฐานข้อมูลและแบ่งตารางกันไหม? การเปลี่ยนรหัสการย้ายข้อมูลและการตรวจสอบความสอดคล้องของข้อมูลขั้นตอนใดที่คุณเหยียบหลุมเป็นอุบัติเหตุจากการผลิต
หลุมดำของการตรวจสอบการดำเนินงานและการบำรุงรักษา: หากมีโหนดมากขึ้นพื้นผิวการดำเนินงานและการบำรุงรักษาจะแตกดิสก์โหนดใดเต็มเครือข่ายที่โหนดใดเกิดความผันผวน? เจ้าหน้าที่ปฏิบัติการและบำรุงรักษาหมดแรงเพียงแค่มองไปที่ตลาดการตรวจสอบต่างๆทุกวัน
สิ่งที่เราต้องการไม่ใช่พารามิเตอร์การกำหนดค่าเพิ่มเติมแต่
นอกกรอบขนาดทั่วโลกและประสบการณ์ "ไม่ใช้งานและบำรุงรักษา (Serverless/Managed)" ที่แท้จริง
.
ประการที่สองการถอด Azure Cosmos DB: ทำไมมันสามารถบรรลุ "การทำงานและการบำรุงรักษาที่รวดเร็ว
”?
ผู้ที่ได้สัมผัสกับ Azure Cosmos DB เป็นครั้งแรกมักจะตกใจกับคุณสมบัติหลักหลายประการเมื่อรวมประสบการณ์การลงจอดจริงของเราในช่วงไม่กี่ปีที่ผ่านมามีนักฆ่าหลายคนในการดำเนินการและการบำรุงรักษา:
1."คลิกเมาส์ที่ไหนข้อมูลอยู่ที่ไหน" ที่แท้จริง: การถ่ายทอดสดทั่วโลกและการคัดลอกด้วยคลิกเดียว
ในสถาปัตยกรรมแบบเดิมหากคุณต้องการเพิ่มศูนย์ข้อมูลในต่างประเทศทีม DBA จะต้องวางแผนเครือข่ายปรับใช้อินสแตนซ์และกำหนดค่าลิงก์การจำลองแบบล่วงหน้าสองสามสัปดาห์
และในพอร์ทัล Azure (Portal) ของ Cosmos DB สิ่งต่างๆจะรุนแรงและสง่างามมาก:
หากคุณต้องการดูห้องคอมพิวเตอร์ของประเทศ/ภูมิภาคใดให้คลิกเมาส์บนแผนที่โดยตรงและคลิกเพื่อบันทึกภายในไม่กี่นาทีข้อมูลทั่วโลกจะทำการซิงโครไนซ์แบบหลายกิจกรรมโดยอัตโนมัติ
Multi-Master: ไม่เพียงแต่รองรับการอ่านมากขึ้นทั่วโลกแต่ยังรองรับการเขียนมากขึ้นทั่วโลกซึ่งหมายความว่าผู้ใช้ในอเมริกาเหนือเขียนโหนดในสหรัฐอเมริกาผู้ใช้ในยุโรปเขียนโหนดในยุโรปและชั้นล่างสุดจะช่วยคุณโดยอัตโนมัติผ่านการควบคุมพร้อมกันหลายเวอร์ชัน (MVCC) และกลยุทธ์การแก้ไขข้อขัดแย้ง
การปลดปล่อยการดำเนินงานและการบำรุงรักษา: คุณไม่จำเป็นต้องเขียนสคริปต์เพื่อตรวจสอบความล่าช้าของ master-slave และคุณไม่ต้องกังวลว่าโหนดในบางพื้นที่จะหยุดทำงานและทำให้ธุรกิจหยุดชะงักมาพร้อมกับ SLA ที่มีความพร้อมใช้งานสูง (เช่นการรับประกันความพร้อมใช้งาน99.999%) วิธีการกู้คืนระบบและวิธีการสร้างความซ้ำซ้อนของข้อมูลผู้ให้บริการระบบคลาวด์จะรวมทุกอย่างไว้ด้วย
2.อำลาฝันร้ายของ DBA: ดัชนีอัตโนมัติ (Automatic Index)
ใครก็ตามที่เขียน NoSQL จะรู้ดีว่าแม้ว่าโครงสร้างจะมีความยืดหยุ่นแต่หากแบบสอบถามทางธุรกิจมีการเปลี่ยนแปลงและไม่มีการสร้างดัชนีการสแกนตารางทั้งหมดจะทำให้ฐานข้อมูลวางสายภายในไม่กี่นาที
บริการซื้อและเติมเงินบัญชีคลาวด์ Azure ของ Microsoft
NoSQL แบบดั้งเดิมมักต้องการ DBA เพื่อวิเคราะห์คำสั่งแบบสอบถามด้วยตนเองและออกแบบดัชนีรองและดัชนีคอมโพสิตอย่างรอบคอบ
Cosmos DB ทำสิ่งที่ "โหดร้าย" แต่เป็นมิตรกับการพัฒนาและการดำเนินงานและการบำรุงรักษา:
ข้อมูลทั้งหมดจะถูกจัดทำดัชนีโดยอัตโนมัติโดยค่าเริ่มต้น (Schema-agnostic Index)
การพัฒนาที่ยอดเยี่ยม: คุณบันทึกเอกสาร JSON และคุณสามารถเพิ่มฟิลด์ใหม่ได้โดยไม่ต้องแก้ไขคำจำกัดความของฐานข้อมูลใดๆคุณสามารถใช้เป็นแบบสอบถามเงื่อนไข WHERE ได้โดยตรง
การดำเนินการและการบำรุงรักษา: ไม่จำเป็นต้องปรับดัชนี B-Tree ให้เหมาะสมแม้ว่าจะใช้พื้นที่จัดเก็บข้อมูลจำนวนหนึ่งในพื้นหลังเพื่อรักษาดัชนีแต่สำหรับเจ้าหน้าที่ปฏิบัติการและบำรุงรักษาการขาดสัญญาณเตือนที่เกิดจาก "การสร้างดัชนีที่ขาดหายไป" หมายความว่าจะมีอายุการใช้งานน้อยกว่าสิบปี
3.ระดับมิลลิวินาทีสามารถคาดการณ์ประสิทธิภาพ: การควบคุมที่ดีของ RU/s (หน่วยการร้องขอ)
ในยุคคลาวด์ความสมดุลของต้นทุนและประสิทธิภาพเป็น KPI หลักของการดำเนินการและการบำรุงรักษาเสมอ Cosmos DB แนะนำ
RU/วินาที (หน่วยคำขอ)
แนวคิด.
ไม่ว่าข้อความค้นหาของคุณจะอ่านคีย์-Value อย่างง่ายหรือทำการสืบค้นร่วม SQL ที่ซับซ้อนก็สามารถใช้ RU ได้อย่างแม่นยำ
คุณสามารถสำหรับแต่ละภาชนะ (C
Ontainer) และแม้แต่ฐานข้อมูลทั้งหมดก็ตั้งค่าทรูพุตไม่เพียงแต่รองรับการปรับด้วยตนเองเท่านั้นแต่ยังรองรับการซูมอัตโนมัติ (Autoscale)-RU จะเต็มโดยอัตโนมัติในช่วงที่มีธุรกิจสูงสุดและจะลดลงโดยอัตโนมัติในช่วงที่ตกต่ำในช่วงดึกและใบเรียกเก็บเงินจะไม่สูญเปล่า
ด้วยรูปแบบที่ไม่ใช่เซิร์ฟเวอร์สำหรับธุรกิจขนาดเล็กหรือสภาพแวดล้อมการทดสอบที่มีการเข้าชมที่ผิดปกติมาก "จ่ายตามจำนวนคำขอจริงโดยไม่ต้องเสียเงิน"
3.คำแนะนำในการหลีกเลี่ยงหลุมในสภาพแวดล้อมการผลิต: การแลกเปลี่ยนเบื้องหลังการดำเนินการและการบำรุงรักษาที่รวดเร็ว
แม้ว่า Cosmos DB จะประสบความสำเร็จสูงสุดในประสบการณ์การใช้งานและการบำรุงรักษาในฐานะทหารผ่านศึกที่คลานอยู่ในหลุมหลายครั้งฉันอยากจะเตือนทุกคน:
ไม่มีสถาปัตยกรรมที่สมบูรณ์แบบมีเพียงฉากที่เหมาะสมที่สุดเท่านั้น
การทำงานและการบำรุงรักษาที่รวดเร็วไม่ได้หมายความว่าคุณสามารถเพิกเฉยได้อย่างสมบูรณ์
1.ตัวเลือกของระดับความสอดคล้อง (Consistency Levels) เป็นประตูศิลปะ
กฎทางกายภาพที่ใหญ่ที่สุดของฐานข้อมูลแบบกระจายคือ
ทฤษฎีบท CAP
.Cosmos DB มี5ระดับที่แตกต่างกันตั้งแต่ Strong ไปจนถึง Eventual
หากธุรกิจของคุณเป็นการชำระเงินทางการเงินคุณไม่สามารถทนต่อภาพลวงตาได้คุณต้องเลือกความสม่ำเสมอที่แข็งแกร่งแต่จะทำให้เกิดความล่าช้าและประสิทธิภาพที่ต่ำกว่าเล็กน้อย
หากธุรกิจของคุณเป็นพลวัตทางสังคมการกดไลค์และสถิติการดูหน้าเว็บอย่าลังเลที่จะเลือกเซสชันหรือความสอดคล้องขั้นสุดท้าย
บริการซื้อและเติมเงินบัญชีคลาวด์ Azure ของ Microsoft
คำแนะนำในการดำเนินการและการบำรุงรักษา: อย่าไล่ตาม "ความสม่ำเสมอที่แข็งแกร่ง" แบบสุ่มสี่สุ่มห้าแยกคอนเทนเนอร์ตามภาคธุรกิจเฉพาะและวางธุรกิจที่ไม่ต้องการความสอดคล้องสูงในระดับความสอดคล้องที่หลวมซึ่งสามารถทำให้ปริมาณงานระบบของคุณเพิ่มขึ้นในเชิงเรขาคณิต
2.การออกแบบที่สำคัญพาร์ทิชัน (Partition Key) กำหนดชีวิตและความตาย
ในโลก NoSQL คีย์พาร์ติชันคือประตูชีวิตของคุณหากเลือกคีย์พาร์ติชันไม่ดี (เช่นกด "ประเทศ" และ90% ของผู้ใช้อยู่ในประเทศจีน) จะทำให้เกิด
ฮอตสปอตพาร์ทิชัน (Hot Spotting)
: CPU และ RU ของพาร์ติชันทางกายภาพพื้นฐานบางพาร์ติชันเต็มในขณะที่พาร์ติชันอื่นๆไม่ได้ใช้งาน
คำแนะนำในการดำเนินการและการบำรุงรักษา: ในขั้นตอนแรกของการออกแบบสถาปัตยกรรมคุณต้องเลือกคีย์พาร์ติชันกับทีมพัฒนาฟิลด์ความถี่สูงพร้อมกันสูง (เช่น userId หรือส่วนดิจิทัลฐานสูง) มักเป็นตัวเลือกที่ดีที่สุดเพื่อให้แน่ใจว่าข้อมูลจะถูกกระจายไปยังโหนดทางกายภาพต่างๆทั่วโลกอย่างเท่าเทียมกัน
ประการที่สี่เขียนไว้ในตอนท้าย
เมื่อมองย้อนกลับไปคนรุ่นของเราที่ทำคลาวด์คอมพิวติ้งและการใช้งานระบบและการบำรุงรักษาโชคดีมาก
ในอดีตพลังงานส่วนใหญ่ของเราใช้ไปกับการทำงานและการบำรุงรักษาของเครื่องพื้นฐานการขยายดิสก์และวิธีการซ่อมแซม "งานสกปรก" ด้วยตนเองด้วยการซิงโครไนซ์หลักและทาสคุณค่าหลักของฐานข้อมูล NoSQL แบบกระจายทั่วโลกบนคลาวด์เช่น Azure Cosmos DB อยู่ที่ความซับซ้อนของการดำเนินการและการบำรุงรักษาฐานข้อมูลแบบดั้งเดิม
แต่เดิมต้องใช้ DBA ขนาดใหญ่สำหรับการใช้งานที่หลากหลายทั่วโลกการขยายตัวที่ยืดหยุ่นการจัดทำดัชนีอัตโนมัติและการกู้คืนระบบที่มีความพร้อมใช้งานสูง
เทคโนโลยีที่ซับซ้อนที่ทีมงานสามารถจัดการได้นั้นห่อหุ้มไว้ในปุ่มง่ายๆและ API ที่ใช้งานง่าย
ปล่อยให้ฐานข้อมูลกลับไปที่ข้อมูลและปลดปล่อยการดำเนินการและการบำรุงรักษาจากความล้มเหลวพื้นฐานที่น่าเบื่อเพื่อมุ่งเน้นไปที่สถาปัตยกรรมทางธุรกิจนี่คือสิ่งที่ยุคคลาวด์ควรมีครั้งต่อไปที่คุณพบสัญญาณเตือนในช่วงดึกบางทีคุณอาจคิดว่า: ถึงเวลาแล้วที่จะย้ายโครงสร้างเก่าเหล่านั้นไปยังระบบนิเวศดั้งเดิมของคลาวด์ที่มีความยืดหยุ่นระดับโลกอย่างแท้จริงหรือไม่?
บริการซื้อและเติมเงินบัญชีคลาวด์ Azure ของ Microsoft
