ক্লায়েন্ট/সার্ভার বাস্তবায়ন

ব্যাজেল সিস্টেমটি একটি দীর্ঘস্থায়ী সার্ভার প্রক্রিয়া হিসাবে প্রয়োগ করা হয়। এটি এটিকে অনেকগুলি অপ্টিমাইজেশন করতে দেয় যা একটি ব্যাচ-ভিত্তিক বাস্তবায়নের সাথে সম্ভব নয়, যেমন বিল্ড ফাইলের ক্যাশিং, নির্ভরতা গ্রাফ এবং অন্যান্য মেটাডেটা এক বিল্ড থেকে পরবর্তীতে। এটি ক্রমবর্ধমান বিল্ডগুলির গতিকে উন্নত করে, এবং বিভিন্ন কমান্ডকে অনুমতি দেয়, যেমন build এবং query লোড করা প্যাকেজগুলির একই ক্যাশে ভাগ করে নেওয়ার জন্য, কোয়েরিগুলি খুব দ্রুত করে।

আপনি যখন bazel চালান, আপনি ক্লায়েন্ট চালাচ্ছেন। ক্লায়েন্ট আউটপুট বেসের উপর ভিত্তি করে সার্ভার খুঁজে পায়, যা ডিফল্টরূপে বেস ওয়ার্কস্পেস ডিরেক্টরি এবং আপনার ইউজারআইডির পাথ দ্বারা নির্ধারিত হয়, তাই আপনি যদি একাধিক ওয়ার্কস্পেস তৈরি করেন, আপনার একাধিক আউটপুট বেস থাকবে এবং এইভাবে একাধিক বেজেল সার্ভার প্রক্রিয়া থাকবে। একই ওয়ার্কস্টেশনে একাধিক ব্যবহারকারী একই ওয়ার্কস্পেসে একই সাথে তৈরি করতে পারে কারণ তাদের আউটপুট বেস আলাদা হবে (ভিন্ন ইউজারআইড)। যদি ক্লায়েন্ট একটি চলমান সার্ভারের উদাহরণ খুঁজে না পায় তবে এটি একটি নতুন শুরু করে। সার্ভার প্রক্রিয়াটি নিষ্ক্রিয়তার পর বন্ধ হয়ে যাবে (ডিফল্টরূপে 3 ঘন্টা, যা স্টার্টআপ বিকল্প --max_idle_secs ব্যবহার করে সংশোধন করা যেতে পারে)।

বেশিরভাগ ক্ষেত্রে, একটি সার্ভার চলমান রয়েছে তা ব্যবহারকারীর কাছে অদৃশ্য, তবে কখনও কখনও এটি মনে রাখতে সহায়তা করে। উদাহরণস্বরূপ, আপনি যদি এমন স্ক্রিপ্টগুলি চালান যা বিভিন্ন ডিরেক্টরিতে প্রচুর স্বয়ংক্রিয় বিল্ডগুলি সম্পাদন করে, তবে এটি নিশ্চিত করা গুরুত্বপূর্ণ যে আপনি প্রচুর নিষ্ক্রিয় সার্ভার জমা করবেন না; আপনি যখন সেগুলি শেষ করে ফেলেন তখন সেগুলিকে স্পষ্টভাবে বন্ধ করে বা একটি সংক্ষিপ্ত সময়সীমা নির্দিষ্ট করে আপনি এটি করতে পারেন৷

একটি Bazel সার্ভার প্রক্রিয়ার নাম ps x বা ps -ef এর bazel( dirname ) হিসাবে প্রদর্শিত হয়, যেখানে dirname হল আপনার ওয়ার্কস্পেস ডিরেক্টরির রুটকে ঘেরা ডিরেক্টরিটির বেসনাম। উদাহরণ স্বরূপ:

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

এটি কোন সার্ভার প্রক্রিয়া একটি প্রদত্ত কর্মক্ষেত্রের অন্তর্গত তা খুঁজে বের করা সহজ করে তোলে। (সাবধানে থাকুন যে ps এর জন্য কিছু অন্যান্য বিকল্পের সাথে, Bazel সার্ভার প্রক্রিয়ার নাম java হতে পারে।) Bazel সার্ভারগুলি শাটডাউন কমান্ড ব্যবহার করে বন্ধ করা যেতে পারে।

bazel চালানোর সময়, ক্লায়েন্ট প্রথমে পরীক্ষা করে যে সার্ভারটি উপযুক্ত সংস্করণ; যদি না হয়, সার্ভারটি বন্ধ হয়ে যায় এবং একটি নতুন শুরু হয়। এটি নিশ্চিত করে যে একটি দীর্ঘ-চলমান সার্ভার প্রক্রিয়ার ব্যবহার সঠিক সংস্করণে হস্তক্ষেপ করে না।