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

Báo cáo vấn đề Xem nguồn Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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 công cụ này thực hiện nhiều hoạt động tối ưu hoá không thể thực hiện được bằng cách 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 khác. Điều này giúp tăng 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ư buildquery, chia sẻ cùng một bộ nhớ đệm của các gói đã tải, giúp truy vấn rất nhanh. Mỗi máy chủ có thể xử lý tối đa một lệnh gọi cùng một lúc; các lệnh gọi đồng thời khác sẽ chặn hoặc nhanh chóng không thành công (xem --block_for_lock).

Khi chạy bazel tức là bạn đang chạy ứng dụng. Ứng dụng tìm thấy máy chủ dựa trên cơ sở đầu ra. Theo mặc định, cơ sở đầu ra đượ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 song song trong cùng một không gian làm việc vì cơ sở đầu ra của họ sẽ khác nhau (mã nhận dạng người dùng khác nhau).

Nếu ứng dụng 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. Công cụ này thực hiện việc này 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 cơ sở đầu ra không tồn tại, ứng dụng sẽ giải nén các tệp của tệp lưu trữ và đặt mtime của chúng thành một ngày 9 năm trong tương lai. Sau khi cài đặt, ứng dụng xác nhận rằng mtime của các tệp đã giải nén bằng với ngày xa để đảm bảo không có hành vi can thiệp nào và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, bạn có thể sửa đổi quá trình này bằng cách sử dụng tuỳ chọn khởi động --max_idle_secs). Trong hầu hết trường hợp, người dùng sẽ không nhìn thấy một máy chủ đang chạy, nhưng đôi khi cũng cầ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, quan trọng là bạn phải đả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ể làm việc này bằng cách tắt máy chủ một cách rõ ràng khi đã hoàn tất hoặc bằng cách chỉ định một 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 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=...

Nhờ vậy, bạn sẽ dễ dàng tìm ra quy trình máy chủ nào thuộc về một không gian làm việc cụ thể. (Lưu ý rằng với một số tuỳ 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 máy chủ Bazel bằng lệnh shutdown (tắt).

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 thích hợp; nếu không, máy chủ sẽ bị dừng và một máy chủ mới sẽ bắt đầu. Điều này đảm bảo rằng việc sử dụng 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 thích hợp.