API บอตซื้อขายบน Base มักเป็นชุดของส่วนต่อประสานหลายอย่าง แทนที่จะเป็นปลายทางซื้อขายสากลเพียงจุดเดียว ระบบอาจอ่านสถานะบล็อกเชนผ่าน JSON-RPC สมัครรับข้อมูลที่สังเกตได้ ขอข้อมูลเส้นทางจากส่วนต่อประสานอีกแห่ง และส่งธุรกรรมที่ลงนามแล้วผ่านอีกการเชื่อมต่อหนึ่ง แต่ละขอบเขตมีจังหวะเวลา พฤติกรรมเมื่อเกิดความล้มเหลว และกฎการตีความของตนเอง

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

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

API บอตซื้อขายบน Base: ระบุส่วนต่อประสานทุกส่วน

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

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

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

กำหนดข้อตกลงการรับข้อมูลให้ชัดเจน

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

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

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

การถอดรหัสเหตุการณ์ API บอตซื้อขายบน Base

การถอดรหัสเหตุการณ์ API บอตซื้อขายบน Base เริ่มจากการยืนยันตัวตนของสัญญาและการตีความโครงสร้างเหตุการณ์ที่ทราบแน่ชัด ลายเซ็นเหตุการณ์อาจบ่งบอกรูปแบบที่คุ้นเคย แต่ไม่ได้พิสูจน์ว่าสัญญาที่ไม่คุ้นเคยมีพฤติกรรมทางเศรษฐกิจตามที่กลยุทธ์คาดหวัง โดยเฉพาะชื่อและสัญลักษณ์นั้นใช้แทนหลักฐานระดับสัญญาได้ไม่ดี

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

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

ใช้ตัวระบุเหตุการณ์แทนลำดับการมาถึง

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

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

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

การกู้คืนการสมัครรับข้อมูล API บอตซื้อขายบน Base

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

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

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

มองการจัดระเบียบเชนใหม่เป็นการเปลี่ยนแปลงหลักฐาน

ตัวสังเกตเชนควรแก้ไขบันทึกเหตุการณ์ที่เพิ่งสังเกตได้ เอกสาร derivation ของ Base แยกบล็อก L2 เป็น unsafe, safe และ finalized ป้ายเหล่านี้อธิบายสถานะหลักฐานที่ต่างกัน ไม่ใช่คำสัญญาว่าทุกสิ่งที่สังเกตได้ก่อนหน้าจะถือเป็นถาวรได้ทันที

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

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

กำหนดงบให้ปริมาณคำขอ

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

ในการออกแบบสมมติที่มีงบภายใน 120 คำขอต่อนาที อาจกันไว้ให้การติดตามตามปกติ 60 คำขอ การกู้คืน 30 คำขอ และการกระทบยอดธุรกรรม 30 คำขอ นี่เป็นการจัดสรรเพื่ออธิบายตัวอย่าง ไม่ใช่ขีดจำกัดของ Base หรือคำแนะนำของผู้ให้บริการ ประเด็นคือทำให้ลำดับความสำคัญชัดเจน หากการเชื่อมต่อใหม่ต้องอ่านประวัติมากขึ้น ระบบสามารถชะลอการค้นหาโอกาสใหม่และรักษาความจุสำหรับความเสี่ยงที่มีอยู่

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

ภาวะงานล้นควรเปลี่ยนพฤติกรรมอย่างเห็นได้ชัด

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

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

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

คำอธิบายความหน่วงของ MegaETH แบบเป็นขั้นตอน แสดงเป็นตัวเลขว่าฟีดขาเข้าที่รวดเร็วยังคงทำให้ผู้รับข้อมูลที่ช้ากว่าตัดสินใจจากคิวที่เก่าลงเรื่อย ๆ ได้อย่างไร

ใช้วิธีลองใหม่ต่างกันสำหรับการอ่านและการเขียน

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

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

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

แยกการลงนามออกจากตัวอ่านข้อมูล

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

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

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

เก็บล็อกที่มีประโยชน์โดยไม่เปิดเผยความลับ

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

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

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

เก็บล็อกที่มีประโยชน์โดยไม่เปิดเผยความลับLast CursorConnectionLostRangeRecoveredOverlapCheckedStream ResumedTRADING FIELD NOTESEDUCATIONAL RESOURCE
การกู้คืนใช้เคอร์เซอร์ที่จัดเก็บถาวรและการอ่านประวัติที่มีช่วงซ้อนทับ เพื่อให้การเชื่อมต่อใหม่ไม่ข้ามหรือทำซ้ำเหตุการณ์สำคัญโดยไม่รู้ตัว

รักษาความสอดคล้องภายในของการอ่านสถานะ

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

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

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

แยกสุขภาพการรับส่งออกจากสุขภาพข้อมูล

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

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

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

วางแผนเปลี่ยนผู้ให้บริการเสมือนการย้ายข้อมูล

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

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

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

ทำให้การปิดระบบเป็นการดำเนินการที่กู้คืนได้

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

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

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

ตัวอย่างการกู้คืนระบบโทเคนอัตโนมัติบน Base แสดงว่าการซื้อที่ยังไม่คลี่คลายคงการกันทรัพยากรไว้ตลอดการปิดระบบ และปล่อยเฉพาะทรัพยากรที่ไม่ได้ใช้หลังการกระทบยอดอย่างไร

ทดสอบขอบเขตที่มักถูกมองข้าม

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

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

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

เรียนรู้ต่อ

สำรวจทรัพยากรทั้งหมด