মেমোরিস্টোর সহ একটি স্প্রিং বুট অ্যাপ থেকে ক্যাশে ডেটা

রেডিসের জন্য মেমোরিস্টোর হল Google ক্লাউডের জন্য একটি সম্পূর্ণরূপে পরিচালিত Redis পরিষেবা৷ Google ক্লাউডে চলমান অ্যাপগুলি জটিল রেডিস স্থাপনার পরিচালনার বোঝা ছাড়াই অত্যন্ত মাপযোগ্য, উপলব্ধ, এবং সুরক্ষিত রেডিস পরিষেবার ব্যবহার করে চরম কার্যক্ষমতা অর্জন করতে পারে। স্প্রিং বুট অ্যাপের কর্মক্ষমতা উন্নত করতে এটি ডেটা ক্যাশিংয়ের জন্য ব্যাকএন্ড হিসাবে ব্যবহার করা যেতে পারে। কোডল্যাব ব্যাখ্যা করে কিভাবে এটি সেট আপ করতে হয়।

আপনি কি শিখবেন

  • স্প্রিং বুট অ্যাপের জন্য ক্যাশে ব্যাকএন্ড হিসাবে কীভাবে মেমোরিস্টোর ব্যবহার করবেন।

আপনি কি প্রয়োজন হবে

  • একটি Google ক্লাউড প্রকল্প
  • একটি ব্রাউজার, যেমন গুগল ক্রোম
  • Vim, Emacs এবং GNU Nano-এর মতো স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটরদের সাথে পরিচিতি

আপনি কিভাবে কোডল্যাব ব্যবহার করবেন?

শুধুমাত্র পাঠযোগ্য পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

আপনি Google ক্লাউড পরিষেবাগুলির সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

আপনার যদি ইতিমধ্যে একটি Google অ্যাকাউন্ট না থাকে (Gmail বা Google Apps), তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। Google ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com ) এবং একটি নতুন প্রকল্প তৈরি করুন:

2016-02-10 12:45:26.png এর স্ক্রিনশট

প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID হিসাবে উল্লেখ করা হবে।

এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য আপনার কয়েক ডলারের বেশি খরচ করা উচিত নয়, তবে আপনি যদি আরও সংস্থান ব্যবহার করার সিদ্ধান্ত নেন বা আপনি যদি সেগুলিকে চলমান রেখে দেন তবে এটি আরও বেশি হতে পারে (এই নথির শেষে "পরিষ্কার" বিভাগটি দেখুন)।

Google ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা $300 বিনামূল্যের ট্রায়ালের জন্য যোগ্য৷

Google ক্লাউড শেল সক্রিয় করুন

GCP কনসোল থেকে উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

তারপর "স্টার্ট ক্লাউড শেল" ক্লিক করুন:

পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে:

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার অনেক কাজ, যদি না হয়, তাহলে আপনি কেবল একটি ব্রাউজার বা আপনার Google Chromebook দিয়ে করতে পারেন৷

একবার ক্লাউড শেলের সাথে সংযুক্ত হয়ে গেলে, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রকল্পটি ইতিমধ্যেই আপনার PROJECT_ID- তে সেট করা আছে।

আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:

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].

ক্লাউড শেল শুরু করুন।

ক্লাউড শেল চালু হওয়ার পরে, আপনি একটি নতুন মেমোরিস্টোর উদাহরণ তৈরি করতে কমান্ড লাইন ব্যবহার করতে পারেন।

$ gcloud redis instances create myinstance --size=1 --region=us-central1

যদি মেমোরিস্টোর এপিআই সক্ষম করা না থাকে, তাহলে আপনাকে জিজ্ঞাসা করা হবে আপনি এটি সক্ষম করতে চান কিনা। উত্তর 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 হোস্ট আইপি-ঠিকানা পান। আপনার স্প্রিং বুট অ্যাপটি কনফিগার করার সময় আপনি পরে এটি আবার ব্যবহার করবেন।

$ gcloud redis instances describe myinstance --region=us-central1 \
  | grep host
host: 10.0.0.4

আপনি যদি Google ক্লাউড কনসোলে স্টোরেজ > মেমোরিস্টোরে নেভিগেট করেন, তাহলে আপনি "প্রস্তুত" অবস্থায় আপনার উদাহরণ দেখতে সক্ষম হবেন:

একই অঞ্চলে একটি কম্পিউট ইঞ্জিন উদাহরণ তৈরি করুন।

$ gcloud compute instances create instance-1 --zone us-central1-c

অপারেশন শেষ হওয়ার পরে, আপনার উদাহরণ ব্যবহারের জন্য প্রস্তুত হবে।

কম্পিউট > কম্পিউট ইঞ্জিন > ভিএম ইনস্ট্যান্সে নেভিগেট করে SSH-এর মাধ্যমে আপনার ইন্সট্যান্সের সাথে সংযোগ করুন এবং কানেক্ট কলামে SSH- এ ক্লিক করুন:

ভার্চুয়াল মেশিনে (ভিএম) ইনস্ট্যান্স শেল (ক্লাউড শেল নয়), OpenJDK, Maven, telnet ইনস্টল করুন:

$ sudo apt-get install openjdk-8-jdk-headless maven telnet

ইনস্টলেশন সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন এবং তারপরে পরবর্তী ধাপে এগিয়ে যান।

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

application.properties এডিট করুন রেডিস হোস্টের জন্য মেমোরিস্টোর ইনস্ট্যান্সের আইপি ঠিকানা ব্যবহার করতে অ্যাপটি কনফিগার করার জন্য ফাইল।

$ nano src/main/resources/application.properties

রেডিস আইপি ঠিকানার জন্য আপনার মেমোরিস্টোরের সাথে নিম্নলিখিত লাইন যুক্ত করুন (কয়েক ধাপ আগে থেকে):

spring.redis.host=<memorystore-host-ip-address> 

এর পরে একটি নতুন লাইন যুক্ত করুন এবং একটি REST কন্ট্রোলার জাভা ক্লাস তৈরি করুন:

$ 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 টীকাটি একটি HTTP এন্ডপয়েন্ট হিসাবে পদ্ধতিটিকে প্রকাশ করে এবং একটি পদ্ধতি প্যারামিটারে (যেমন @PathVariable টীকা দ্বারা নির্দেশিত) পথের অংশ ম্যাপ করে।

@Cacheable("hello") টীকাটি নির্দেশ করে যে পদ্ধতি সম্পাদনটি ক্যাশে করা উচিত এবং ক্যাশের নাম " hello ।" এটি একটি ক্যাশে কী হিসাবে প্যারামিটার মানের সাথে একত্রে ব্যবহৃত হয়। আপনি কোড ল্যাবে পরে একটি উদাহরণ দেখতে পাবেন।

এছাড়াও, আপনাকে স্প্রিং বুট অ্যাপ ক্লাসে ক্যাশিং সক্ষম করতে হবে।

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);
 }
}

এখন আপনি অ্যাপটি চালানোর জন্য প্রস্তুত!

$ mvn spring-boot:run

আপনার ইন্সট্যান্সে অন্য SSH সংযোগ খুলুন যেভাবে আপনি আগে করেছিলেন। নতুন SSH উইন্ডোতে, নাম হিসাবে " bob " পাস করে একাধিকবার /hello/ এন্ডপয়েন্ট অ্যাক্সেস করুন।

$ 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) আহ্বান রয়েছে। কারণ প্রকৃত পদ্ধতিটি শুধুমাত্র একবার কার্যকর করা হয়েছিল এবং ফলাফলটি ক্যাশে রাখা হয়েছিল। প্রতিটি পরবর্তী কল সরাসরি ক্যাশে থেকে ফলাফল প্রদান করে।

আপনি আসলে দেখতে পারেন ঠিক কি অ্যাপটি ক্যাশ করেছে। আপনি আগের ধাপে যে টার্মিনালটি ব্যবহার করেছিলেন সেই একই টার্মিনাল থেকে, টেলনেট ব্যবহার করে রেডিস হোস্টের জন্য মেমোরিস্টোরের সাথে সংযোগ করুন:

$ telnet <memorystore-host-ip-address> 6379

ক্যাশে কীগুলির তালিকা দেখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

KEYS *
hello::bob

আপনি দেখতে পাচ্ছেন, ক্যাশের নামটি কী-এর উপসর্গ হিসাবে ব্যবহৃত হয় এবং পরামিতি মানটি দ্বিতীয় অংশ হিসাবে ব্যবহৃত হয়।

মান পুনরুদ্ধার করতে, GET কমান্ড ব্যবহার করুন:

$ GET hello::bob
   Hello bob!

প্রস্থান করার জন্য QUIT কমান্ড ব্যবহার করুন।

পরিষ্কার করতে, ক্লাউড শেল থেকে কম্পিউট ইঞ্জিন এবং মেমোরিস্টোর দৃষ্টান্তগুলি মুছুন।

গণনা উদাহরণ মুছুন:

$ gcloud compute instances delete instance-1 --zone us-central1-c

Redis উদাহরণের জন্য Memorystore মুছুন:

$ gcloud redis instances delete myinstance --region=us-central1

আপনি রেডিস এবং একটি কম্পিউট ইঞ্জিন উদাহরণের জন্য মেমোরিস্টোর তৈরি করেছেন। এছাড়াও, আপনি স্প্রিং বুট ক্যাশিং সহ মেমোরিস্টোর ব্যবহার করার জন্য একটি স্প্রিং বুট অ্যাপ কনফিগার করেছেন!

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।