Triển khai ứng dụng/máy chủ

Hệ thống Bazel được triển khai dưới dạng một quy trình máy chủ lâu dài. Điều này cho phép SDK thực hiện nhiều tối ưu hóa không thể thực hiện được với phương thức triển khai theo hướng hàng loạt, chẳng hạn như lưu vào bộ nhớ đệm các tệp BUILD, đồ thị phần phụ thuộc và các siêu dữ liệu khác từ một bản dựng sang bản dựng tiếp theo. Điều này giúp tăng tốc độ của các bản dựng tăng dần và cho phép các lệnh khác nhau, chẳng hạn như buildquery dùng chung bộ nhớ đệm của các gói đã tải. Điều này giúp truy vấn trở nên rất nhanh.

Khi chạy bazel, bạn đang chạy ứng dụng. Máy khách sẽ tìm thấy máy chủ dựa trên cơ sở dữ liệu đầu ra. Theo mặc định, phương thức này được xác định theo đường dẫn của thư mục không gian làm việc cơ sở và userid của bạn. Vì vậy, nếu xây dựng trong nhiều không gian làm việc, bạn sẽ có nhiều cơ sở đầu ra và do đó mang 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ể xây dựng đồng thời trong cùng một không gian làm việc vì cơ sở đầu ra của họ sẽ khác nhau (người dùng khác nhau). Nếu không thể tìm thấy một phiên bản máy chủ đang chạy, ứng dụng sẽ bắt đầu một phiên bản máy chủ mới. 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 tùy chọn này bằng cách sử dụng tùy chọn khởi động --max_idle_secs).

Trong hầu hết mọi trường hợp, thực tế là có một máy chủ đang chạy không hiển thị với người dùng, nhưng đôi khi giúp bạn hiểu điều này. Ví dụ: nếu bạn đang chạy 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, điều quan trọng là đảm bảo rằng bạn không tích lũy nhiều máy chủ không hoạt động; bạn có thể thực hiện việc này bằng cách tắt rõ ràng khi truy cập xong hoặc bằng cách chỉ định khoảng thời gian chờ ngắn.

Tên của 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 đính kèm thư mục gốc của không gian làm việc của bạn. 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ủ thuộc về một không gian làm việc nhất định. (Hãy lưu ý rằng với một số tùy chọn nhất định tới ps, các quy trình của máy chủ Bazel có thể chỉ có 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, máy khách sẽ kiểm tra xem máy chủ có phải là phiên bản phù hợp hay không; nếu không, máy chủ đã bị dừng và máy chủ mới đã 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ủ lâu dài không ảnh hưởng đến việc tạo phiên bản đúng cách.