ক্লাউড টাস্ক সহ HTTP অনুরোধগুলিকে বাফার করুন৷

1. ভূমিকা

c6ac6ed05292f13e.png

ক্লাউড টাস্ক হল একটি পূর্ণাঙ্গভাবে পরিচালিত সারিবদ্ধ পরিষেবা যা বহু সংখ্যক কার্য সম্পাদন, প্রেরণ এবং বিতরণ পরিচালনার জন্য।

ক্লাউড টাস্ক আপনাকে কাজগুলির টুকরোগুলিকে আলাদা করতে দেয়, যাকে টাস্ক বলা হয়, যেগুলি স্বাধীনভাবে সম্পাদন করা যেতে পারে (যেমন একটি ডাটাবেস এন্ট্রি আপডেট করার জন্য একটি কাজ), আপনার মূল অ্যাপ্লিকেশন প্রবাহের বাইরে, এবং হ্যান্ডলার ব্যবহার করে অ্যাসিঙ্ক্রোনাসভাবে সেগুলিকে প্রক্রিয়া করার জন্য পাঠাতে পারে। আপনি তৈরি করুন।

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

d59ffe8d34138c88.png

ক্লাউড টাস্কের কিছু প্রধান বৈশিষ্ট্য হল:

  • এইচটিটিপি টার্গেট: ইন্ডাস্ট্রি স্ট্যান্ডার্ড OAuth/OIDC প্রমাণীকরণ ব্যবহার করে একটি নিরাপদ ফ্যাশনে Compute Engine, Google Kubernetes Engine, Cloud Run, Cloud Functions বা অন-প্রিমিসেস সিস্টেমে চলমান যেকোনো HTTP পরিষেবাকে লক্ষ্য করে কাজ যোগ করুন।
  • টাস্ক ডিডপ্লিকেশন : একাধিকবার যোগ করা টাস্ক শুধুমাত্র একবার পাঠানো হবে।
  • গ্যারান্টিযুক্ত ডেলিভারি : টাস্কগুলি অন্তত-একবার ডেলিভার করার গ্যারান্টি দেওয়া হয় এবং বেশিরভাগ কাজ ঠিক একবারই ডেলিভারি করা হয়।
  • রেট এবং পুনরায় চেষ্টা নিয়ন্ত্রণ: কার্যগুলি পাঠানোর হার, সর্বোচ্চ সংখ্যক প্রচেষ্টা এবং প্রচেষ্টার মধ্যে অপেক্ষা করার জন্য সর্বনিম্ন সময় নির্ধারণ করে সম্পাদন নিয়ন্ত্রণ করুন।
  • ভবিষ্যৎ সময়সূচী: কোন কাজ চালানোর সময় নিয়ন্ত্রণ করুন।

এই কোডল্যাবে, আপনি প্রথমে শিখবেন কিভাবে HTTP টার্গেট টাস্কের জন্য একটি নিয়মিত ক্লাউড টাস্ক কিউ তৈরি এবং ব্যবহার করতে হয়। তারপর, আপনি ক্লাউড টাস্কগুলির সাথে HTTP অনুরোধগুলিকে আরও সহজে বাফার করতে সারি-স্তরের HTTP URI ওভাররাইড এবং নতুন BufferTask API কীভাবে ব্যবহার করবেন তা শিখবেন।

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

  • কিভাবে HTTP টার্গেট টাস্ক তৈরি করতে হয়।
  • নতুন সারি-স্তরের HTTP URI ওভাররাইড সহ HTTP টার্গেট কাজগুলি কীভাবে তৈরি করবেন।
  • নতুন সারি-স্তরের HTTP URI ওভাররাইডের সাথে মুলতুবি কাজগুলি কীভাবে পরিবর্তন করবেন।
  • নতুন BufferTask API এর সাথে HTTP অনুরোধগুলিকে কীভাবে আরও সহজে বাফার করবেন।

2. সেটআপ এবং প্রয়োজনীয়তা

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

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

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

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

3. HTTP টার্গেট কাজের জন্য একটি নিয়মিত সারি তৈরি করুন

এই প্রথম ধাপে, আপনি শিখবেন কীভাবে একটি নিয়মিত ক্লাউড টাস্ক সারি তৈরি করতে হয় এবং একটি ক্লাউড রান পরিষেবাকে টার্গেট করতে এতে HTTP টাস্ক যুক্ত করতে হয়।

d4f09a342c8eab.png

HTTP টার্গেট কাজ কি?

HTTP টার্গেট টাস্কগুলি ইন্ডাস্ট্রি স্ট্যান্ডার্ড OAuth/OIDC প্রমাণীকরণ ব্যবহার করে একটি নিরাপদ ফ্যাশনে Compute Engine, Google Kubernetes Engine, Cloud Run, Cloud Functions বা অন-প্রিমিসেস সিস্টেমে চলমান যে কোনও HTTP পরিষেবাকে টার্গেট করতে পারে।

একটি ক্লাউড রান পরিষেবা স্থাপন করুন

প্রথমত, নিশ্চিত করুন যে প্রয়োজনীয় API গুলি সক্ষম করা হয়েছে:

gcloud services enable \
  cloudtasks.googleapis.com \
  run.googleapis.com

একটি ক্লাউড রান পরিষেবা স্থাপন করুন যা HTTP কার্যগুলির লক্ষ্য হিসাবে কাজ করবে:

SERVICE1=hello1
REGION=us-central1

gcloud run deploy $SERVICE1 \
  --allow-unauthenticated \
  --image=gcr.io/cloudrun/hello \
  --region=$REGION

একটি ক্লাউড টাস্ক সারি তৈরি করুন

একটি নিয়মিত ক্লাউড টাস্ক সারি তৈরি করুন:

QUEUE1=http-queue
LOCATION=us-central1

gcloud tasks queues create $QUEUE1 --location=$LOCATION

সারি সাময়িকভাবে থামান, যাতে আপনি HTTP কাজগুলি তৈরি হওয়ার সাথে সাথে পর্যবেক্ষণ করতে পারেন:

gcloud tasks queues pause $QUEUE1 --location=$LOCATION

4. একটি HTTP টাস্ক তৈরি করুন এবং পরীক্ষা করুন৷

এই ধাপে, আপনি আগে তৈরি করা সারিটিকে লক্ষ্য করার জন্য একটি HTTP টাস্ক তৈরি করবেন।

একটি HTTP টাস্ক তৈরি করুন

আপনি gcloud ব্যবহার করে HTTP টাস্ক তৈরি করতে পারেন:

gcloud tasks create-http-task \
    --queue=$QUEUE1 \
    --location=$LOCATION \
    --url=$SERVICE1_URL \
    --method=GET

ঐচ্ছিক: আপনি ক্লায়েন্ট লাইব্রেরিগুলির সাথে একটি HTTP টাস্কও তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি একটি C# নমুনার জন্য Program.cs পরীক্ষা করতে পারেন যেখানে একটি HTTP অনুরোধ একটি Task এবং একটি TaskRequest CloudTasksClient সাথে ক্লাউড টাস্কে পাঠানোর আগে মোড়ানো হয়:

var taskRequest = new CreateTaskRequest
{
    Parent = new QueueName(projectId, location, queue).ToString(),
    Task = new Task
    {
        HttpRequest = new HttpRequest
        {
            HttpMethod = HttpMethod.Get,
            Url = url
        }
    }
};

var client = CloudTasksClient.Create();
var response = client.CreateTask(taskRequest);

আপনি সারিতে টাস্ক তৈরি এবং যোগ করতে এটিকে নিম্নরূপ চালাতে পারেন:

dotnet run $PROJECT_ID $LOCATION $QUEUE1 $SERVICE1_URL

HTTP টাস্ক পরীক্ষা করুন

এই মুহুর্তে, টাস্কটি তৈরি করা হয়েছে কিন্তু এটি এখনও কার্যকর করা হয়নি, কারণ সারিটি বিরাম দেওয়া হয়েছে। আপনি সারি তালিকাবদ্ধ করে এটি যাচাই করতে পারেন:

gcloud tasks queues list --location=$LOCATION

আপনি PAUSED অবস্থায় সারি দেখতে পাবেন:

QUEUE_NAME  STATE
http-queue  PAUSED

সারি আবার শুরু করুন:

gcloud tasks queues resume $QUEUE --location=$LOCATION

ক্লাউড রান পরিষেবার লগগুলি পরীক্ষা করুন:

gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE1" --limit 1

আপনার দেখা উচিত যে ক্লাউড রান পরিষেবাটি ক্লাউড টাস্ক থেকে একটি HTTP GET অনুরোধ পেয়েছে:

httpRequest:
  latency: 0.227597158s
  protocol: HTTP/1.1
  remoteIp: 35.243.23.192
  requestMethod: GET
  requestSize: '415'
  requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/
  responseSize: '5510'
  serverIp: 216.239.32.53
  status: 200
  userAgent: Google-Cloud-Tasks

5. একটি রাউটিং কনফিগারেশন সহ একটি সারি তৈরি করুন

এই ধাপে, আপনি সারি-স্তরের টাস্ক রাউটিং কনফিগারেশন বৈশিষ্ট্য ব্যবহার করে একটি HTTP URI ওভাররাইড যোগ করতে একটি রাউটিং কনফিগারেশন সহ একটি ক্লাউড টাস্ক সারি তৈরি করতে শিখবেন। তারপরে আপনি প্রথম ক্লাউড রান পরিষেবাকে টার্গেট করতে এটিতে HTTP কাজগুলি যুক্ত করবেন এবং লক্ষ্য করবেন যে রাউটিং কনফিগারেশনটি দ্বিতীয় ক্লাউড রান পরিষেবাতে কাজগুলিকে রুট করার জন্য URI-কে ওভাররাইড করে৷

5d1ec61a933f77.png

সারি-স্তরের টাস্ক রাউটিং কনফিগারেশন কি?

কিউ-লেভেল টাস্ক রাউটিং কনফিগারেশন সমস্ত মুলতুবি এবং নতুন কাজের জন্য সম্পূর্ণ সারির জন্য HTTP টাস্ক রাউটিং পরিবর্তন করে। এটি টাস্ক লেভেলে HTTP টার্গেট সেট করার প্রয়োজন না হওয়ায় কাজগুলি সহজে তৈরি করার অনুমতি দেয় এবং এটি পরিষেবা প্রদানকারীর কাছে আরও নিয়ন্ত্রণ স্থানান্তরিত করে কারণ তারা একটি সারিতে থাকা সমস্ত টাস্কের লক্ষ্য সেট করতে সক্ষম হয় (যেমন একটি ভিন্ন ব্যাকএন্ডে রুট ট্র্যাফিক যদি মূল ব্যাকএন্ড নিচে থাকে)।

নিম্নলিখিত কনফিগারেশন সারি-স্তরে সেট করা যেতে পারে:

  • শিরোনাম : সারি-স্তরের শিরোনামগুলি যখন সারি-স্তরে নির্দিষ্ট করা হয়, তখন সারিতে থাকা সমস্ত কাজের জন্য শিরোনামগুলি আপসার্ট করবে৷
  • HTTP পদ্ধতি : কিউ-লেভেলে নির্দিষ্ট করা হলে HTTP পদ্ধতি, সারিতে থাকা সমস্ত কাজের জন্য HTTP পদ্ধতিকে ওভাররাইড করবে।
  • টার্গেট URI : হোস্ট, পাথ, ক্যোয়ারী, পোর্ট, স্কিম (HTTP বা HTTPS) পৃথকভাবে ওভাররাইড করা যেতে পারে।
  • অনুমোদন : OIDC/OAuth কনফিগারেশন যখন সারি-স্তরে নির্দিষ্ট করা হয় তখন টাস্ক-লেভেলের OIDC/OAuth কনফিগারেশনকে ওভাররাইড করবে।

একটি দ্বিতীয় ক্লাউড রান পরিষেবা স্থাপন করুন৷

একটি দ্বিতীয় ক্লাউড রান পরিষেবা স্থাপন করুন যা পরবর্তীতে HTTP URI ওভাররাইডের লক্ষ্য হিসাবে কাজ করবে:

SERVICE2=hello2
REGION=us-central1

gcloud run deploy $SERVICE2 \
  --allow-unauthenticated \
  --image=gcr.io/cloudrun/hello \
  --region=$REGION

পরে জন্য পরিষেবা URL এর হোস্ট সংরক্ষণ করুন:

SERVICE2_URL=$(gcloud run services describe $SERVICE2 --region $REGION --format 'value(status.url)')
SERVICE2_HOST=$(echo $SERVICE2_URL | sed 's,http[s]*://,,g')

একটি রাউটিং কনফিগারেশন সহ একটি ক্লাউড টাস্ক সারি তৈরি করুন

দ্বিতীয় ক্লাউড রান পরিষেবাতে HTTP URI ওভাররাইড সহ একটি রাউটিং কনফিগারেশন সহ একটি সারি তৈরি করুন৷

QUEUE2=http-queue-uri-override

gcloud beta tasks queues create $QUEUE2 \
  --http-uri-override=host:$SERVICE2_HOST \
  --location=$LOCATION

মনে রাখবেন যে URI ওভাররাইড দ্বিতীয় ক্লাউড রান পরিষেবাকে বোঝায়। সারিতে যোগ করা যেকোনো HTTP টাস্কের মূল URI হোস্ট ওভাররাইড করা হবে। আপনি সারি কনফিগারেশন দেখতে পারেন:

gcloud beta tasks queues describe $QUEUE2 --location=$LOCATION

আপনার দেখা উচিত যে httpTarget এ একটি uriOverride রয়েছে যা দ্বিতীয় পরিষেবার হোস্টের দিকে নির্দেশ করে:

httpTarget:
  uriOverride:
    host: hello2-idcwffc3yq-uc.a.run.app
    pathOverride: {}
    queryOverride: {}
...

সারি সাময়িকভাবে থামান, যাতে আপনি HTTP কাজগুলি তৈরি হওয়ার সাথে সাথে পর্যবেক্ষণ করতে পারেন:

gcloud tasks queues pause $QUEUE2 --location=$LOCATION

6. রাউটিং কনফিগারেশন সহ সারির জন্য একটি HTTP টাস্ক তৈরি করুন এবং পরীক্ষা করুন

এই ধাপে, আপনি প্রথম পরিষেবাটিকে লক্ষ্য করার জন্য একটি HTTP টাস্ক তৈরি করবেন এবং লক্ষ্য করবেন যে এর URI দ্বিতীয় পরিষেবার দিকে নির্দেশ করার জন্য সারি দ্বারা ওভাররাইড করা হয়েছে।

একটি HTTP টাস্ক তৈরি করুন

প্রথম পরিষেবার URL দিয়ে একটি HTTP টাস্ক তৈরি করুন:

gcloud tasks create-http-task \
    --queue=$QUEUE2 \
    --location=$LOCATION \
    --url=$SERVICE1_URL \
    --method=GET

HTTP টাস্ক পরীক্ষা করুন

সারি আবার শুরু করুন:

gcloud tasks queues resume $QUEUE2 --location=$LOCATION

আপনার দেখা উচিত যে দ্বিতীয় (প্রথম নয়) ক্লাউড রান পরিষেবাটি ওভাররাইডের কারণে ক্লাউড টাস্ক থেকে একটি HTTP GET অনুরোধ পেয়েছে:

gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE2" --limit 1
---
httpRequest:
  latency: 0.228982142s
  protocol: HTTP/1.1
  remoteIp: 35.187.132.84
  requestMethod: GET
  requestSize: '426'
  requestUrl: https://hello2-idcwffc3yq-uc.a.run.app/
  responseSize: '5510'
  serverIp: 216.239.34.53
  status: 200
  userAgent: Google-Cloud-Tasks

7. রাউটিং কনফিগারেশনের সাথে মুলতুবি কাজগুলি পরিবর্তন করুন

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

আবার সারি থামান:

gcloud tasks queues pause $QUEUE2 --location=$LOCATION

টাস্ক URL হিসাবে google.com এর সাথে একটি HTTP টাস্ক তৈরি করুন:

gcloud tasks create-http-task \
    --queue=$QUEUE2 \
    --location=$LOCATION \
    --url=https://www.google.com \
    --method=GET

কাজটি মুলতুবি অবস্থায় রয়েছে কারণ সারিটি বিরাম দেওয়া হয়েছে৷

এখন, প্রথম পরিষেবার দিকে নির্দেশ করতে HTTP URI ওভাররাইড আপডেট করুন। এটি google.com থেকে মুলতুবি থাকা টাস্কের হোস্টকে প্রথম পরিষেবার হোস্টে ওভাররাইড করবে:

SERVICE1_URL=$(gcloud run services describe $SERVICE1 --region $REGION --format 'value(status.url)')
SERVICE1_HOST=$(echo $SERVICE1_URL | sed 's,http[s]*://,,g')

gcloud beta tasks queues update $QUEUE2 \
  --http-uri-override=host:$SERVICE1_HOST \
  --location=$LOCATION

সারি আবার শুরু করুন:

gcloud tasks queues resume $QUEUE2 --location=$LOCATION

আপনার দেখা উচিত যে প্রথম ক্লাউড রান পরিষেবাটি ওভাররাইডের কারণে ক্লাউড টাস্ক থেকে একটি HTTP GET অনুরোধ পেয়েছে ( google.com এর পরিবর্তে):

gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE1" --limit 1
---
httpRequest:
  latency: 0.228982142s
  protocol: HTTP/1.1
  remoteIp: 35.187.132.84
  requestMethod: GET
  requestSize: '426'
  requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/
  responseSize: '5510'
  serverIp: 216.239.34.53
  status: 200
  userAgent: Google-Cloud-Tasks

8. BufferTask API-এর জন্য একটি সারি তৈরি করুন

সাধারণত, আপনি gcloud বা Tasks ক্লায়েন্ট লাইব্রেরি থেকে Tasks API ব্যবহার করে কাজ তৈরি করেন। এটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কাজগুলিতে HTTP অনুরোধগুলি মোড়ানোর জন্য অ্যাপ্লিকেশনগুলিকে বোঝায় এবং এটি অ্যাপ্লিকেশন এবং টাস্ক ক্লায়েন্ট লাইব্রেরির মধ্যে একটি নির্ভরতা তৈরি করে।

এই ধাপে, আপনি দেখতে পাবেন কিভাবে সারি-স্তরের HTTP URI ওভাররাইড এবং নতুন BufferTask API-এর সুবিধা নেওয়া যায় যাতে HTTP টার্গেট কাজগুলি আরও সহজে একটি HTTP অনুরোধ পাঠানো হয়। HTTP অনুরোধ পাঠাতে পারে এমন যেকোনো অ্যাপ্লিকেশন এখন HTTP টার্গেট টাস্ক তৈরি করতে পারে।

b1606516297fc4b6.png

BufferTask API কি?

CreateTask API হল টাস্ক তৈরি করার পুরানো উপায় এবং ক্লায়েন্টকে সমস্ত প্রয়োজনীয় ক্ষেত্র সেট সহ API-এ একটি টাস্ক অবজেক্ট পাঠাতে হবে।

BufferTask API হল একটি নতুন বৈশিষ্ট্য যা ব্যবহারকারীদের কোনো টাস্ক কনফিগারেশন (HTTP URL, শিরোনাম, অনুমোদন) প্রদানের প্রয়োজন ছাড়াই একটি HTTP টাস্ক তৈরি করতে দেয়, যা আপনাকে সহজভাবে বাফার API এ একটি বার্তা বা আপনার অনুরোধের মূল অংশ পাঠাতে দেয়।

এটি পরিষেবাগুলির সাথে সহজে একীকরণ সক্ষম করে কারণ ক্লাউড টাস্কগুলি এখন আপনার পরিষেবার সামনে ক্লায়েন্টের দিকে কোনও কোড পরিবর্তনের প্রয়োজন ছাড়াই স্থাপন করা যেতে পারে৷ BufferTask API-এ পাঠানো যেকোন স্বেচ্ছাচারী HTTP অনুরোধ একটি টাস্ক অবজেক্ট হিসাবে মোড়ানো হবে এবং সারি-স্তরে সেট করা গন্তব্যে পৌঁছে দেওয়া হবে।

BufferTask API ব্যবহার করার জন্য, সারিতে লক্ষ্য URI কনফিগারেশন সেট থাকতে হবে, অথবা অন্য কথায়, সারি-স্তরের রাউটিং কনফিগারেশন বৈশিষ্ট্যটি BufferTask API ব্যবহার করার পূর্বশর্ত।

রাউটিং কনফিগারেশন সহ একটি ক্লাউড টাস্ক সারি তৈরি করুন

একটি রাউটিং কনফিগারেশনের সাথে একটি সারি তৈরি করুন যা আমরা পূর্ববর্তী ধাপে স্থাপন করা প্রথম পরিষেবাটির দিকে নির্দেশ করে:

SERVICE1=hello1
SERVICE1_URL=$(gcloud run services describe $SERVICE1 --region $REGION --format 'value(status.url)')
SERVICE1_HOST=$(echo $SERVICE1_URL | sed 's,http[s]*://,,g')
QUEUE3=http-queue-uri-override-buffer

gcloud beta tasks queues create $QUEUE3 \
  --http-uri-override=host:$SERVICE1_HOST \
  --location=$LOCATION

সারি সাময়িকভাবে থামান, যাতে আপনি HTTP কাজগুলি তৈরি হওয়ার সাথে সাথে পর্যবেক্ষণ করতে পারেন:

gcloud tasks queues pause $QUEUE3 --location=$LOCATION

9. BufferTask API সহ HTTP অনুরোধগুলিকে বাফার করুন৷

এই ধাপে, আপনি BufferTask API সহ সাধারণ HTTP GET বা POST অনুরোধগুলিকে বাফার করবেন। কভারের অধীনে, ক্লাউড টাস্ক এই HTTP অনুরোধগুলিকে সারির ডিফল্ট রাউটিং কনফিগারেশন সেটিংসের সাথে HTTP টাস্কগুলিতে মোড়ানো হবে।

প্রথমে, একটি অ্যাক্সেস টোকেন পেতে লগইন করুন এবং কিছু ভেরিয়েবল সেট করুন:

gcloud auth application-default login
ACCESS_TOKEN=$(gcloud auth application-default print-access-token)
PROJECT_ID=$(gcloud config get-value project)
TASKS_QUEUES_API="https://cloudtasks.googleapis.com/v2beta3/projects/$PROJECT_ID/locations/$LOCATION/queues"

একটি HTTP টাস্ক তৈরি করুন

BufferTask API দিয়ে একটি HTTP টাস্ক তৈরি করুন। লক্ষ্য করুন কিভাবে এটি একটি টাস্ক তৈরি করার প্রয়োজন ছাড়াই একটি সহজ HTTP GET অনুরোধ:

curl -X GET "$TASKS_QUEUES_API/$QUEUE3/tasks:buffer" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

HTTP POST এবং একটি বডি দিয়ে আরেকটি HTTP টাস্ক তৈরি করুন:

curl -X POST "$TASKS_QUEUES_API/$QUEUE3/tasks:buffer" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d "{'message': 'Hello World'}"

ঐচ্ছিক: আপনি ক্লায়েন্ট লাইব্রেরিগুলির সাথে একটি HTTP টাস্কও তৈরি করতে পারেন। উদাহরণস্বরূপ, আপনি একটি C# নমুনার জন্য Program.cs পরীক্ষা করে দেখতে পারেন যেখানে একটি HTTP GET অনুরোধ সরাসরি BufferTask API-এ পাঠানো হয় তা একটি Task মোড়ানো বা ক্লাউড টাস্কের জন্য ক্লায়েন্ট-লাইব্রেরির প্রয়োজন ছাড়াই:

var BufferTaskApiUrl = $"https://cloudtasks.googleapis.com/v2beta3/projects/{ProjectId}/locations/{Location}/queues/{Queue}/tasks:buffer";

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", $"Bearer {AccessToken}");
    var response = await client.GetAsync(BufferTaskApiUrl);
    var content = await response.Content.ReadAsStringAsync();
    Console.WriteLine($"Response: {content}");
}

আপনি এটি নিম্নরূপ চালাতে পারেন:

dotnet run $PROJECT_ID $LOCATION $QUEUE3 $ACCESS_TOKEN

BufferTask API HTTP অনুরোধগুলির মধ্যে একটি টাস্ক তৈরি করার যত্ন নেয় এবং URI-এর জন্য সারির রাউটিং কনফিগারেশন সেটিংস থেকে URL যোগ করে।

HTTP টাস্ক পরীক্ষা করুন

সারি আবার শুরু করুন:

gcloud tasks queues resume $QUEUE3 --location=$LOCATION

আপনার দেখা উচিত যে ক্লাউড রান পরিষেবাটি ক্লাউড টাস্ক থেকে একটি HTTP GET এবং POST অনুরোধ পেয়েছে:

gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=$SERVICE1" --limit 4
---
httpRequest:
  latency: 0.002279292s
  protocol: HTTP/1.1
  remoteIp: 35.243.23.42
  requestMethod: POST
  requestSize: '777'
  requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/
  responseSize: '5450'
  serverIp: 216.239.32.53
  status: 200
  userAgent: Google-Cloud-Tasks
...
httpRequest:
  latency: 0.228982142s
  protocol: HTTP/1.1
  remoteIp: 35.187.132.84
  requestMethod: GET
  requestSize: '426'
  requestUrl: https://hello1-idcwffc3yq-uc.a.run.app/
  responseSize: '5510'
  serverIp: 216.239.34.53
  status: 200
  userAgent: Google-Cloud-Tasks

10. অভিনন্দন

অভিনন্দন, আপনি কোডল্যাব শেষ করেছেন!

ফলো-আপ হিসাবে, আপনি ক্লাউড টাস্কগুলিকে পাব/সাব এবং ক্লাউড রানের মধ্যে একটি বাফার হিসাবে ব্যবহার করে দেখতে পারেন কীভাবে ক্লাউড টাস্কের এই নতুন বৈশিষ্ট্যগুলি পরিষেবাগুলির মধ্যে সহজেই একটি বাফার সারি তৈরি করতে সহায়তা করতে পারে তার একটি বাস্তব-বিশ্বের উদাহরণ দেখতে।

পরিষ্কার করা (ঐচ্ছিক)

চার্জ এড়াতে, সম্পদ পরিষ্কার করা একটি ভাল ধারণা।

আপনার যদি প্রকল্পটির প্রয়োজন না হয় তবে আপনি কেবল প্রকল্পটি মুছে ফেলতে পারেন:

gcloud projects delete $PROJECT_ID

আপনি যদি প্রকল্পের প্রয়োজন হয়, আপনি পৃথকভাবে সম্পদ মুছে ফেলতে পারেন।

ক্লাউড রান পরিষেবাগুলি মুছুন:

gcloud run services delete $SERVICE1 --region $REGION
gcloud run services delete $SERVICE2 --region $REGION

ক্লাউড টাস্ক সারিগুলি মুছুন:

gcloud tasks queues delete $QUEUE1 --location=$LOCATION
gcloud tasks queues delete $QUEUE2 --location=$LOCATION
gcloud tasks queues delete $QUEUE3 --location=$LOCATION

আমরা কভার করেছি কি

  • কিভাবে HTTP টার্গেট টাস্ক তৈরি করতে হয়।
  • নতুন সারি-স্তরের HTTP URI ওভাররাইড সহ HTTP টার্গেট কাজগুলি কীভাবে তৈরি করবেন।
  • নতুন সারি-স্তরের HTTP URI ওভাররাইডের সাথে মুলতুবি কাজগুলি কীভাবে পরিবর্তন করবেন।
  • নতুন BufferTask API এর সাথে HTTP অনুরোধগুলিকে কীভাবে আরও সহজে বাফার করবেন।