กลไกไมโครเซอร์วิส Node.js ที่รวดเร็วสำหรับการเรียกใช้ฟังก์ชันคลาวด์ที่มีเวลาแฝงต่ำ รวมแดชบอร์ดผู้ดูแลระบบ
สำรวจเอกสาร »
รายงานข้อผิดพลาด · คุณสมบัติคำขอ
Boltz Engine เป็นกลไกไมโครเซอร์วิส Node.js ที่รวดเร็วและเป็นคลัสเตอร์ โดยเริ่มต้นอินสแตนซ์จากการสตาร์ทโดยไม่ใช้เครื่องใน 100 มิลลิวินาที และการโต้ตอบกับฟังก์ชันในเวลาต่อมาจะต่ำกว่า 10 มิลลิวินาทีภายใต้สภาวะปกติ อินสแตนซ์ V8 VM ใช้เพื่อแยกบริบทและช่วยให้คุณสามารถออกแบบโค้ดของคุณให้เป็นไมโครเซอร์วิสที่โฮสต์เองซึ่งทำงานร่วมกับบริการบนระบบคลาวด์ได้ มัลติเธรดหมายความว่าอินสแตนซ์ของคุณได้รับการปรับขนาดทั่วทั้งคลัสเตอร์เหนือคอร์ CPU ทั้งหมดของคุณ API ผู้ดูแลระบบช่วยให้คุณจัดการ Boltz จากอินเทอร์เฟซผู้ดูแลระบบที่ให้มา
ดาวน์โหลดจากหน้าเผยแพร่ จากนั้นเรียกใช้ไฟล์ start.sh หรือ start.bat เพื่อติดตั้งและเรียกใช้ Boltz
หรือดึงจาก bsnk/boltz-engine
บน Docker Hub และตั้งค่าขั้นตอนต่อไปนี้:
สร้าง config.json และ secrets.json คุณสามารถดาวน์โหลดสิ่งเหล่านี้ได้จากรุ่นในหน้ารุ่นเผยแพร่
วางไว้ในโฟลเดอร์ นี่จะเป็น boltz-data
เรียกใช้อิมเมจนักเทียบท่าด้วย
$ docker run --publish 5000:5000 --publish 8000:8000 -v /boltz-data:/boltz -v /boltz-data:/secrets/ -v /boltz-data:/database -v /boltz-data/sandbox:/sandbox/ bsnk/boltz-engine:latest
คุณสามารถเปลี่ยนโฟลเดอร์เหล่านี้ให้เหมาะกับความต้องการของคุณและปรับแต่งพอร์ตที่ใช้ใน config.json และในคำสั่งเริ่มต้นได้ คุณควรใช้ boltz เวอร์ชัน 1.1.0
แทนเวอร์ชันล่าสุดเพื่อให้แน่ใจว่าไม่มีจุดบกพร่องในการใช้งานจริง /boltz คือตำแหน่งที่จะค้นหาไฟล์ config.json ภายในคอนเทนเนอร์ และส่วนที่เหลือสามารถปรับแต่งตามเอกสารประกอบได้
Boltz ให้คุณสร้างอินสแตนซ์ VM เพื่อรับและประมวลผลคำขอเว็บ และวอลุ่มเพื่อจัดเก็บโค้ด การกำหนดค่า และให้คุณบันทึกข้อมูลลงในดิสก์เสมือนชั่วคราว การเปลี่ยนแปลงทั้งหมดจะถูกล้างออกเมื่อจำเป็นต้องโหลดอินสแตนซ์หรือวอลุ่มใหม่
แพ็คเกจถูกโหลดจาก package.json และติดตั้งในโฟลเดอร์แซนด์บ็อกซ์บนระบบไฟล์โฮสต์ โดยจะแชร์กับอินสแตนซ์ใดๆ ที่ใช้วอลุ่มเดียวกันในกระบวนการเดียวกัน
การใช้ Boltz Engine ที่แนะนำนั้นมีไว้สำหรับโปรเจ็กต์ไมโครเซอร์วิสธรรมดาๆ ที่สามารถปรับขนาดได้ในภายหลังด้วยผลิตภัณฑ์คลาวด์ที่เหมาะสม มีค่าใช้จ่ายและเส้นโค้งการเรียนรู้ต่ำ ช่วยให้คุณมุ่งเน้นไปที่ฟังก์ชันการทำงานของโปรเจ็กต์ของคุณได้ โดยไม่ต้องตั้งค่าให้ทำงานบนแพลตฟอร์มคลาวด์เมื่อมีน้ำหนักเบาพอที่จะจัดการในเครื่องได้ นอกจากนี้ยังรวดเร็วเป็นพิเศษ โดยให้ผลลัพธ์บนเครื่องของคุณภายในเวลาไม่ถึง 10 มิลลิวินาที แทนที่จะเป็นหลายพันมิลลิวินาทีในฟังก์ชันคลาวด์ปกติ นอกจากนี้ยังใช้งานง่ายด้วยอินเทอร์เฟซผู้ดูแลระบบที่ให้มาด้วย
เครื่องยนต์ Boltz มีปัญหาเล็กน้อย ได้แก่:
ขนาดการติดตั้งแพ็คเกจขนาดใหญ่เนื่องจากการใช้งานแซนด์บ็อกซ์ node_modules วอลุ่มแต่ละรายการ
API ผู้ดูแลระบบใช้การตรวจสอบสิทธิ์พื้นฐาน ซึ่งหมายความว่าคุณต้องรีสตาร์ทเซิร์ฟเวอร์เพื่อเปลี่ยนรหัสผ่าน
เมื่อใช้อินสแตนซ์ GCP Cloud Shell ฟังก์ชันจะได้รับมอบหมายให้ทำซ้ำพารามิเตอร์การค้นหา name
ด้วยเครื่องหมายอัศเจรีย์ และดำเนินการดังนี้
การใช้กระบวนการของผู้ปฏิบัติงานเพียงคนเดียว: 4500-5000
คำขอต่อวินาทีที่เวลาแฝง 50ms
ใช้กระบวนการของผู้ปฏิบัติงานสี่กระบวนการ: คำขอ 5500-6000
คำขอต่อวินาทีที่เวลาแฝง 4-8ms
การใช้ฟังก์ชันเดียวกันกับผู้ปฏิบัติงาน 1 คนทำให้เราสามารถเชื่อมต่อพร้อมกันได้ 1000
โดยทำการร้องขอ 200,000
รายการโดยมีเวลาแฝงประมาณ 100ms
และ 5600rps
Boltz ยอมรับคำขอดึงเพื่อปรับปรุงกลไกหรืออินเทอร์เฟซเว็บ ซึ่งอยู่ใน repo เว็บที่นี่ ใช้ typescript กับชุดกฎ eslint ของ Google ดังนั้นพยายามรักษาความสม่ำเสมอและรักษาประสิทธิภาพเอาไว้
เมื่อคุณพร้อมที่จะแจกจ่ายการเปลี่ยนแปลง คุณต้องแน่ใจว่ามีไฟล์เว็บอยู่ภายใต้ไดเร็กทอรี public
ไม่เช่นนั้น ให้เรียกใช้เว็บอินเทอร์เฟซในโหมดการพัฒนาควบคู่ไปกับกลไก
ลิขสิทธิ์ 2021 bsnk-dev
อนุญาตให้บุคคลใดก็ตามที่ได้รับสำเนาของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง ("ซอฟต์แวร์") อนุญาตโดยไม่เสียค่าใช้จ่าย เพื่อจัดการกับซอฟต์แวร์โดยไม่มีข้อจำกัด รวมถึงแต่ไม่จำกัดเพียงสิทธิ์ในการใช้ คัดลอก ปรับเปลี่ยน ผสาน เผยแพร่ แจกจ่าย ให้อนุญาตช่วง และ/หรือขายสำเนาของซอฟต์แวร์ และอนุญาตให้บุคคลที่ได้รับซอฟต์แวร์นี้สามารถทำได้ ภายใต้เงื่อนไขต่อไปนี้:
ประกาศเกี่ยวกับลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะรวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
ซอฟต์แวร์นี้มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ซึ่งรวมถึงแต่ไม่จำกัดเพียงการรับประกันความสามารถในการค้าขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิด ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดต่อการเรียกร้องค่าเสียหายหรือความรับผิดอื่นใดไม่ว่าในการกระทำของสัญญาการละเมิดหรืออย่างอื่นที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือข้อตกลงอื่น ๆ ใน ซอฟต์แวร์.