ระบบ Bazel ทำงานเป็นกระบวนการเซิร์ฟเวอร์แบบต่อเนื่อง ซึ่งช่วยให้สามารถเพิ่มประสิทธิภาพได้หลายอย่างที่ไม่สามารถทำได้ด้วยการติดตั้งใช้งานแบบเป็นกลุ่ม เช่น การแคชไฟล์ BUILD, กราฟความเกี่ยวข้อง และข้อมูลเมตาอื่นๆ จากบิลด์หนึ่งไปยังอีกบิลด์หนึ่ง ซึ่งจะช่วยเพิ่มความเร็วของการสร้างแบบเพิ่ม และช่วยให้คำสั่งต่างๆ เช่น build
และ query
ใช้แคชของแพ็กเกจที่โหลดไว้ร่วมกันได้ ทำให้การค้นหารวดเร็วมาก
เมื่อเรียกใช้ bazel
แสดงว่าคุณกำลังเรียกใช้ไคลเอ็นต์ ไคลเอ็นต์จะค้นหาเซิร์ฟเวอร์ตามฐานเอาต์พุต ซึ่งโดยค่าเริ่มต้นจะกำหนดโดยเส้นทางของไดเรกทอรีเวิร์กสเปซฐานและรหัสผู้ใช้ของคุณ ดังนั้นหากคุณสร้างในเวิร์กสเปซหลายแห่ง คุณจะมีฐานเอาต์พุตหลายแห่งและกระบวนการเซิร์ฟเวอร์ Bazel หลายรายการ
ผู้ใช้หลายคนในเวิร์กสเตชันเดียวกันสามารถสร้างงานพร้อมกันในเวิร์กスペースเดียวกันได้ เนื่องจากฐานเอาต์พุตของผู้ใช้จะแตกต่างกัน (ผู้ใช้คนละราย)
หากไคลเอ็นต์ไม่พบอินสแตนซ์เซิร์ฟเวอร์ที่ทำงานอยู่ อินสแตนซ์นั้นจะเริ่มอินสแตนซ์ใหม่ โดยจะทำการตรวจสอบว่ามีฐานเอาต์พุตอยู่แล้วหรือไม่ ซึ่งหมายความว่ามีการแตกไฟล์ 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
ไคลเอ็นต์จะตรวจสอบก่อนว่าเซิร์ฟเวอร์เป็นเวอร์ชันที่เหมาะสม หากไม่ใช่ ระบบจะหยุดเซิร์ฟเวอร์และเริ่มเซิร์ฟเวอร์ใหม่ วิธีนี้ช่วยให้มั่นใจได้ว่าการใช้กระบวนการของเซิร์ฟเวอร์ที่ทำงานต่อเนื่องจะไม่รบกวนการกำหนดเวอร์ชันที่เหมาะสม