Sistem Bazel diimplementasikan sebagai proses server yang berjalan lama. Hal ini memungkinkannya melakukan banyak pengoptimalan yang tidak mungkin dilakukan dengan implementasi berorientasi batch, seperti caching file BUILD, grafik dependensi, dan metadata lainnya dari satu build ke build berikutnya. Hal ini meningkatkan kecepatan build inkremental, dan memungkinkan perintah yang berbeda, seperti build dan query untuk berbagi cache paket yang dimuat yang sama, sehingga membuat kueri sangat cepat.
Saat Anda menjalankan bazel, Anda menjalankan klien. Klien menemukan server berdasarkan basis output, yang secara default ditentukan oleh jalur direktori ruang kerja dasar dan userid Anda, sehingga jika Anda membuat di beberapa ruang kerja, Anda akan memiliki beberapa basis output dan dengan demikian beberapa proses server Bazel.
Beberapa pengguna di workstation yang sama dapat membuat secara bersamaan di ruang kerja yang sama karena basis outputnya akan berbeda (userid yang berbeda). Jika klien tidak dapat menemukan instance server yang sedang berjalan, klien akan memulai instance baru. Proses server akan berhenti setelah periode tidak aktif (3 jam, secara default, yang dapat diubah menggunakan opsi startup --max_idle_secs).
Sebagian besar, fakta bahwa ada server yang berjalan tidak terlihat oleh pengguna, tetapi terkadang membantu untuk mengingat hal ini. Misalnya, jika Anda menjalankan skrip yang melakukan banyak build otomatis di direktori yang berbeda, penting untuk memastikan bahwa Anda tidak mengumpulkan banyak server yang tidak aktif; Anda dapat melakukannya dengan menutupnya secara eksplisit saat Anda selesai menggunakannya, atau dengan menentukan periode waktu tunggu yang singkat.
Nama proses server Bazel muncul dalam output ps x atau ps -e f
sebagai bazel(dirname), dengan dirname adalah nama dasar
direktori yang melampirkan root direktori ruang kerja Anda. Contoh:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...Hal ini memudahkan untuk mengetahui proses server mana yang termasuk dalam ruang kerja tertentu. (Perhatikan bahwa dengan opsi lain tertentu untuk ps, proses server Bazel
mungkin hanya diberi nama java.) Server Bazel dapat dihentikan menggunakan perintah
shutdown.
Saat menjalankan bazel, klien akan memeriksa terlebih dahulu apakah server adalah versi yang sesuai; jika tidak, server akan dihentikan dan server baru akan dimulai. Hal ini memastikan bahwa penggunaan proses server yang berjalan lama tidak mengganggu pembuatan versi yang tepat.