ประโยชน์และการปรับโครงสร้างพื้นฐาน Solana แบบหลายภูมิภาค

ประโยชน์และการปรับโครงสร้างพื้นฐาน Solana แบบหลายภูมิภาค

ประโยชน์และการปรับโครงสร้างพื้นฐาน Solana แบบหลายภูมิภาค
เราเน้นมาโดยตลอดว่าการอยู่ใกล้วาลิเดเตอร์ผู้นำปัจจุบันทางกายภาพมีความสำคัญเพียงใด แต่ Solana กระจายอยู่ทั่วโลกและผู้นำหมุนเวียนตลอดเวลา การวางทุกอย่างไว้ในเมืองเดียวจึงไม่สอดคล้องกับความเป็นจริง และทำให้แนวทางหลายภูมิภาคมีเหตุผล บทความนี้เริ่มจาก epoch และตารางผู้นำ แล้วอธิบายวิธีตัดสินในทางปฏิบัติว่าคุณอยู่ “ใกล้” หรือไม่ และนำการตัดสินใจนั้นไปใช้ในการดำเนินงานอย่างไร

ทำความเข้าใจ epoch และตารางผู้นำ

Solana เดินหน้าตามเวลาในหน่วย slot โดยประมาณ 400 ms เท่ากับหนึ่ง slot และ slot จะถูกรวมเป็น epoch หนึ่ง epoch คือชุดของ slot ทั้งหมด 432,000 slot และใช้เวลาประมาณสองวัน คุณติดตามความคืบหน้าได้ด้วยเมธอด RPC getEpochInfo ส่วน getRecentPerformanceSamples ช่วยให้เข้าใจจังหวะการประมวลผลปัจจุบันของเครือข่ายและความเร็วที่ slot เดินหน้า เมื่อเริ่มแต่ละ epoch ตารางผู้นำจะถูกกำหนด และในทุกขณะจะมีผู้นำเพียงหนึ่งรายสร้างบล็อก การหมุนเวียนอย่างรวดเร็วนี้คือเหตุผลที่คุณต้องมีแนวทางติดตามระยะทางตามการเปลี่ยนผู้นำ

ทำไมระยะทางจึงส่งผลต่อผลลัพธ์

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

กลยุทธ์หลักแบบหลายภูมิภาค

รายงานการกระจายตัวของ Solana Mainnet
ข้อมูลเครือข่าย Solana: Validators Solutions
วางจุดปฏิบัติการขนาดเล็กหลายแห่งในเมืองที่มีวาลิเดเตอร์และจุดแลกเปลี่ยนสำคัญ แล้วใช้จุดที่อยู่ใกล้ผู้นำปัจจุบันที่สุดโดยอัตโนมัติ เมื่อ slot ของผู้นำอยู่ในนิวยอร์ก ให้รับและส่งจากนิวยอร์ก เมื่อผู้นำถัดไปหมุนไปแฟรงก์เฟิร์ต ให้ส่งต่องานไปแฟรงก์เฟิร์ตทันทีและส่งข้อมูลจากที่นั่นผ่านเส้นทางที่สั้นที่สุด เป้าหมายไม่ใช่การปรับค่าเฉลี่ย แต่คือการไม่พลาดโอกาสที่เข้ามาอย่างต่อเนื่อง

เลือกแบบเฉพาะ ไม่ใช่แบบใช้ร่วมกัน

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

วิธีวัด “ความใกล้”

ความใกล้เป็นการตัดสินใจจากข้อมูล ไม่ใช่ความรู้สึก ขั้นแรก ให้ดูว่าคุณอยู่ตรงไหนใน epoch ปัจจุบัน ใช้ getEpochInfo เพื่อดึงข้อมูล epoch และอ่านจำนวน slot ที่ผ่านไปกับจำนวนที่เหลือ จากนั้นใช้ getRecentPerformanceSamples เพื่อประเมินเวลาเฉลี่ยต่อ slot ล่าสุด จำนวน slot ที่เหลือคูณด้วยเวลาเฉลี่ยต่อ slot จะให้จำนวนวินาทีคร่าว ๆ ก่อนการเปลี่ยน ทำให้วางแผนการเตรียมและส่งต่องานระหว่างสถานที่ได้ง่ายขึ้น
เมื่อใกล้ถึงการเปลี่ยน ให้ดึงผู้นำในช่วงเป้าหมายด้วย getSlotLeaders และจำกัดรายชื่อผู้มีแนวโน้มในระยะใกล้ คุณแสดงรายการโหนดคลัสเตอร์ได้ด้วย getClusterNodes จากนั้นเทียบ identity ของผู้นำกับข้อมูลโหนด แล้วใช้ IP สาธารณะหรือที่อยู่ gossip เพื่อประเมินตำแหน่งทางภูมิศาสตร์ที่เป็นไปได้
ต้องระวังว่า IP geolocation อาจผิดพลาดหรือล้าสมัย เมื่อได้แผนที่คร่าว ๆ แล้ว ให้ ping จากแต่ละจุดปฏิบัติการจริงและวัดค่าพื้นฐานของเวลาไปกลับโดยตรง เครือข่ายคล้ายการเดินทางทางถนน ระยะทางสำคัญ แต่เส้นทางที่เลือกเปลี่ยนเวลาถึงปลายทาง Ping เป็นตัวบ่งชี้ขนาดเล็กว่าถนนในวันนี้แออัดเพียงใด อย่าอาศัยการวัดเพียงครั้งเดียว ให้ ping แบบเบาหลายครั้งในช่วงเวลาสั้น ๆ แล้วตัดสินจากค่ามัธยฐานเพื่อลดสัญญาณรบกวน
อย่าทิ้งผลลัพธ์ ให้เก็บค่าที่วัดและการจับคู่ของแต่ละจุดปฏิบัติการไว้ในฐานข้อมูลของคุณ และให้ worker ขนาดเบาอัปเดตความเปลี่ยนแปลงเมื่อแต่ละ epoch เปลี่ยน การดำเนินงานประจำวันจะเสถียรขึ้นและตัดสินใจได้เร็วขึ้น

ทำให้เป็นระบบด้วยฐานข้อมูลและ worker

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

การปรับระดับจุลภาคและการออกแบบระดับมหภาค

ในแต่ละจุดปฏิบัติการ ให้ใช้ CPU ความเร็วสัญญาณนาฬิกาสูง หน่วยความจำ DDR5 และ NVMe รุ่นล่าสุด พร้อมรักษาการใช้ทรัพยากรทั่วไปให้อยู่ในระดับต่ำ การปรับระดับจุลภาคเป็นฐานที่ทำให้การออกแบบหลายภูมิภาคคุ้มค่า ในระดับมหภาค ให้วางปลายทางและเซิร์ฟเวอร์แบบเฉพาะร่วมกันในเครือข่ายเดียว เพื่อเพิ่ม “การสื่อสารแบบไร้ระยะทาง” ที่ไม่ผ่านอินเทอร์เน็ตสาธารณะให้สูงสุด สำหรับการส่งต่อระหว่างจุดปฏิบัติการ เส้นทางเฉพาะของคุณเองมักลดเวลารอส่งต่องานเมื่อเทียบกับเส้นทางทั่วไปผ่าน RPC สาธารณะ

การนำไปใช้และการสนับสนุน

รับข้อมูลใกล้ผู้นำ และส่งข้อมูลจากใกล้ผู้นำ เนื่องจากคำว่า “ใกล้” เปลี่ยนอยู่เสมอ จึงต้องกระจายจุดปฏิบัติการไปหลายภูมิภาค สิ่งที่ต้องมีคือกลไกขนาดเล็กสำหรับติดตามตารางล่าสุด และแนวทางที่เหมาะสมในการวางจุดปฏิบัติการ เราช่วยคุณในฐานะผู้สร้างด้วยขั้นตอนที่เป็นรูปธรรมเพื่อลดเวลาไปกลับของข้อมูล ซึ่งรวมถึงการออกแบบฐานข้อมูลและ worker การวางจุดปฏิบัติการ การเตรียมปลายทางเฉพาะ และการส่งต่องานระหว่างเมือง
หากต้องการข่าวสารและสอบถาม โปรดเข้าร่วม ERPC Web Dashboard มีบริการทดลองใช้ฟรีและสภาพแวดล้อมทดสอบ ERPC Web Dashboard: https://dashboard.erpc.global/th
ขอบคุณเช่นเคย เรายังคงทดสอบในสนามจริงและปรับปรุงอย่างซื่อสัตย์ เพื่อให้โปรเจกต์ของคุณประสบความสำเร็จ