इस कोडलैब (कोड बनाना सीखने के लिए ट्यूटोरियल) के बारे में जानकारी
1. खास जानकारी
Redis के लिए मेमोरी स्टोर, Google Cloud के लिए पूरी तरह से मैनेज की जाने वाली Redis सेवा है. Google Cloud पर चलने वाले ऐप्लिकेशन, Redis डिप्लॉयमेंट को मुश्किल तरीके से मैनेज करने के बोझ के बिना, ज़्यादा आसान, सुरक्षित, और सुरक्षित Redis सेवा का इस्तेमाल करके, सबसे अच्छी परफ़ॉर्मेंस पा सकते हैं. इसका इस्तेमाल स्प्रिंग बूट ऐप्लिकेशन की परफ़ॉर्मेंस को बेहतर बनाने के लिए डेटा कैशिंग के लिए बैकएंड के रूप में किया जा सकता है. कोडलैब में इसे सेट अप करने का तरीका बताया गया है.
आप क्या #39;जानेंगे
- स्प्रिंग बूट ऐप्लिकेशन के लिए कैश मेमोरी के तौर पर मेमोरी स्टोर का इस्तेमाल कैसे करें.
आपको क्या चाहिए
- Google Cloud का कोई प्रोजेक्ट
- ब्राउज़र, जैसे कि Google Chrome
- Vim, Emacs, और GNU नैनो जैसे मानक Linux टेक्स्ट एडिटर के बारे में जानना
आप कोडलैब का इस्तेमाल कैसे करेंगे?
आप Google Cloud सेवाओं के साथ अपने अनुभव को कितनी रेटिंग देंगे?
2. सेट अप और ज़रूरी शर्तें
अपनी सुविधा के हिसाब से एनवायरमेंट सेट अप करना
अगर आपके पास पहले से कोई Google खाता (Gmail या Google Apps) नहीं है, तो आपको एक खाता बनाना होगा. Google Cloud Platform Console (console.cloud.google.com) में साइन इन करें और एक नया प्रोजेक्ट बनाएं:
प्रोजेक्ट आईडी याद रखें, सभी Google क्लाउड प्रोजेक्ट में दिया गया नाम (ऊपर दिया गया नाम पहले ही लिया जा चुका है और यह आपके लिए काम नहीं करेगा!). इसे बाद में इस कोडलैब (कोड बनाना सीखना) में PROJECT_ID
के तौर पर बताया जाएगा.
इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग को चालू करना होगा.
इस कोडलैब के जवाब में कुछ डॉलर से ज़्यादा खर्च नहीं करना चाहिए. हालांकि, अगर आप संसाधनों का इस्तेमाल करना जारी रखते हैं या उन्हें चलाना बंद कर देते हैं, तो यह ज़्यादा भी हो सकता है.
Google Cloud Platform के नए उपयोगकर्ता, 300 डॉलर का मुफ़्त ट्रायल पा सकते हैं.
Google Cloud Shell चालू करें
GCP Console पर सबसे ऊपर दाईं ओर मौजूद टूलबार में, Cloud Shell आइकॉन पर क्लिक करें:
इसके बाद, &Cont &Cloud Shell शुरू करें &कोटेशन पर क्लिक करें;:
प्रावधान करने और पर्यावरण से जुड़ने में सिर्फ़ कुछ समय लगना चाहिए:
इस वर्चुअल मशीन में डेवलपमेंट से जुड़े सभी टूल हैं#39. इसमें लगातार 5 जीबी की होम डायरेक्ट्री मिलती है. यह Google Cloud पर चलती है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती जाती है. इस लैब में, हो सकता है कि किसी ब्राउज़र या Chromebook से आपका काम न हो.
Cloud Shell से कनेक्ट होने के बाद, आपको यह दिख जाएगा कि इसकी पुष्टि पहले से ही हो चुकी है और प्रोजेक्ट पहले से ही आपके PROJECT_ID पर सेट है.
पुष्टि करने के लिए, Cloud Shell में यह निर्देश चलाएं:
gcloud auth list
कमांड आउटपुट
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
कमांड आउटपुट
[core] project = <PROJECT_ID>
अगर ऐसा नहीं है, तो आप इस निर्देश से इसे सेट कर सकते हैं:
gcloud config set project <PROJECT_ID>
कमांड आउटपुट
Updated property [core/project].
3. Redis इंस्टेंस के लिए, Memorystore सेट अप करें
Cloud Shell शुरू करें.
Cloud Shell लॉन्च होने के बाद, आप नया Memorystore इंस्टेंस बनाने के लिए कमांड लाइन का इस्तेमाल कर सकते हैं.
$ gcloud redis instances create myinstance --size=1 --region=us-central1
अगर Memorystore API को #39;चालू नहीं किया गया था, तो आपसे पूछा जाएगा कि आप इसे चालू करना चाहते हैं या नहीं. y का जवाब दें.
API [redis.googleapis.com] not enabled on project [204466653457]. Would you like to enable and retry (this will take a few minutes)? (y/N)? y Enabling service redis.googleapis.com on project 204166153457... Waiting for async operation operations/tmo-acf.c8909997-1b4e-1a62-b6f5-7da75cce1416 to complete... Operation finished successfully. The following command can describe the Operation details: gcloud services operations describe operations/tmo-acf.c8909997-1b4e-1a62-b6f5-7da75cce1416 Create request issued for: [myinstance] Waiting for operation [operation-1538645026454-57763b937ad39-2564ab37-3fea7701] to complete...done. Created instance [myinstance].
कार्रवाई पूरी होने के बाद, इंस्टेंस इस्तेमाल किया जा सकेगा.
नीचे दिए गए निर्देश की मदद से, इंस्टेंस का redis होस्ट आईपी पता पाएं. आप अपने Spring बूट ऐप्लिकेशन को कॉन्फ़िगर करते समय, इसे फिर से इस्तेमाल करेंगे.
$ gcloud redis instances describe myinstance --region=us-central1 \ | grep host host: 10.0.0.4
अगर आप Google Cloud Console में Storage >Memorystore पर नेविगेट करते हैं, तो आपको अपने इंस्टेंस को &kot;ready&kot; स्थिति में देख सकते हैं :
4. कंप्यूट इंजन इंस्टेंस सेट अप करना
एक ही क्षेत्र में कंप्यूट इंजन इंस्टेंस बनाएं.
$ gcloud compute instances create instance-1 --zone us-central1-c
कार्रवाई पूरी होने के बाद, इंस्टेंस इस्तेमाल किया जा सकेगा.
Compute > Compute Engine > VM इंस्टेंस पर जाकर, अपने इंस्टेंस को SSH की मदद से कनेक्ट करें और कनेक्ट करें कॉलम में SSH पर क्लिक करें:
वर्चुअल मशीन (VM) इंस्टेंस शेल (Cloud Shell नहीं) में, OpenJDK, Maven, telnet इंस्टॉल करें:
$ sudo apt-get install openjdk-8-jdk-headless maven telnet
इंस्टॉल करने की प्रोसेस पूरी होने तक इंतज़ार करें और अगले चरण पर जाएं.
5. Spring बूट ऐप्लिकेशन को सेट अप करें
web
, redis
, और cache
डिपेंडेंसी के साथ नया स्प्रिंग बूट प्रोजेक्ट बनाएं:
$ curl https://start.spring.io/starter.tgz \ -d dependencies=web,redis,cache -d language=java -d baseDir=cache-app \ | tar -xzvf - && cd cache-app
Redis होस्ट के लिए Memorystore इंस्टेंस के आईपी पते का इस्तेमाल करने के लिए ऐप्लिकेशन को कॉन्फ़िगर करने के लिए application.properties
फ़ाइल में बदलाव करें.
$ nano src/main/resources/application.properties
Redis आईपी पते के लिए अपने 'Store' मेमोरी के साथ नीचे दी गई लाइन जोड़ें: कुछ कदम पहले से:
spring.redis.host=<memorystore-host-ip-address>
इसके बाद, एक नई लाइन जोड़ें और REST कंट्रोलर Java क्लास बनाएं:
$ nano src/main/java/com/example/demo/HelloWorldController.java
फ़ाइल में यह कॉन्टेंट डालें:
package com.example.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloWorldController { @Autowired private StringRedisTemplate template; @RequestMapping("/hello/{name}") @Cacheable("hello") public String hello(@PathVariable String name) throws InterruptedException { Thread.sleep(5000); return "Hello " + name; } }
@RequestMapping
एनोटेशन, मैथड को एचटीटीपी एंडपॉइंट के तौर पर दिखाता है. साथ ही, यह पाथ के हिस्से को मैथ पैरामीटर (जैसा कि @PathVariable
एनोटेशन से दिखाया गया है) के मैप का हिस्सा बनाता है.
@Cacheable("hello")
एनोटेशन से पता चलता है कि मेथड एक्ज़ीक्यूशन को कैश मेमोरी में सेव करना चाहिए और कैश मेमोरी का नाम "hello
.&kot; पैरामीटर है. इसका इस्तेमाल पैरामीटर वैल्यू के साथ कैश कुंजी के तौर पर किया जाता है. आपको बाद में कोड लैब में एक उदाहरण दिखेगा.
इसके अलावा, आपको Spring बूट ऐप्लिकेशन क्लास में कैश मेमोरी को चालू करना होगा.
DemoApplication.java
में बदलाव करें:
$ nano src/main/java/com/example/demo/DemoApplication.java
org.springframework.cache.annotation.EnableCaching
को इंपोर्ट करें और इस एनोटेशन के साथ क्लास की व्याख्या करें. परिणाम कुछ ऐसा दिखना चाहिए:
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication @EnableCaching public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
6. ऐप्लिकेशन चलाएं और एंडपॉइंट को ऐक्सेस करें
अब आप #39;ऐप्लिकेशन का इस्तेमाल करने के लिए तैयार हैं!
$ mvn spring-boot:run
पहले की तरह ही अपने इंस्टेंस के लिए एक और SSH कनेक्शन खोलें. नई SSH विंडो में, नाम के रूप में /hello/
एंडपॉइंट को कई बार ऐक्सेस करें; bob
" को पास करें.
$ time curl http://localhost:8080/hello/bob Hello bob! real 0m5.408s user 0m0.036s sys 0m0.009s $ time curl http://localhost:8080/hello/bob Hello bob! real 0m0.092s user 0m0.021s sys 0m0.027s
ध्यान दें कि पहली बार अनुरोध करने में पांच सेकंड लगे, लेकिन अगला तरीका बहुत तेज़ था. भले ही, आपने तरीके में Thread.sleep(5000)
को शामिल किया हो. यह इसलिए है, क्योंकि असल तरीका सिर्फ़ एक बार लागू किया गया, और जिसकी वजह से इसे कैश मेमोरी में रखा गया. हर बाद का कॉल, सीधे कैश मेमोरी से नतीजा दिखाता है.
7. कैश किए गए ऑब्जेक्ट की समीक्षा करें
आप वास्तव में यह देख सकते हैं कि ऐप्लिकेशन ने क्या कैश किया है. जिस टर्मिनल का आपने पिछले चरण में इस्तेमाल किया था, उसी टर्मिनल से, टेलनेट का इस्तेमाल करके Redis होस्ट के लिए मेमोरीस्टोर से कनेक्ट करें:
$ telnet <memorystore-host-ip-address> 6379
कैश कुंजियों की सूची देखने के लिए, इस निर्देश का इस्तेमाल करें:
KEYS * hello::bob
जैसा कि आप देख सकते हैं, कैश मेमोरी के नाम का इस्तेमाल, बटन के प्रीफ़िक्स के तौर पर होता है. साथ ही, पैरामीटर वैल्यू का इस्तेमाल दूसरे हिस्से के तौर पर होता है.
वैल्यू वापस पाने के लिए, GET
निर्देश का इस्तेमाल करें:
$ GET hello::bob Hello bob!
बाहर निकलने के लिए QUIT
निर्देश का इस्तेमाल करें.
8. साफ़ करें
स्टोरेज खाली करने के लिए, Cloud Shell से कंप्यूट इंजन और मेमोरीस्टोर इंस्टेंस मिटाएं.
कंप्यूट इंस्टेंस मिटाएं:
$ gcloud compute instances delete instance-1 --zone us-central1-c
Redis इंस्टेंस के लिए Memorystore मिटाएं:
$ gcloud redis instances delete myinstance --region=us-central1
9. बधाई हो!
आपने Redis और Compute Engine इंस्टेंस के लिए Memorystore बनाया है. साथ ही, स्प्रिंग बूट कैशिंग के साथ मेमोरीस्टोर का इस्तेमाल करने के लिए स्प्रिंग बूट ऐप्लिकेशन को कॉन्फ़िगर किया गया!
ज़्यादा जानें
- स्प्रिंग बूट कैशिंग
- मेमोरी स्टोर
- Google Cloud प्रोजेक्ट पर वसंत
- Google Cloud GitHub डेटा स्टोर करने की जगह पर वसंत
- Google Cloud पर Java
लाइसेंस
यह काम, क्रिएटिव कॉमंस एट्रिब्यूशन 2.0 जेनरिक लाइसेंस के तहत मिला है.