Validators DAO อัปเดตไคลเอนต์ TypeScript สำหรับ Yellowstone Geyser gRPC ใน Solana Stream SDK โดยผสาน NAPI-RS เพื่อเพิ่มประสิทธิภาพและเสถียรภาพของสตรีมมิงความถี่สูง

Validators DAO อัปเดตไคลเอนต์ TypeScript สำหรับ Yellowstone Geyser gRPC ใน Solana Stream SDK โดยผสาน NAPI-RS เพื่อเพิ่มประสิทธิภาพและเสถียรภาพของสตรีมมิงความถี่สูง

Validators DAO อัปเดตไคลเอนต์ TypeScript สำหรับ Yellowstone Geyser gRPC ใน Solana Stream SDK โดยผสาน NAPI-RS เพื่อเพิ่มประสิทธิภาพและเสถียรภาพของสตรีมมิงความถี่สูง
ELSOUL LABO B.V. (สำนักงานใหญ่: อัมสเตอร์ดัม ประเทศเนเธอร์แลนด์; CEO: Fumitake Kawasaki) และ Validators DAO ประกาศอัปเดตเวอร์ชันครั้งใหญ่สำหรับไคลเอนต์ TypeScript ของ “Solana Stream SDK” ซึ่งเป็นเฟรมเวิร์กสตรีมมิง Solana แบบโอเพนซอร์ส โดยทำให้ไคลเอนต์ TypeScript สำหรับ Yellowstone Geyser gRPC ใช้ประโยชน์จาก NAPI-RS (ส่วนที่พัฒนาด้วย Rust แบบเนทีฟ) ได้
การอัปเดตนี้ช่วยให้ Solana Stream SDK มีขีดความสามารถในการประมวลผลและเสถียรภาพสูงขึ้นสำหรับภาระงานสตรีมมิงความถี่สูง โดยยังคงประสบการณ์การพัฒนาด้วย TypeScript แม้ในช่วงทราฟฟิกสูงสุดและมี Event Burst ต่อเนื่อง ระบบก็ออกแบบมาให้ทำงานอย่างเสถียรและทนต่อการล่ม นอกจากนี้ Starter Code ยังได้รับการปรับโครงสร้างให้ก้าวข้ามตัวอย่างการเชื่อมต่อแบบง่าย และจัดวางเป็นรากฐานแบบ Production-Ready ซึ่งออกแบบสำหรับการใช้งานจริงและการต่อยอด

เงื่อนไขในทางปฏิบัติสำหรับจัดการสตรีมแบบเรียลไทม์ด้วย TypeScript

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

เหตุใดการทำงานแบบ Single Thread ของ Node.js จึงเป็นคอขวดในช่วงโหลดสูงสุด

สตรีมมิงความถี่สูงต้องรับ ประมวลผล กรอง และถอดรหัสข้อมูล พร้อมรันตรรกะปลายทางอย่างต่อเนื่องในเวลาเดียวกัน ภายใต้เงื่อนไขนี้ เส้นทางการทำงานแบบ Single Thread ของ Node.js มีแนวโน้มเกิด Backpressure เมื่อมี Burst หรือโหลดพุ่งสูงในช่วงสั้น ๆ
ในทางปฏิบัติ ปัญหามักปรากฏเป็นความหน่วงที่เพิ่มขึ้น งานประมวลผลค้างสะสม Event สูญหาย และการเชื่อมต่อใหม่บ่อยครั้ง แม้ TypeScript จะโดดเด่นด้านความเร็วในการพัฒนาและการบำรุงรักษา แต่ความท้าทายหลักในการดำเนินงานคือจะรักษาขีดความสามารถในการประมวลผลให้เพียงพอในช่วงที่สตรีมมีโหลดสูงสุดได้หรือไม่ การอัปเดตนี้แก้ปัญหาดังกล่าวโดยตรง

ขอบเขตเดิมและขอบเขตที่ขยายขึ้นของการผสาน NAPI-RS

ก่อนหน้านี้ Solana Stream SDK ใช้ NAPI-RS เป็นหลักในไคลเอนต์ TypeScript สำหรับ Shreds gRPC การอัปเดตนี้ขยายการรองรับ NAPI-RS (Native ด้วย Rust) ไปยังไคลเอนต์ TypeScript สำหรับ Yellowstone Geyser gRPC ที่ใช้งานกันอย่างแพร่หลาย
การขยายนี้เพิ่มส่วนของ Pipeline สตรีมมิงที่ได้รับประโยชน์จากการทำงานแบบ Native ซึ่งมีภาระต่ำ โดยยังคงอินเทอร์เฟซที่ใช้ TypeScript การทดสอบภายในแสดงให้เห็นว่าความทนทานต่อ Backpressure ในช่วงโหลดสูงสุดดีขึ้นอย่างมาก และขีดความสามารถในการประมวลผลเพิ่มขึ้นสูงสุดประมาณสี่เท่า ผลลัพธ์สำคัญไม่ได้อยู่ที่ตัวเลขเท่าตัวเพียงอย่างเดียว แต่อยู่ที่พฤติกรรมของระบบซึ่งเปลี่ยนไปในทิศทางที่ไม่ล่มเมื่อถึงช่วงพีก และใช้เป็นฐานการดำเนินงานที่น่าเชื่อถือได้
เมื่อเทียบกับทางเลือกอย่าง WebAssembly (WASM) แล้ว NAPI รันโค้ด Native โดยตรง ทำให้มีความหน่วงต่ำกว่าและ Throughput สูงกว่า ภายใน Solana Stream SDK นั้น NAPI-RS มีบทบาทสำคัญในการยกระดับประสิทธิภาพของสตรีมแบบเรียลไทม์โดยไม่ลดทอนประสบการณ์ของนักพัฒนา TypeScript

ความสำคัญของการใช้ Yellowstone Geyser gRPC ด้วย TypeScript

Geyser gRPC เป็นอินเทอร์เฟซหลักสำหรับรับสตรีมธุรกรรม การอัปเดตบัญชี และเหตุการณ์ Slot ด้วยความหน่วงต่ำ ความล่าช้าหรือข้อมูลสูญหายหมายถึงโอกาสในการซื้อขายที่พลาดไป การติดตามและการตัดสินใจด้านการดำเนินงานที่ช้าลง ตลอดจนต้นทุนการพัฒนาและดำเนินงานที่สูงขึ้นโดยตรง
การทำให้อินเทอร์เฟซหลักนี้ทำงานด้วย TypeScript ได้จริงและทนต่อโหลดช่วงพีก จึงไม่ใช่เพียงเรื่องความเร็ว แต่ยังลดอุปสรรคทั้งด้านการพัฒนาและการดำเนินงาน ทำให้ทีมปรับปรุงระบบได้ต่อเนื่องโดยไม่ต้องเปลี่ยน Technology Stack หรือเขียนตรรกะหลักใหม่

นิยาม Starter Code ใหม่ให้เป็น Production-Ready

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

ทำให้จุดต่อยอดชัดเจนด้วยการปรับโครงสร้าง

ฝั่ง TypeScript แยกความรับผิดชอบให้ชัดเจนเพื่อให้เห็นจุดต่อยอดอย่างเด่นชัด Entry Point มีขนาดเล็กที่สุดและเน้นการเชื่อมส่วนประกอบกับการเริ่มทำงาน ขณะที่ตรรกะการประมวลผลถูกแยกไว้ใน Handler โดยมี Hook อย่าง onTransaction และ onAccount เป็นจุดแทรกตรรกะเฉพาะที่ชัดเจน
โครงสร้างนี้ทำให้ปรับตรรกะการซื้อขาย ตรรกะการตรวจจับ นโยบายการกรอง และปลายทางผลลัพธ์เป็นรายส่วนได้อย่างคาดการณ์ได้ นอกจากนี้ยังกำหนด Subscription รวมไว้ในโค้ด TypeScript แทนการตั้งค่าด้วย JSON ทำให้อ่านง่ายและปลอดภัยด้านประเภทข้อมูลมากขึ้น โครงสร้างที่อ่านเข้าใจได้อย่าง CommitmentLevel.PROCESSED ช่วยลดความคลาดเคลื่อนระหว่างการตั้งค่าในโค้ดกับพฤติกรรมขณะรัน

กำหนดให้เสถียรภาพในการดำเนินงานเป็นเงื่อนไขพื้นฐาน

สำหรับสตรีมมิงความถี่สูง ความเร็วเพียงอย่างเดียวไม่เพียงพอ ความทนทานมีความสำคัญเท่าเทียมกัน การอัปเดตนี้ยังคงมีกลไกในตัว เช่น การควบคุม Backpressure (คิวแบบจำกัดขนาดและบันทึกการ Drop), Metrics ของ Event ที่รับ ประมวลผล และถูก Drop, การรักษาการเชื่อมต่อ (ping/pong), Exponential Backoff และการกู้คืนช่วงข้อมูลที่ขาดหายด้วย from_slot
สิ่งเหล่านี้ไม่ใช่ความสามารถเสริม แต่เป็นข้อกำหนดพื้นฐานของระบบสตรีมมิงใน Production การทำให้ Starter Code เป็น Production-Ready หมายถึงการฝังเงื่อนไขเหล่านี้ตั้งแต่เริ่มต้น แทนที่จะเติมเข้ามาในภายหลัง

ผู้ใช้และกรณีใช้งานเป้าหมาย

การอัปเดตนี้มุ่งเป้าไปยังนักพัฒนาที่ต้องการเดินระบบสตรีม Solana แบบเรียลไทม์ใน Production ด้วย TypeScript ทีมที่สร้างระบบตรวจจับ การซื้อขาย และการติดตามความหน่วงต่ำด้วย Yellowstone Geyser gRPC และนักพัฒนาที่พบปัญหาด้านการรองรับโหลดช่วงพีกหรือพฤติกรรมการเชื่อมต่อใหม่ เป้าหมายคือยกระดับความเป็นไปได้ในการเดินระบบสตรีมมิงด้วย TypeScript โดยไม่เสียข้อได้เปรียบที่มีอยู่

เอกสารอ้างอิง

การอัปเดต Solana Stream SDK มีให้บน GitHub และยินดีรับความคิดเห็นทั้งบน GitHub หรือผ่าน Discord อย่างเป็นทางการของ Validators DAO
ERPC ให้บริการโครงสร้างพื้นฐานสตรีมมิง Solana ในหลายภูมิภาค นักพัฒนาสามารถใช้ Starter Code ของ Solana Stream SDK เพื่อตรวจสอบพฤติกรรมกับสภาพแวดล้อม Geyser gRPC จริงได้โดยตรง และยังสามารถใช้ Free Trial ของ ERPC เพื่อประเมิน SDK กับโครงสร้างพื้นฐานสตรีมมิงร่วมกันภายใต้เงื่อนไขที่ใกล้เคียง Production จริง ดูรายละเอียดเพิ่มเติมได้ที่เว็บไซต์อย่างเป็นทางการของ ERPC
Discord อย่างเป็นทางการของ Validators DAO: https://discord.gg/C7ZQSrCkYR Solana Stream SDK (GitHub): https://github.com/ValidatorsDAO/solana-stream เว็บไซต์อย่างเป็นทางการของ ERPC: https://erpc.global/th/