Hệ thống Bazel được triển khai dưới dạng một quy trình máy chủ tồn tại lâu dài. Điều này cho phép Bazel thực hiện nhiều hoạt động tối ưu hoá mà không thể thực hiện được với một quy trình triển khai theo lô, chẳng hạn như lưu vào bộ nhớ đệm các tệp BUILD, biểu đồ phần phụ thuộc và siêu dữ liệu khác từ bản dựng này sang bản dựng tiếp theo. Điều này giúp cải thiện tốc độ của các bản dựng gia tăng và cho phép các lệnh khác nhau (chẳng hạn như build
và query
) dùng chung bộ nhớ đệm của các gói đã tải, giúp các truy vấn diễn ra rất nhanh. Mỗi máy chủ có thể xử lý tối đa một lệnh gọi tại một thời điểm; các lệnh gọi đồng thời khác sẽ bị chặn hoặc thất bại nhanh (xem --block_for_lock
).
Khi chạy bazel
, bạn đang chạy ứng dụng. Máy khách tìm thấy máy chủ dựa trên cơ sở đầu ra. Theo mặc định, cơ sở này được xác định bằng đường dẫn của thư mục không gian làm việc cơ sở và mã nhận dạng người dùng của bạn. Vì vậy, nếu tạo trong nhiều không gian làm việc, bạn sẽ có nhiều cơ sở đầu ra và do đó có nhiều quy trình máy chủ Bazel. Nhiều người dùng trên cùng một máy trạm có thể tạo đồng thời trong cùng một không gian làm việc vì các cơ sở đầu ra của họ sẽ khác nhau (các mã nhận dạng người dùng khác nhau).
Nếu không tìm thấy một phiên bản máy chủ đang chạy, ứng dụng sẽ khởi động một phiên bản mới. Thao tác này được thực hiện bằng cách kiểm tra xem cơ sở đầu ra đã tồn tại hay chưa, ngụ ý rằng tệp lưu trữ blaze đã được giải nén. Nếu không, nếu không có cơ sở đầu ra, thì ứng dụng sẽ giải nén các tệp của kho lưu trữ và đặt mtime
của các tệp đó thành một ngày trong tương lai 9 năm. Sau khi cài đặt, ứng dụng sẽ xác nhận rằng mtime
của các tệp đã giải nén bằng với ngày rất xa để đảm bảo không xảy ra hành vi giả mạo quá trình cài đặt.
Quá trình máy chủ sẽ dừng sau một khoảng thời gian không hoạt động (theo mặc định là 3 giờ, bạn có thể sửa đổi bằng cách sử dụng lựa chọn khởi động --max_idle_secs
). Hầu hết người dùng không nhận thấy rằng có một máy chủ đang chạy, nhưng đôi khi bạn nên lưu ý điều này. Ví dụ: nếu đang chạy các tập lệnh thực hiện nhiều bản dựng tự động trong các thư mục khác nhau, thì bạn cần đảm bảo rằng bạn không tích luỹ nhiều máy chủ ở trạng thái rảnh; bạn có thể thực hiện việc này bằng cách tắt rõ ràng các máy chủ khi hoàn tất hoặc bằng cách chỉ định khoảng thời gian chờ ngắn.
Tên của một quy trình máy chủ Bazel xuất hiện trong đầu ra của ps x
hoặc ps -e f
dưới dạng bazel(dirname)
, trong đó dirname là tên cơ sở của thư mục bao quanh thư mục gốc của thư mục không gian làm việc. Ví dụ:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...
Điều này giúp bạn dễ dàng tìm ra quy trình máy chủ nào thuộc một không gian làm việc nhất định. (Xin lưu ý rằng với một số lựa chọn khác cho ps
, các quy trình máy chủ Bazel có thể chỉ được đặt tên là java
.) Bạn có thể dừng các máy chủ Bazel bằng lệnh shutdown.
Khi chạy bazel
, trước tiên, ứng dụng sẽ kiểm tra để đảm bảo máy chủ là phiên bản phù hợp; nếu không, máy chủ sẽ dừng và một máy chủ mới sẽ khởi động. Điều này đảm bảo rằng việc sử dụng một quy trình máy chủ chạy trong thời gian dài không ảnh hưởng đến việc tạo phiên bản đúng cách.