การใช้งานไคลเอ็นต์/เซิร์ฟเวอร์

ระบบ Bazel มีการใช้งานเป็นกระบวนการของเซิร์ฟเวอร์ที่สามารถใช้งานได้เป็นระยะเวลานาน ซึ่งช่วยให้ใช้การเพิ่มประสิทธิภาพหลายรายการไม่ได้กับการใช้งานแบบกลุ่ม เช่น การแคชไฟล์ BUILD, กราฟทรัพยากร Dependency และข้อมูลเมตาอื่นๆ จากบิลด์ถัดไปไปยังรายการถัดไป คําสั่งนี้ช่วยปรับปรุงความเร็วของบิลด์ที่เพิ่มขึ้นและช่วยให้ คําสั่งต่างๆ เช่น build และ query ใช้แคชเดียวกันของแพ็กเกจที่โหลดเหมือนกันได้ ซึ่งทําให้การค้นหารวดเร็วขึ้นมาก

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