เสาโอเบลิสค์
เอ็นจิ้นเวิร์กโฟลว์ที่กำหนดซึ่งสร้างขึ้นจากรุ่นส่วนประกอบ WASM
สถานะโครงการ / ข้อสงวนสิทธิ์
นี่เป็น รุ่นก่อนเผยแพร่
Repo นี้มีโค้ดแบ็กเอนด์สำหรับการพัฒนาและการทดสอบในเครื่อง ซอฟต์แวร์ไม่มีการรับประกันความเข้ากันได้แบบย้อนหลังสำหรับ CLI, gRPC หรือสคีมาฐานข้อมูล
แพลตฟอร์มที่รองรับ
หลักการสำคัญ
- สคีมาก่อนอื่น โดยใช้ภาษา WIT ของโมเดล WASM Component เป็นส่วนติดต่อระหว่างเวิร์กโฟลว์และกิจกรรมต่างๆ
- ความยินดีของนักพัฒนาแบ็กเอนด์
- กระบวนการเดียวสำหรับการรันตัวดำเนินการ เวิร์กโฟลว์ และกิจกรรม โดยมี Escape Hatch สำหรับกิจกรรมภายนอก (วางแผนไว้)
- ลองใหม่โดยอัตโนมัติเมื่อเกิดข้อผิดพลาด การหมดเวลา การดำเนินการเวิร์กโฟลว์ดำเนินต่อไปหลังจากเซิร์ฟเวอร์หยุดทำงาน
- ความสามารถในการสังเกต (ตามแผน) - ต้องรักษาพารามิเตอร์และผลลัพธ์ร่วมกับลำดับชั้นของฟังก์ชันไว้
- ความสามารถในการเขียน - เวิร์กโฟลว์การซ้อน การเรียกกิจกรรมที่เขียนในภาษาที่รองรับ
- เล่นซ้ำและแยกเวิร์กโฟลว์ที่มีอยู่ (วางแผนไว้) แก้ไขปัญหาและดำเนินการต่อ
แนวคิดและคุณสมบัติ
การติดตั้ง
นักเทียบท่า
CONTAINER_ID= $( docker run -d getobelisk/obelisk )
docker logs --follow $CONTAINER_ID | grep " Serving gRPC requests "
docker exec $CONTAINER_ID obelisk client component list
# See Usage for more details
ไบนารีที่สร้างไว้ล่วงหน้า
ดาวน์โหลดรุ่นล่าสุดจากหน้าเผยแพร่ GitHub
ใช้เวอร์ชันล่าสุดจาก crates.io
ดาวน์โหลดโดยใช้ cargo-binstall
cargo binstall --locked obelisk
หรือสร้างโดยใช้สินค้า
cargo install --locked obelisk
ห้ามสะเก็ด
nix --extra-experimental-features nix-command --extra-experimental-features flakes run github:obeli-sk/obelisk
การใช้งาน
การสร้างไฟล์การกำหนดค่าตัวอย่าง
obelisk server generate-config
การเริ่มต้นเซิร์ฟเวอร์
รับรายการฟังก์ชันที่โหลด
obelisk client component list
การส่งฟังก์ชันเพื่อดำเนินการ (ทั้งเวิร์กโฟลว์หรือกิจกรรม)
# Call fibonacci(10) activity from the workflow 500 times in series.
obelisk client execution submit testing:fibo-workflow/workflow.fiboa ' [10, 500] ' --follow
เหตุการณ์สำคัญ
เหตุการณ์สำคัญ 1: ปล่อยไบนารี่ - เสร็จแล้ว
เหตุการณ์สำคัญ 2: อนุญาตการโต้ตอบระยะไกลผ่าน CLI - เสร็จสิ้น
เหตุการณ์สำคัญ 3: Webhooks, Verify, Structured concurrency, Web UI - เริ่มต้นแล้ว
ความคิดในอนาคต
- CLI แบบโต้ตอบสำหรับการจัดการการดำเนินการ
- กิจกรรมภายนอก gRPC API
- ตัวสร้างกิจกรรม OpenAPI
- กระบวนการวางไข่จากกิจกรรม WASM โดยอ่านผลลัพธ์
- Backpressure: ขีดจำกัดของคิวที่ค้างอยู่ หรือกลยุทธ์การไล่ออก จะทำให้
LimitReached
ช้าลง - รองรับตัวดำเนินการภายนอก - เริ่มต้นการดำเนินการตามการส่งออก WIT เท่านั้น ผู้ดำเนินการภายนอกจะต้องแชร์การเข้าถึงการเขียนในฐานข้อมูล sqlite
- ป้ายกำกับที่จำกัดขั้นตอนการทำงาน/กิจกรรมไว้เฉพาะผู้ดำเนินการ
- การจัดตารางเวลาเป็นระยะ
- การขยายพันธุ์กำหนดเวลา
- การขยายพันธุ์การยกเลิก
- การตั้งค่าความจุของคิว เพิ่มแรงกดดันย้อนกลับให้กับการส่งการดำเนินการ
- ความสามารถในการจำลองพฤติกรรมของระบบที่มีความล้มเหลวที่เกิดขึ้น
- แจ้งกิจกรรม. เมื่อเรียก ค่าที่ส่งคืนจะต้องระบุผ่านจุดสิ้นสุด API
- API สำหรับแสดงรายการการดำเนินการพร้อมกับกิจกรรมการแจ้งเตือนแบบเปิด
- ฟังก์ชันแบบสอบถามแบบอ่านอย่างเดียวที่สามารถเรียกได้ในระหว่างจุดรอหรือหลังการดำเนินการเสร็จสิ้น
- ตัวเลือก stdout, การคงอยู่ของ stderr / การส่งต่อ
- การกำหนดเส้นทางการพึ่งพาอัจฉริยะจากผู้โทรผ่านอินเทอร์เฟซที่นำเข้าไปยังหนึ่งในหลายองค์ประกอบที่ส่งออก
- การลองใหม่อย่างชาญฉลาด - ลองงบประมาณอีกครั้ง ปิดการใช้งานการลองใหม่เมื่อกิจกรรมล้มเหลวใน % หนึ่งของคำขอ
- เพิ่มการกระวนกระวายใจที่กำหนดค่าได้ในการลองใหม่
- สแน็ปช็อตหน่วยความจำเวิร์กโฟลว์เพื่อการเล่นซ้ำที่รวดเร็วยิ่งขึ้น
- ดีบักเกอร์การเดินทางข้ามเวลาสำหรับเวิร์กโฟลว์ ซึ่งทำงานข้ามการปรับใช้ WASM
- ความสามารถในการแก้ไขชุดเวิร์กโฟลว์พร้อมระบบการอนุมัติเมื่อตรวจพบสิ่งที่ไม่กำหนด
- ติดตามสตริงไปยังต้นทางตลอดเวิร์กโฟลว์และกิจกรรมต่างๆ
- การแมป Webhook: การเรียกใช้ฟังก์ชันเดียว การแปลระหว่างพารามิเตอร์ที่กำหนด HTTP และ WIT และค่าส่งคืน
- การส่งต่อบริบทการติดตามแบบกระจายสำหรับ HTTP ขาออกและ webhooks
- อนุญาตให้ระบุตัวแปรข้อผิดพลาดถาวรในรูปแบบคำอธิบายประกอบใน WIT
- รองรับ (แบบกระจาย) sagas - กำหนดการย้อนกลับของกิจกรรม เรียกใช้เวิร์กโฟลว์ที่ล้มเหลว
การสร้างจากแหล่งที่มา
ตั้งค่าการพึ่งพาการพัฒนาโดยใช้ nix flakes:
nix develop
# or `direnv allow`, after simlinking .envrc-example -> .envrc
หรือดาวน์โหลดการอ้างอิงทั้งหมดด้วยตนเองดู dev-deps.txt และการตรวจสอบตาม Ubuntu Dockerfile เรียกใช้โปรแกรม
การทดสอบการทำงาน
การทดสอบเชิงกำหนดโดยใช้เครื่องจำลอง madsim
มีส่วนร่วม
โครงการนี้มีแผนงานและมีการเพิ่มและทดสอบคุณสมบัติตามลำดับที่แน่นอน หากคุณต้องการสนับสนุนคุณสมบัติ โปรดหารือเกี่ยวกับคุณสมบัติดังกล่าวบน GitHub เพื่อให้เรายอมรับแพตช์และการสนับสนุนอื่นๆ คุณต้องยอมรับข้อตกลงสิทธิ์การใช้งานผู้สนับสนุน ("CLA") ของเรา สามารถดู CLA เวอร์ชันปัจจุบันได้ที่นี่