پیاده سازی مشتری/سرور

سیستم بازل به عنوان یک فرآیند سرور با عمر طولانی پیاده سازی می شود. این به آن اجازه می‌دهد تا بسیاری از بهینه‌سازی‌ها را که با اجرای دسته‌ای امکان‌پذیر نیست، انجام دهد، مانند ذخیره‌سازی فایل‌های BUILD، نمودارهای وابستگی و سایر ابرداده‌ها از یک ساخت به ساخت دیگر. این سرعت ساخت‌های افزایشی را بهبود می‌بخشد و به دستورات مختلف مانند build و query و جو اجازه می‌دهد تا کش یکسان بسته‌های بارگذاری شده را به اشتراک بگذارند و درخواست‌ها را بسیار سریع کند.

وقتی bazel را اجرا می کنید، مشتری را اجرا می کنید. کلاینت سرور را بر اساس پایه خروجی پیدا می کند که به طور پیش فرض با مسیر دایرکتوری فضای کار پایه و شناسه کاربری شما مشخص می شود، بنابراین اگر در چندین فضای کاری ایجاد کنید، چندین پایگاه خروجی و در نتیجه چندین پردازش سرور Bazel خواهید داشت. چندین کاربر در یک ایستگاه کاری می توانند به طور همزمان در یک فضای کاری ایجاد کنند زیرا پایه های خروجی آنها متفاوت است (کاربریدهای مختلف). اگر مشتری نتواند یک نمونه سرور در حال اجرا را پیدا کند، یک نمونه جدید راه اندازی می کند. فرآیند سرور پس از یک دوره عدم فعالیت متوقف می شود (به طور پیش فرض 3 ساعت، که با استفاده از گزینه راه اندازی --max_idle_secs تغییر است).

در بیشتر موارد، این واقعیت که یک سرور در حال اجرا است برای کاربر نامرئی است، اما گاهی اوقات به خاطر داشتن این موضوع کمک می کند. به عنوان مثال، اگر از اسکریپت هایی استفاده می کنید که ساخت های خودکار زیادی را در دایرکتوری های مختلف انجام می دهند، مهم است که اطمینان حاصل کنید که سرورهای بیکار زیادی انباشته نمی کنید. شما می توانید این کار را با خاموش کردن صریح آنها پس از پایان کار با آنها، یا با تعیین یک بازه زمانی کوتاه انجام دهید.

نام یک فرآیند سرور Bazel در خروجی ps x یا ps -ef به صورت bazel bazel( dirname ) ظاهر می‌شود، جایی که dirname نام پایه دایرکتوری است که ریشه دایرکتوری فضای کاری شما را در بر می‌گیرد. مثلا:

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

این کار تشخیص اینکه کدام فرآیند سرور متعلق به یک فضای کاری معین است را آسان تر می کند. (مراقب باشید که با برخی از گزینه های دیگر برای ps ، فرآیندهای سرور Bazel ممکن است فقط java نامیده شوند.) سرورهای Bazel را می توان با استفاده از دستور shutdown متوقف کرد.

هنگام اجرای bazel ، مشتری ابتدا بررسی می کند که سرور نسخه مناسب است. در غیر این صورت سرور متوقف می شود و سرور جدید راه اندازی می شود. این تضمین می‌کند که استفاده از فرآیند سرور طولانی‌مدت با نسخه‌سازی صحیح تداخل نداشته باشد.