Rivet Actors: ชุมชนนักพัฒนาถกทางเลือกใหม่แทน Durable Objects พร้อมระบบจัดการสถานะในตัว

BigGo Editorial Team
Rivet Actors: ชุมชนนักพัฒนาถกทางเลือกใหม่แทน Durable Objects พร้อมระบบจัดการสถานะในตัว

ชุมชนเทคโนโลยีกำลังถกเถียงกันอย่างคึกคักเกี่ยวกับ Rivet Actors ระบบใหม่ที่นำการเขียนโปรแกรมแบบ actor-model มาสู่นักพัฒนากระแสหลัก โดยเฉพาะการเปรียบเทียบกับ Durable Objects ของ Cloudflare และระบบ actor แบบดั้งเดิมอย่าง Erlang

สถาปัตยกรรมและการจัดการสถานะ

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

หากคุณใช้ KV API โดยตรง สิ่งนี้ถูกต้อง Actors ยังมีคุณสมบัติ this._state ซึ่งจะถูกเขียนลงใน FDB โดยอัตโนมัติหลังการเรียก RPC แต่ละครั้งหากมีการแก้ไข ช่วยให้นักพัฒนาสามารถสร้างต้นแบบได้อย่างรวดเร็วด้วยการเขียนโค้ด JavaScript ธรรมดา เช่น this._state.count += 1 โดยไม่ต้องกังวลเรื่องการเขียนสถานะและกรณีพิเศษที่เกี่ยวข้อง

เทคโนโลยีหลัก:

  • รันไทม์: V8 และ Deno
  • การจัดเก็บสถานะ: FoundationDB
  • ระบบประมวลผลธุรกรรมออนไลน์: CockroachDB
  • การตรวจสอบและติดตาม: ClickHouse
  • ระบบแคช: Valkey
  • ระบบส่งข้อความ: NATS
  • ระบบสมดุลโหลด: Traefik

กรณีการใช้งานและประสิทธิภาพ

สมาชิกในชุมชนได้เน้นย้ำถึงการใช้งานที่เป็นประโยชน์หลายประการสำหรับ Rivet Actors โดยเฉพาะในสถานการณ์ที่ต้องการความสอดคล้องสูงและความแม่นยำ เช่น การแก้ไขเอกสารแบบทำงานร่วมกัน แอปพลิเคชันแบบ local-first ที่ซิงค์ด้วย CRDT เกมหลายผู้เล่นแบบมีสถานะ และระบบแชท จุดเด่นที่น่าสนใจคือความสามารถในการปรับขนาดลงเป็นศูนย์โดยอัตโนมัติเมื่อไม่มีการใช้งาน ซึ่งแก้ปัญหาเรื่องต้นทุนการดำเนินงานที่เคยเป็นปัญหาในระบบคล้ายกันอย่าง metaverse backend ของ Improbable

กรณีการใช้งานที่สำคัญ:

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

ประสบการณ์นักพัฒนาและการรองรับภาษา

ประเด็นสำคัญในการอภิปรายคือวิธีการที่ Rivet ทำให้การเขียนโปรแกรมแบบ actor-model เข้าถึงได้ง่ายสำหรับนักพัฒนากระแสหลัก แม้ว่าสมาชิกบางคนจะชี้ว่าฟังก์ชันคล้ายกันนี้มีอยู่แล้วใน Erlang/Elixir แต่หลายคนชื่นชมที่ Rivet มุ่งเน้นการรองรับภาษากระแสหลักอย่าง TypeScript ซึ่งนำไปสู่การพูดคุยกว้างขวางเกี่ยวกับข้อดีข้อเสียระหว่างระบบ actor แบบดั้งเดิมและการพัฒนาแบบสมัยใหม่

วิวัฒนาการทางเทคนิค

นับตั้งแต่การอภิปรายครั้งก่อนบน Hacker News ในปี 2023 Rivet ได้มีการเปลี่ยนแปลงที่สำคัญหลายอย่าง รวมถึงการเขียนระบบ orchestration ใหม่ทั้งหมด การเปิดตัว isolate runtime และการปรับปรุงความสามารถในการ self-hosting ชุมชนแสดงความสนใจเป็นพิเศษในการพัฒนาเหล่านี้ โดยเฉพาะการแทนที่เครื่องมือ orchestration แบบดั้งเดิมอย่าง Nomad ด้วยระบบ workflow engine ที่พัฒนาขึ้นเอง

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

อ้างอิง: Rivet: Run and scale real-time applications with Rivet Actors