Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

ฐานข้อมูลทั่วโลกสำหรับ Serverless และ Edge

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

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

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

ใช้เมื่อใด

ฐานข้อมูลทั่วโลกถูกปรับใช้ในหลายภูมิภาคในทวีปต่างๆ และคำขอของลูกค้าจะถูกส่งไปยังภูมิภาคที่ใกล้ที่สุดเพื่อลดเวลาแฝงเมื่อผู้ใช้กระจายไปทั่วโลก สามารถใช้ฐานข้อมูล Upstash Global ได้

  • ฟังก์ชัน Edge (ผู้ปฏิบัติงาน Cloudflare, Fastly Compute):REST API ในตัวและการเข้าถึงเวลาแฝงต่ำจากตำแหน่งขอบทั้งหมดทำให้เป็นโซลูชันที่สมบูรณ์แบบ

  • การปรับใช้หลายภูมิภาคแบบไร้เซิร์ฟเวอร์:ฟังก์ชัน AWS Lambda, Vercel และ Netlify สามารถปรับใช้ได้ในหลายภูมิภาค ฐานข้อมูลทั่วโลกให้ข้อมูลเวลาแฝงต่ำไม่ว่าฟังก์ชันแบบไร้เซิร์ฟเวอร์ของคุณจะอยู่ที่ใด

  • แพลตฟอร์มเว็บ/มือถือ:ด้วยการใช้ REST API แบบอ่านอย่างเดียว คุณสามารถเข้าถึงฐานข้อมูล Redis บนเว็บ/แอปพลิเคชันมือถือได้โดยตรง ฐานข้อมูลทั่วโลกจะให้เวลาแฝงที่ดีขึ้นตามที่คุณคาดหวังจากผู้ใช้ได้จากทุกที่

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

มันทำงานอย่างไร

ฐานข้อมูลทั่วโลกสำหรับ Serverless และ Edge

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

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

เฉพาะแบบจำลองผู้นำเท่านั้นที่ยอมรับและประมวลผลคำขอเขียน แบบจำลองสำรองภายในส่งต่อการเขียนไปยังผู้นำโดยไม่แจ้งให้ลูกค้าทราบ ดังนั้น ไม่ว่าแบบจำลองจะมาจากประเภทใด ผู้นำ หรือการสำรองข้อมูล ลูกค้าสามารถส่งคำขอเขียนได้ หลังจากประมวลผลคำขอเขียนแล้ว แบบจำลองผู้นำจะเผยแพร่ไปยังแบบจำลองสำรอง

เพิ่มเติมเกี่ยวกับความสม่ำเสมอ

ในปัจจุบัน Global Databases มีความสอดคล้องกันเล็กน้อย ยังไม่สนับสนุนความสอดคล้องที่แข็งแกร่ง การตอบสนองของคำขอเขียนจะถูกส่งกลับไปยังไคลเอนต์หลังจากแบบจำลองผู้นำประมวลผลการดำเนินการ โดยไม่ต้องรอ ACK จากการสำรองข้อมูลส่วนใหญ่ ผลลัพธ์ของการเขียนถูกจำลองแบบไปยังสำเนาสำรองแบบซิงโครนัสแบบขนาน

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

จะง่ายขึ้นโดยไม่มีข้อขัดแย้ง!

ในกรณีที่เกิดความล้มเหลวทั่วทั้งคลัสเตอร์ เช่น พาร์ติชันเครือข่าย สามารถเลือกผู้นำหลายรายสำหรับคีย์เดียวกันได้ นั่นหมายถึงตัวจำลองหลายตัวยอมรับการเขียนและข้อมูลเพื่อแยกจากแบบจำลองที่แตกต่างกัน เป็นไปได้ที่จะป้องกันความขัดแย้งที่เกิดขึ้นในตอนเริ่มต้นด้วยโมเดลที่แข็งแกร่งกว่าโดยใช้โปรโตคอลเช่น Calvin หรือ Spanner (หรือแม้แต่ Paxos, Raft) แต่นั่นเป็นเส้นทางอื่นที่เราไม่ต้องการทำในขณะนี้

แต่ Global Database ยอมให้ความขัดแย้งเกิดขึ้นและแก้ไขโดยใช้ LWW (last-write-wins ) อัลกอริธึมและหลอมรวมแบบจำลองให้เป็นสถานะเดียวกันในที่สุด การเขียนแต่ละครั้งในฐานข้อมูล Upstash มีหมายเลขลำดับเฉพาะแบบโมโนโทนิก ทุกครั้งที่แบบจำลองกลายเป็นผู้นำ จะทำเครื่องหมายลำดับของกระบวนการเขียนครั้งแรก เมื่อตัวจำลองผู้นำสองคนค้นพบกันและกัน พวกเขาจะแบ่งปันงานเขียนหลังจากที่ได้เป็นผู้นำ และแก้ไขข้อขัดแย้ง

แบบจำลองทั้งหมดไม่เท่ากัน

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

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

ภูมิภาคมากขึ้น มีการจำลองมากขึ้นหรือไม่

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

ยังเหลือทางไป

ปัจจุบัน Global Databases ได้รับการออกแบบมาเพื่อเพิ่มประสิทธิภาพ/ลดเวลาแฝงของการดำเนินการอ่านเท่านั้น ซึ่งไม่เหมาะกับงานเขียนจำนวนมาก เรากำลังดำเนินการปรับปรุงเวลาแฝงสำหรับการดำเนินการเขียนด้วยการออกแบบที่ดีขึ้นด้วย

นอกเหนือจากการตั้งค่าภูมิภาค 5 ภูมิภาคเบื้องต้นแล้ว เรากำลังพิจารณาที่จะเปิดภูมิภาคและ/หรือกลุ่มภูมิภาคต่างๆ เพิ่มเติมในอนาคตอันเนื่องมาจากความต้องการและข้อเสนอแนะจากผู้ใช้ของเรา

คุณสามารถติดต่อเราได้ทาง Twitter และ Discord เพื่อแบ่งปันความคิด/แนวคิดและคำถามของคุณ