Apollo Router Core เป็น เราเตอร์กราฟ ประสิทธิภาพสูงที่กำหนดค่าได้ ซึ่งเขียนด้วยภาษา Rust เพื่อเรียกใช้ supergraph แบบรวมศูนย์ที่ใช้ Apollo Federation 2
Apollo Router Core ได้รับการทดสอบอย่างดี มีการวัดประสิทธิภาพอย่างสม่ำเสมอ มีคุณสมบัติหลักส่วนใหญ่ของ Apollo Gateway และสามารถรองรับปริมาณงานในระดับการผลิตได้
สามารถดูการออกใหม่และบันทึกประจำรุ่น (รวมถึงหมายเหตุเกี่ยวกับการเปลี่ยนแปลงที่สำคัญ) ได้ที่หน้าการเผยแพร่ และสามารถดูรุ่นล่าสุดได้ในหน้าล่าสุดเสมอ CHANGELOG.md
ที่รากของที่เก็บนี้ยังมีการเปลี่ยนแปลง ที่ยังไม่ได้เผยแพร่ นอกเหนือจากประวัติการเปลี่ยนแปลงทั้งหมด
ขณะนี้เรากำลังเผยแพร่หนังสือออกใหม่ทุกๆ 1-2 สัปดาห์
ปฏิบัติตามบทช่วยสอนการเริ่มต้นอย่างรวดเร็วเพื่อเริ่มต้นและใช้งานเราเตอร์
ดูเอกสารประกอบสำหรับรายละเอียดเพิ่มเติม
Apollo Router Core ต้องการให้ส่งไฟล์ supergraph เป็นอาร์กิวเมนต์ --supergraph
และไฟล์การกำหนดค่าเพิ่มเติม ที่จะจัดหา สิ่งเหล่านี้จะอยู่ในไดเร็กทอรีปัจจุบันหรือระบุอย่างชัดเจนผ่านแฟล็ก ไม่ว่าจะโดยพาธสัมบูรณ์หรือพาธที่สัมพันธ์กับไดเร็กทอรีปัจจุบัน
Usage:
Commands:
config Configuration subcommands
help Print this message or the help of the given subcommand(s)
Options:
--log
Log level (off|error|warn|info|debug|trace) [env: APOLLO_ROUTER_LOG=] [default: info]
--hot-reload
Reload locally provided configuration and supergraph files automatically. This only affects watching of local files and does not affect supergraphs and configuration provided by GraphOS through Uplink, which is always reloaded immediately [env: APOLLO_ROUTER_HOT_RELOAD=]
-c, --config
Configuration location relative to the project directory [env: APOLLO_ROUTER_CONFIG_PATH=]
--dev
Enable development mode [env: APOLLO_ROUTER_DEV=]
-s, --supergraph
Schema location relative to the project directory [env: APOLLO_ROUTER_SUPERGRAPH_PATH=]
--apollo-uplink-endpoints
The endpoints (comma separated) polled to fetch the latest supergraph schema [env: APOLLO_UPLINK_ENDPOINTS=]
--apollo-uplink-poll-interval
The time between polls to Apollo uplink. Minimum 10s [env: APOLLO_UPLINK_POLL_INTERVAL=] [default: 10s]
--anonymous-telemetry-disabled
Disable sending anonymous usage information to Apollo [env: APOLLO_TELEMETRY_DISABLED=]
--apollo-uplink-timeout
The timeout for an http call to Apollo uplink. Defaults to 30s [env: APOLLO_UPLINK_TIMEOUT=] [default: 30s]
--listen
The listen address for the router. Overrides `supergraph.listen` in router.yaml [env: APOLLO_ROUTER_LISTEN_ADDRESS=]
-V, --version
Display version and exit
-h, --help
Print help
Apollo สร้างเครื่องมือโอเพ่นซอร์สและบริการเชิงพาณิชย์เพื่อทำให้การพัฒนาแอปพลิเคชันง่ายขึ้น ดีขึ้น และเข้าถึงได้โดยผู้คนจำนวนมากขึ้น เราช่วยให้คุณจัดส่งได้เร็วขึ้นด้วย:
ลองใช้แพลตฟอร์มการเรียนรู้ Odyssey ซึ่งเป็นสถานที่ที่สมบูรณ์แบบในการเริ่มต้นการเดินทาง GraphQL ของคุณด้วยวิดีโอและความท้าทายด้านโค้ดเชิงโต้ตอบ เข้าร่วมชุมชน Apollo เพื่อโต้ตอบและรับความช่วยเหลือทางเทคนิคจากชุมชน GraphQL
การพัฒนา Apollo Router Core ได้รับการขับเคลื่อนโดยหลักการออกแบบต่อไปนี้ ซึ่งให้ข้อมูลการตัดสินใจทางสถาปัตยกรรมและการใช้งาน
ความถูกต้อง: เราเตอร์มุ่งมั่นที่จะใช้งาน GraphQL และ Federation อย่างถูกต้องที่สุด เราให้ความสำคัญกับการทดสอบและบันทึกทุกอย่างโดยนัยในข้อกำหนด ไปจนถึงกรณีความล้มเหลว พฤติกรรมของเราเตอร์ควรเป็นไปตามหลักการที่ทำให้นักพัฒนาประหลาดใจน้อยที่สุด
ความน่าเชื่อถือ: เราเตอร์เป็นส่วนสำคัญของ GraphQL API ดังนั้นจึงต้องเป็นหนึ่งในส่วนที่แข็งแกร่งที่สุดของโครงสร้างพื้นฐาน สิ่งนี้บ่งบอกถึงความเสถียรในลักษณะการทำงาน (ไม่มีข้อขัดข้อง ลูปไม่สิ้นสุด การรั่วไหล ฯลฯ) ความพร้อมใช้งาน (เวลาแฝงที่คาดการณ์ได้ การใช้งาน RAM และ CPU ความสามารถในการปรับขนาด) และความสามารถในการสังเกต (ตัววัด การแจ้งเตือน) ควรสร้างความเชื่อมั่นอย่างมากแก่บุคลากรด้านโครงสร้างพื้นฐานว่าพวกเขาสามารถเรียนรู้ขีดจำกัดและดำเนินการได้อย่างปลอดภัย
การทดลองที่ปลอดภัย: เราเตอร์จะสนับสนุนการทำงานในอนาคตทั้งหมดเกี่ยวกับสหพันธรัฐ ดังนั้นจึงต้องอนุญาตให้มีแนวคิดและการสำรวจใหม่ๆ โดยไม่รบกวนคุณสมบัติที่มีอยู่ โครงการยังคงอยู่ในระหว่างดำเนินการ เราไม่สามารถปล่อยให้ตกผลึกเร็วเกินไป ในขณะที่ยังคงปฏิบัติตามหลักการของความถูกต้องและความน่าเชื่อถือ
การใช้งาน: เราเตอร์จะต้องใช้งานง่าย ต้องการความสามารถในการขยายมากกว่าตัวเลือกการกำหนดค่า และตรวจสอบให้แน่ใจว่าผู้ใช้มีข้อมูลเพียงพอที่จะช่วยเหลือตัวเองเมื่อมีสิ่งผิดปกติเกิดขึ้น ตัวอย่างเช่น:
คำแนะนำหลักการต่อไปนี้:
ความสามารถในการทดสอบหน่วย: รหัสใหม่ทั้งหมดควรทดสอบได้หน่วย หรือมีเหตุผลที่ดีว่าทำไมจึงไม่เป็นเช่นนั้น นี่อาจหมายถึงการใช้เวลาเพิ่มเล็กน้อยเพื่อให้แน่ใจว่าโค้ดสามารถทดสอบแยกกันได้ อย่าพึ่งพาการทดสอบบูรณาการเพียงอย่างเดียว
ชุดทดสอบการรวม: เราจะรวมเข้ากับชุดทดสอบของเกตเวย์และช่วยปรับปรุงเพื่อทดสอบข้อกำหนดทุกด้าน โดยเฉพาะอย่างยิ่ง ชุดทดสอบนี้จะตรวจสอบกรณีความล้มเหลว เช่น ข้อความค้นหาที่ไม่ถูกต้องหรือปัญหาเครือข่าย การทดสอบบูรณาการจะต้องกันกระสุน และต้องไม่ล้มเหลวในกรณีการทดสอบช้าหรือสภาพการแข่งขัน
การวัดและการเรียนรู้: ความน่าเชื่อถือจะต้องได้รับการทดสอบและวัดผล ผ่านการวัดประสิทธิภาพ การทำโปรไฟล์ และผ่านการสำรวจขีดจำกัดของเราเตอร์ เราต้องการเรียนรู้วิธีใช้งานเราเตอร์และจุดที่ระบุคืออะไร ด้วยเหตุนี้ เราเตอร์จะต้องมีเครื่องมือโดยละเอียด เพื่อให้เราสามารถวัดว่าการเปลี่ยนแปลงโค้ดส่งผลต่อเราเตอร์อย่างไร เราดูแลเป็นพิเศษในการวัดค่าใช้จ่ายของคุณสมบัติใหม่ เพื่อลดเวลาแฝงและการใช้ทรัพยากร
ความสามารถในการขยาย: ด้วยการอนุญาตให้ส่วนขยายและคำสั่งแก้ไขพฤติกรรมของเราเตอร์ เราสามารถทำการทดสอบและทดสอบคุณสมบัติใหม่ได้โดยไม่ส่งผลกระทบต่อการสืบค้นหรือจุดสิ้นสุดเฉพาะ นอกจากนี้ การทดลองเหล่านี้ยังปิดใช้งานได้ง่ายในขณะรันไทม์ (แฟล็กคุณลักษณะ นกคีรีบูน ฯลฯ)
อพอลโล กราฟ อิงค์
ซอร์สโค้ดในพื้นที่เก็บข้อมูลนี้ครอบคลุมโดย Elastic License 2.0 ค่าเริ่มต้นทั่วทั้งพื้นที่เก็บข้อมูลคือใบอนุญาตภายใต้ Elastic License 2.0 เว้นแต่ส่วนหัวของไฟล์หรือไฟล์ใบอนุญาตในไดเร็กทอรีย่อยจะระบุใบอนุญาตอื่น ดูใบอนุญาตสำหรับข้อความใบอนุญาตฉบับเต็ม