शून्य शून्य डाउनटाइम परिनियोजन हम BotKit के साथ बॉट विकसित करते हैं और अब हम न्यूनतम तैनाती डाउनटाइम के साथ समस्या को हल करने का प्रयास करते हैं।स्लेक बॉट
इस सर्वर पर सर्वर और डॉकर कंटेनर चल रहे हैं। आरटीएम-सर्वर (स्लैक) से जुड़े कंटेनर रन बॉट-एप इंस्टेंस के अंदर। जब मैं बॉट-एप के नए संस्करण (v2) को तैनात करना शुरू करता हूं, तो मैं शून्य डाउनटाइम प्राप्त करना चाहता हूं, उपयोगकर्ताओं को "बॉट ऑफलाइन" नहीं दिखना चाहिए।
तैनात स्क्रिप्ट बॉट एप्लिकेशन का एक नया संस्करण के साथ दूसरे डोकर कंटेनर चलाता है। और बॉट-एप भी आरटीएम-सर्वर से कनेक्ट है। इस तरह, कुछ सेकंड होते हैं, जब दोनों ऐप्स चलते हैं, आरटीएम-सर्वर से जुड़े होते हैं और उपयोगकर्ता कमांड का जवाब देते हैं (और उपयोगकर्ता को उनके आदेश के दो उत्तरों देखना होगा)।
एक तरफ हम कितने इष्टतम निर्णय प्राप्त कर सकते हैं यदि हम शून्य डाउनटाइम प्राप्त करना चाहते हैं और दूसरी ओर, हम उपयोगकर्ता को एक ही समय में दो उदाहरणों से बातचीत करना चाहते हैं?
निर्णय 1: छोटे मौके को टकराव की संभावना होने की अनुमति देने के लिए, जब दोनों उदाहरण उपयोगकर्ता कमांड का जवाब देंगे।
निर्णय 2: शून्य डाउनटाइम परिनियोजन को छोड़ दें। इस मामले में, स्क्रिप्ट तैनात करने से पहले पहले डॉकर-कंटेनर को रोक दिया जाता है, फिर दूसरा शुरू करें। ऐप ऐप के वर्तमान संस्करण को रोकने और ऐप के नए संस्करण को पूरी तरह से शुरू करने के बीच भेजे गए उपयोगकर्ता कमांड का जवाब नहीं देगा।
निर्णय 3: समानांतर रन वर्तमान और ऐप या म्यूटेक्स के नए संस्करण के एक इंटरैक्ट के साथ। सामान्य योजनाबद्ध: 1) ऐप का वर्तमान संस्करण चला रहा है 2) तैनाती स्क्रिप्ट ऐप 3 का नया संस्करण शुरू करती है) मैं समय जब ऐप का एक नया संस्करण लगभग चलाता है और आरटीएम-सर्वर से कनेक्ट करने के लिए तैयार होता है, तो यह वर्तमान संस्करण ऐप पर भेजता है आरटीएम कनेक्शन बंद करने के लिए आदेश। 4) ऐप का वर्तमान संस्करण आरटीएम-कनेक्शन 5 बंद करता है) ऐप का नया संस्करण आरटीएम-कनेक्शन
मुझे लगता है कि अन्य अच्छे समाधान हैं।
आप अपने आवेदन में इस समस्या को कैसे हल करेंगे?
धन्यवाद smarx! बहुत अच्छा समाधान है! पहले संस्करण के विपरीत, यह कम जटिल और अधिक विश्वसनीय प्रतीत होता है। – vovan