1. परिचय
पिछली बार अपडेट किए जाने की तारीख: 12-02-2020
माइक्रोसर्विस का बैटल अरीना
क्या आपने कभी बर्फ़ के गोलों की लड़ाई का हिस्सा बनाया है, जहां आप इधर-उधर घूमते हैं और हंसी-मज़ाक़ के साथ दूसरों पर बर्फ़ के गोले फेंकते हैं? अगर नहीं, तो किसी दिन ज़रूर आज़माएं! हालांकि, अब खुद को नुकसान पहुंचाने के बजाय, नेटवर्क को ऐक्सेस करने वाली एक छोटी सी सेवा (माइक्रोसेवा) तैयार की जा सकती है. यह सेवा, अन्य माइक्रोसेवाओं से मुकाबला करने के लिए लड़ेगी. हम अटलांटा, जॉर्जिया में इस पहले माइक्रोसर्विस मुकाबले की मेज़बानी कर रहे हैं. इसलिए, हमारी माइक्रोसर्विस, बर्फ़ के गोलों के बजाय आड़ू फेंक रही है.
आपको लग रहा होगा कि... लेकिन एक माइक्रोसर्विस कैसे "थ्रो" करती है पीच या अन्य माइक्रोसर्विस पर? माइक्रोसर्विस को नेटवर्क के अनुरोध (आम तौर पर, एचटीटीपी पर) मिल सकते हैं और उससे जवाब मिल सकते हैं. एक "अरीना मैनेजर" है जो आपकी माइक्रोसर्विस को अरीना की मौजूदा स्थिति की जानकारी भेजेगा और फिर आपकी माइक्रोसर्विस एक निर्देश के साथ जवाब देगी, जिसमें बताया जाएगा कि क्या करना है.
बेशक, आपका लक्ष्य जीतना होता है, लेकिन इस दौरान आपको Google Cloud पर माइक्रोसर्विस बनाने और उन्हें डिप्लॉय करने के बारे में भी पता चलेगा.
यह सुविधा कैसे काम करती है
आपको अपनी पसंद की टेक्नोलॉजी इस्तेमाल करके, एक माइक्रोसर्विस बनानी होगी. इसके अलावा, Java, Kotlin या Scala स्टार्टर में से कोई भी विकल्प चुना जा सकता है. इसके बाद, Google Cloud पर माइक्रोसर्विस डिप्लॉय की जाएगी. डिप्लॉय होने के बाद, आपको एक फ़ॉर्म भरना होगा और हमें अपनी माइक्रोसर्विस का यूआरएल बताना होगा. इसके बाद, हम उसे अरीना में शामिल कर देंगे.
इस अरीना में तय किए गए हर मुकाबले के लिए, सभी खिलाड़ी मौजूद होते हैं. DevNexus कॉन्फ़्रेंस के लिए, हर दिन एक अलग अरीना होगा. हर खिलाड़ी एक माइक्रोसर्विस पेश करता है, जो इधर-उधर घूमती है और दूसरे खिलाड़ियों पर आड़ू फेंकती है.
करीब एक बार हमारा क्षेत्र मैनेजर आपकी माइक्रोसर्विस को कॉल करेगा, और मौजूदा अरीना की स्थिति (जहां खिलाड़ी हैं) भेज देगा, और आपकी माइक्रोसर्विस किसी निर्देश के साथ जवाब देगी कि क्या करना है. अरीना में, आगे बढ़ सकते हैं, दाएं या बाएं मुड़ सकते हैं या पीच फेंक सकते हैं. फेंका गया पीच, खिलाड़ी की स्क्रीन के सामने तीन जगहें तक जाएगा. अगर पीच "हिट हो जाता है" दूसरा खिलाड़ी, थ्रोअर को एक पॉइंट मिलता है और हिट खिलाड़ी एक पॉइंट हार जाता है. खिलाड़ियों की मौजूदा संख्या के हिसाब से अरीना का साइज़ अपने-आप अडजस्ट हो जाता है.
यहां बताया गया है कि तीन मेक-अप खिलाड़ियों के साथ अरीना कैसा दिखता है:
बैटल पीच अरीना का उदाहरण
बदलते हुए विरोध
अरीना में ऐसा हो सकता है कि कई खिलाड़ी विरोधी कार्रवाइयां करने की कोशिश करें. उदाहरण के लिए, हो सकता है कि दो खिलाड़ी एक ही स्पेस पर जाने की कोशिश करें. किसी विवाद की स्थिति में, सबसे कम समय में जवाब देने वाली माइक्रोसर्विस जीत जाती है.
युद्ध देखना
यह देखने के लिए कि आपकी माइक्रोसर्विस मुकाबले में कैसा परफ़ॉर्म कर रही है, लाइव अरीना देखें!
बैटल एपीआई
हमारे अरीना मैनेजर के साथ काम करने के लिए, आपकी माइक्रोसर्विस को इस अरीना में हिस्सा लेने के लिए, एक खास एपीआई लागू करना होगा. अरीना मैनेजर, आपके दिए गए यूआरएल पर एचटीटीपी पीओएसटी में मौजूदा अरीना की जानकारी भेजेगा. इस पोस्ट में, JSON का यह स्ट्रक्चर शामिल होगा:
{
"_links": {
"self": {
"href": "https://YOUR_SERVICE_URL"
}
},
"arena": {
"dims": [4,3], // width, height
"state": {
"https://A_PLAYERS_URL": {
"x": 0, // zero-based x position, where 0 = left
"y": 0, // zero-based y position, where 0 = top
"direction": "N", // N = North, W = West, S = South, E = East
"wasHit": false,
"score": 0
}
... // also you and the other players
}
}
}
आपका एचटीटीपी रिस्पॉन्स, स्टेटस कोड 200 (ठीक है) होना चाहिए. इसमें रिस्पॉन्स के मुख्य हिस्से में आपकी अगली मूव शामिल होना चाहिए. इसे इनमें से किसी एक के अपरकेस वर्ण से कोड में बदला जाता है:
F <- move Forward
R <- turn Right
L <- turn Left
T <- Throw
आपको सिर्फ़ इतना ही करना है! आइए, Cloud Run पर माइक्रोसर्विस को डिप्लॉय करने के बारे में जानें. यह Google Cloud की ऐसी सेवा है जो माइक्रोसर्विस और अन्य ऐप्लिकेशन चलाने के लिए उपलब्ध है.
2. आपकी माइक्रोसेवा को डिप्लॉय किया जा रहा है
अपनी माइक्रोसर्विस को किसी भी टेक्नोलॉजी की मदद से बनाएं और उसे कहीं भी डिप्लॉय करें, बशर्ते वह सार्वजनिक तौर पर उपलब्ध हो और Battle API के नियमों के मुताबिक हो. चीज़ों को आसान बनाने के लिए, एक सैंपल प्रोजेक्ट शुरू किया जा सकता है. इसमें, कोई भी कमांड चुना जा सकता है.
शुरुआत करने के लिए अपना सैंपल चुनें
यहां युद्ध से जुड़ी माइक्रोसर्विस के तीन सैंपल दिए गए हैं:
Java और स्प्रिंग बूट | ||
Java और क्वार्कस | ||
Kotlin और Micronaut | ||
Kotlin और क्वार्कस | ||
स्काला और Play का फ़्रेमवर्क | ||
शुरू करें |
यह तय करने के बाद कि किस सैंपल के साथ शुरू करना है, "Cloud Run पर डिप्लॉय करें" पर क्लिक करें बटन ऊपर दिया गया है. इससे Cloud Shell (क्लाउड में वर्चुअल मशीन के लिए वेब आधारित कंसोल) लॉन्च हो जाएगा, जहां सोर्स को क्लोन किया जाएगा और फिर डिप्लॉय किए जा सकने वाले पैकेज (डॉकर कंटेनर इमेज) में बनाया जाएगा. इसके बाद, उसे Google कंटेनर रजिस्ट्री में अपलोड किया जाएगा और फिर Cloud Run पर डिप्लॉय किया जाएगा.
जब कहा जाए, तो us-central1
क्षेत्र के बारे में बताएं.
नीचे दिया गया स्क्रीनशॉट, माइक्रोसर्विस बिल्ड और डिप्लॉयमेंट के लिए Cloud Shell आउटपुट दिखाता है
माइक्रोसर्विस के काम करने की पुष्टि करना
Cloud Shell में, डिप्लॉय की गई नई माइक्रोसर्विस को अनुरोध किया जा सकता है. इसमें YOUR_SERVICE_URL
को अपनी सेवा के यूआरएल से बदला जा सकता है (यह "आपका ऐप्लिकेशन अब यहां लाइव है" लाइन के बाद, Cloud Shell में होता है):
curl -d '{ "_links": { "self": { "href": "https://foo.com" } }, "arena": { "dims": [4,3], "state": { "https://foo.com": { "x": 0, "y": 0, "direction": "N", "wasHit": false, "score": 0 } } } }' -H "Content-Type: application/json" -X POST -w "\n" \ https://YOUR_SERVICE_URL
आपको F, L, R या T की जवाब स्ट्रिंग दिखेगी.
एरिना में शामिल किए जाने का अनुरोध करें
अरीना में शामिल होने के लिए, आपको एक छोटा फ़ॉर्म भरना होगा. सबसे मुश्किल हिस्सा यह तय करना है कि आपको अपनी प्रोफ़ाइल फ़ोटो के लिए किस चीज़ का इस्तेमाल करना है. इसके लिए, GitHub इमेज या LinkedIn इमेज का इस्तेमाल किया जा सकता है. इसके अलावा, हम आपके लिए कोई भी अवतार चुन सकते हैं. सबमिशन की समीक्षा पूरी होने के बाद, आपका खिलाड़ी एरिना में दिखेगा.
बनाएं & बदलावों को लागू करना
बदलाव करने से पहले, आपको Cloud Shell में GCP प्रोजेक्ट और इस्तेमाल किए गए सैंपल के बारे में कुछ जानकारी सेटअप करनी होगी. सबसे पहले अपने GCP प्रोजेक्ट की सूची बनाएं:
gcloud projects list
आपके पास सिर्फ़ एक प्रोजेक्ट हो सकता है. पहले कॉलम से PROJECT_ID
को कॉपी करें और उसे यहां दिए गए कमांड में चिपकाएं. YOUR_PROJECT_ID
को अपने असल प्रोजेक्ट आईडी से बदलें. ऐसा करके, ऐसा एनवायरमेंट वैरिएबल सेट किया जा सकता है जिसका इस्तेमाल हम बाद के निर्देशों में करेंगे:
export PROJECT_ID=YOUR_PROJECT_ID
आपने जो सैंपल इस्तेमाल किया है उसके लिए अब एक और एनवायरमेंट वैरिएबल सेट करें, ताकि बाद के निर्देशों में हम सही डायरेक्ट्री और सेवा का नाम बता सकें:
# Copy and paste ONLY ONE of these export SAMPLE=java-springboot export SAMPLE=kotlin-micronaut export SAMPLE=scala-play
अब Cloud Shell में जाकर, माइक्रोसर्विस के सोर्स में बदलाव किया जा सकता है. Cloud Shell के वेब पर आधारित एडिटर को खोलने के लिए, यह कमांड चलाएं:
cloudshell edit cloudbowl-microservice-game/samples/$SAMPLE/README.md
इसके बाद, आपको बदलाव करने के लिए आगे के निर्देश दिखेंगे.
क्लाउड शेल, एडिटर के साथ सैंपल प्रोजेक्ट खुला हुआ है
अपने बदलावों को सेव करने के बाद, pack
निर्देश का इस्तेमाल करके Cloud Shell में अपना प्रोजेक्ट बनाएं. यह निर्देश, प्रोजेक्ट टाइप का पता लगाने, उसे कंपाइल करने, और डिप्लॉय किया जा सकने वाला आर्टफ़ैक्ट (डॉकर कंटेनर इमेज) बनाने के लिए, Buildpacks का इस्तेमाल करता है.
pack build gcr.io/$PROJECT_ID/$SAMPLE \ --path cloudbowl-microservice-game/samples/$SAMPLE \ --builder heroku/buildpacks
अब जब आपकी कंटेनर इमेज बन गई है, तो कंटेनर इमेज को Google Container Registry में भेजने के लिए, Docker कमांड (Cloud Shell में) का इस्तेमाल करें. ऐसा करने के बाद, Cloud Run से उसे ऐक्सेस किया जा सकेगा:
docker push gcr.io/$PROJECT_ID/$SAMPLE
अब Cloud Run पर नया वर्शन डिप्लॉय करें:
gcloud run deploy $SAMPLE\ --project=$PROJECT_ID\ --platform=managed\ --region=us-central1\ --image=gcr.io/$PROJECT_ID/$SAMPLE\ --memory=512Mi\ --allow-unauthenticated
अब अरीना आपके नए वर्शन का इस्तेमाल करेगा!
3. बधाई हो
बधाई हो, आपने एक ऐसी माइक्रोसर्विस बना ली है और उसे डिप्लॉय कर लिया है जो अन्य माइक्रोसेवाओं से लड़ सकती है! शुभकामनाएं!
आगे क्या होगा?
- अपने Spring बूट ऐप्लिकेशन में डिस्ट्रिब्यूटेड ट्रेसिंग जोड़ना
- अपनी माइक्रोसर्विस को बेहतर बनाने के लिए, AI Platform का इस्तेमाल करना