ระบบ Bazel เป็นกระบวนการทํางานของเซิร์ฟเวอร์ที่มีมาอย่างยาวนาน ซึ่งช่วยให้สามารถเพิ่มประสิทธิภาพหลายอย่างในการติดตั้งใช้งานแบบกลุ่ม เช่น การแคชไฟล์ BUILD กราฟทรัพยากร Dependency และข้อมูลเมตาอื่นๆ จากบิวด์หนึ่งไปยังบิวด์ถัดไป การดําเนินการนี้จะช่วยปรับปรุงความเร็วของบิลด์ที่เพิ่มขึ้นและช่วยให้คําสั่งต่างๆ เช่น build
และ query
แชร์แคชเดียวกันของแพ็กเกจที่โหลดได้ ทําให้การค้นหาทํางานเร็วขึ้นมาก
เมื่อเรียกใช้ bazel
แสดงว่าคุณเรียกใช้ไคลเอ็นต์ ไคลเอ็นต์จะหาเซิร์ฟเวอร์โดยอ้างอิงฐานเอาต์พุต ซึ่งโดยค่าเริ่มต้นจะกําหนดโดยเส้นทางของไดเรกทอรีพื้นที่ทํางานฐานและรหัสผู้ใช้ ดังนั้นหากคุณสร้างหลายพื้นที่ทํางาน คุณจะมีฐานเอาต์พุตหลายอัน และกระบวนการของเซิร์ฟเวอร์ Bazel หลายรายการ
ผู้ใช้หลายคนในเวิร์กสเตชันเดียวกันสามารถสร้างพร้อมกันได้ในพื้นที่ทํางานเดียวกัน เนื่องจากฐานเอาต์พุตจะต่างกัน (UserID ที่แตกต่างกัน)
หากไคลเอ็นต์ไม่พบอินสแตนซ์ของเซิร์ฟเวอร์ที่ทํางานอยู่ ไคลเอ็นต์จะเริ่มต้นอินสแตนซ์ใหม่ ซึ่งทําได้โดยการตรวจสอบว่ามีฐานเอาต์พุตอยู่แล้วหรือไม่ ซึ่งนั่นหมายถึงการแตกแพ็กเกจที่เก็บถาวรของ Blaze แล้ว หรือหากไม่มีฐานเอาต์พุตอยู่ ไคลเอ็นต์จะคลายการบีบอัดไฟล์ที่เก็บถาวร และตั้งค่า mtime
เป็นวันที่ 9 ปีในอนาคต เมื่อติดตั้งแล้ว ไคลเอ็นต์จะยืนยันว่า mtime
ของไฟล์ที่ไม่ได้แตกไฟล์เท่ากับวันที่ที่อยู่ไกลออกไป เพื่อให้มั่นใจว่าไม่มีการปลอมแปลงการติดตั้ง
กระบวนการของเซิร์ฟเวอร์จะหยุดหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง (3 ชั่วโมงโดยค่าเริ่มต้น ซึ่งแก้ไขได้โดยใช้ตัวเลือกเริ่มต้นใช้งาน --max_idle_secs
) ในกรณีส่วนใหญ่ ข้อเท็จจริงที่ว่าเซิร์ฟเวอร์อื่นๆ กําลังทํางานอยู่ทําให้ผู้ใช้มองไม่เห็น แต่ในบางครั้งก็สามารถช่วยจดจําเรื่องนี้ได้ ตัวอย่างเช่น หากคุณเรียกใช้สคริปต์ที่มีงานสร้างจํานวนมากในไดเรกทอรีต่างๆ สิ่งสําคัญคือคุณต้องไม่สะสมเซิร์ฟเวอร์ที่ไม่ได้ใช้งานเป็นจํานวนมาก ซึ่งทําได้โดยปิดเซิร์ฟเวอร์เหล่านั้นเมื่อคุณทํางานเสร็จแล้วหรือระบุระยะหมดเวลาสั้นๆ
ชื่อของกระบวนการของเซิร์ฟเวอร์ Bazel จะปรากฏในเอาต์พุตของ ps x
หรือ ps -e f
เป็น bazel(dirname)
โดยที่ dirname คือชื่อฐานของไดเรกทอรีที่ล้อมรอบรากของไดเรกทอรีพื้นที่ทํางาน เช่น
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...
วิธีนี้ช่วยให้คุณค้นหากระบวนการของเซิร์ฟเวอร์ที่เป็นของพื้นที่ทํางานที่ระบุได้ง่ายขึ้น (โปรดทราบว่าเมื่อเลือกตัวเลือกอื่นๆ ของ ps
กระบวนการของเซิร์ฟเวอร์ Bazel อาจมีชื่อว่า java
) เซิร์ฟเวอร์ Bazel สามารถหยุดโดยใช้คําสั่ง shutdown
เมื่อเรียกใช้ bazel
ไคลเอ็นต์จะตรวจสอบก่อนว่าเซิร์ฟเวอร์เป็นเวอร์ชันที่เหมาะสมหรือไม่ ถ้าไม่ถูกต้อง เซิร์ฟเวอร์จะหยุดและเริ่มเซิร์ฟเวอร์ใหม่ ซึ่งช่วยให้มั่นใจได้ว่าการใช้กระบวนการของเซิร์ฟเวอร์ที่ทํางานเป็นเวลานานจะไม่รบกวนการกําหนดเวอร์ชันที่ถูกต้อง