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

Báo cáo vấn đề Xem nguồn Hằng đêm · 7.3 · 7.2 · 7.1 · 7 · 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 trong thời gian dài. Điều này cho phép thực hiện nhiều biện pháp tối ưu hoá không thể thực hiện bằng cách 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, biểu đồ phần phụ thuộc và các siêu dữ liệu khác từ một tạo dựng thành công khác. Đ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ư buildquery để chia sẻ cùng một bộ nhớ đệm của các gói được tải, giúp truy vấn rất nhanh.

Khi chạy bazel tức là bạn đang chạy ứng dụng. Máy khách tìm máy chủ dựa trên cơ sở đầu ra. Theo mặc định, giá trị này được xác định theo đường dẫn của cơ số Workspace và userid của bạn, để nếu bạn tạo trong nhiều không gian làm việc, bạn sẽ có nhiều cơ sở đầu ra và do đó sẽ tạo ra 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 bản dựng đồng thời trong cùng một máy trạm vì cơ sở đầu ra của chúng 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. Nó thực hiện điều 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ữ đã được giải nén. Ngược lại, nếu cơ sở đầu ra không tồn tại, ứng dụng giải nén các tệp của bản lưu trữ và đặt mtime của chúng thành ngày tháng là 9 năm trong tương lai. Sau khi cài đặt, ứng dụng xác nhận rằng các mtime của các tệp đã giải nén bằng với ngày xa nhất để đảm bảo không có sự can thiệp vào quá trình cài đặt đã xảy ra.

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ờ, có thể sửa đổi bằng tuỳ chọn khởi động --max_idle_secs). Nhiều nhất một phần, người dùng không nhìn thấy thực tế là 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 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, thì điều quan trọng là để đảm bảo rằng bạn không tích luỹ 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 chúng một cách rõ ràng khi bạn đã dùng xong hoặc bằng cách chỉ định trong 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 dữ liệu đầu ra của ps x hoặc ps -e fbazel(dirname), trong đó dirname là tên cơ sở của thư mục bao gồm gốc của thư mục Workspace. Ví dụ:

ps -e f
16143 ?        Sl     3:00 bazel(src-johndoe2) -server -Djava.library.path=...

Nhờ vậy, bạn dễ dàng nhận ra quy trình máy chủ nào thuộc về một quy trình Workspace. (Hãy lưu ý rằng với một số tùy chọn khác cho ps, máy chủ Bazel các quá trình này có thể chỉ được đặt tên là java.) Máy chủ Bazel có thể dừng bằng cách sử dụng lệnh tắt.

Khi chạy bazel, trước tiên, ứng dụng sẽ kiểm tra xem máy chủ có phù hợp không phiên bản; 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 giúp đảm bảo rằng việc sử dụng quy trình máy chủ chạy trong thời gian dài sẽ không ảnh hưởng đến lập phiên bản.