কম্পিউটার

Go-redis, Upstash এবং OpenTelemetry এর সাথে ট্রেসিং বিতরণ করা হয়েছে

এই টিউটোরিয়ালে, আপনি Go-redis ক্লায়েন্ট ব্যবহার করে Upstash Redis ডাটাবেসের সাথে সংযোগ করতে শিখবেন এবং বিতরণ করা ট্রেসিং ব্যবহার করে আপনার অ্যাপের কার্যকারিতা নিরীক্ষণ করবেন।

গো-রেডিস কি?

go-redis গোলং এর জন্য একটি জনপ্রিয় রেডিস ক্লায়েন্ট। বাক্সের বাইরে, এটি রেডিস সার্ভার, সেন্টিনেল এবং ক্লাস্টার সমর্থন করে৷

Upstash Redis ডাটাবেসের সাথে সংযোগ করতে, নিম্নলিখিত কোড ব্যবহার করুন:

package main

import (
	"context"
	"fmt"

	"github.com/go-redis/redis/v8"
)

func main() {
	ctx := context.Background()

	opt, _ := redis.ParseURL("<connection-string-from-Upstash>")
	client := redis.NewClient(opt)

	if err := client.Set(ctx, "foo", "bar", 0); err != nil {
		panic(err)
	}
	fmt.Println(client.Get(ctx, "foo").Result())
}

নির্বিচারে আদেশ চালানোর জন্য, আপনি একটি বিকল্প API ব্যবহার করতে পারেন:

val, err := rdb.Do(ctx, "get", "key").Result()
if err != nil {
	if err == redis.Nil {
		fmt.Println("key does not exists")
		return
	}
	panic(err)
}

আপনি আপনার API-তে ডেটা ক্যাশে বা রেট-লিমিট অনুরোধ করতে go-redis ব্যবহার করতে পারেন। ক্লায়েন্ট সম্পর্কে আরও জানতে, Redis Golang ডকুমেন্টেশন দেখুন।

ডিস্ট্রিবিউটেড ট্রেসিং কি?

ডিস্ট্রিবিউটেড ট্রেসিং অনুরোধগুলিকে পর্যবেক্ষণ করার অনুমতি দেয় যখন তারা বিতরণ করা সিস্টেমের মাধ্যমে প্রচার করে, বিশেষ করে যেগুলি একটি মাইক্রোসার্ভিসেস আর্কিটেকচার ব্যবহার করে তৈরি করা হয়৷

ট্রেসিং অনুরোধগুলিকে অনুসরণ করার অনুমতি দেয় যখন তারা বিতরণ করা সিস্টেমের মাধ্যমে ভ্রমণ করে। আপনি কি আলাদা, কোনটি ভাঙা এবং কোন লগ এবং ত্রুটিগুলি প্রাসঙ্গিক তার একটি সম্পূর্ণ প্রসঙ্গ পাবেন৷

Go-redis, Upstash এবং OpenTelemetry এর সাথে ট্রেসিং বিতরণ করা হয়েছে

OpenTelemetry কি?

OpenTelemetry হল একটি বিক্রেতা-নিরপেক্ষ মান যা আপনাকে ট্রেস, লগ এবং মেট্রিক্স সংগ্রহ ও রপ্তানি করতে দেয়।

Otel ডেভেলপারদেরকে ভেন্ডর অজ্ঞেয়বাদী উপায়ে টেলিমেট্রি ডেটা সংগ্রহ ও রপ্তানি করতে দেয়। OpenTelemetry-এর সাহায্যে, আপনি একবার আপনার অ্যাপ্লিকেশানকে ইনস্ট্রুমেন্ট করতে পারেন এবং তারপরে ইন্সট্রুমেন্টেশন পরিবর্তন না করেই বিক্রেতাদের যোগ বা পরিবর্তন করতে পারেন, উদাহরণস্বরূপ, এখানে একটি তালিকা রয়েছে জনপ্রিয় DataDog বিকল্প যা OpenTelemetry সমর্থন করে৷

ওপেনটেলিমেট্রি বেশিরভাগ প্রোগ্রামিং ভাষার জন্য উপলব্ধ এবং বিভিন্ন ভাষা এবং পরিবেশ জুড়ে আন্তঃক্রিয়াশীলতা প্রদান করে।

ট্রেসিং এবং গো-রিডিস

go-redis রেডিসোটেল নামে একটি OpenTelemetry যন্ত্রের সাথে আসে যা একটি পৃথক মডিউল হিসাবে বিতরণ করা হয়:

go get github.com/go-redis/redis/extra/redisotel/v8

রেডিস ক্লায়েন্টকে ইনস্ট্রুমেন্ট করতে, আপনাকে রেডিসোটেল দ্বারা প্রদত্ত হুক যোগ করতে হবে:

import (
    "github.com/go-redis/redis/v8"
    "github.com/go-redis/redis/extra/redisotel/v8"
)

rdb := redis.NewClient(&redis.Options{...})

rdb.AddHook(redisotel.NewTracingHook())

ট্রেসিং কাজ করার জন্য, আপনাকে অবশ্যই সক্রিয় ট্রেস প্রসঙ্গটি go-redis কমান্ডগুলিতে পাস করতে হবে, উদাহরণস্বরূপ:

ctx := req.Context()
val, err := rdb.Get(ctx, "key").Result()

রেডিসোটেল সম্পর্কে আরও জানতে, গো রেডিস পারফরম্যান্স এবং ত্রুটিগুলি পর্যবেক্ষণ করুন৷

Uptrace

Uptrace হল একটি ওপেন সোর্স DataDog প্রতিযোগী যার একটি স্বজ্ঞাত ক্যোয়ারী নির্মাতা, সমৃদ্ধ ড্যাশবোর্ড, স্বয়ংক্রিয় সতর্কতা, এবং বেশিরভাগ ভাষা এবং ফ্রেমওয়ার্কের জন্য ইন্টিগ্রেশন।

আপনি একটি DEB/RPM প্যাকেজ বা একটি পূর্ব-সংকলিত বাইনারি ডাউনলোড করে Uptrace ইনস্টল করতে পারেন৷

প্রত্যাশিত হিসাবে, রেডিসোটেল প্রসেসড রেডিস কমান্ডের জন্য স্প্যান তৈরি করে এবং যেকোন ত্রুটি হওয়ার সাথে সাথে রেকর্ড করে। এখানে কিভাবে সংগৃহীত তথ্য Uptrace এ প্রদর্শিত হয়:

Go-redis, Upstash এবং OpenTelemetry এর সাথে ট্রেসিং বিতরণ করা হয়েছে

আপনি GitHub এ একটি চলমান উদাহরণ খুঁজে পেতে পারেন।

এরপর কি?

এর পরে, আপনি অ্যাপের অন্যান্য দিক নিরীক্ষণ করতে আরও ওপেনটেলিমেট্রি ইন্সট্রুমেন্টেশন ইনস্টল করতে পারেন, উদাহরণস্বরূপ, জিন বা গো জিআরপিসি৷

আপনি আপনার নিজস্ব উপকরণ তৈরি করতে OpenTelemetry Tracing API এবং Metrics API সম্পর্কেও শিখতে পারেন।


  1. সার্ভারলেস রেডিস এবং প্রতিক্রিয়া নেটিভ সহ অ্যাপ-মধ্যস্থ ঘোষণা

  2. Nuxt 3 এবং সার্ভারলেস রেডিস দিয়ে শুরু করা

  3. ফ্লটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ (REDIS) সহ ফুলস্ট্যাক সার্ভারলেস অ্যাপ - পার্ট 2

  4. ফ্লটার, সার্ভারলেস ফ্রেমওয়ার্ক এবং আপস্ট্যাশ (REDIS) সহ ফুলস্ট্যাক সার্ভারলেস অ্যাপ - পার্ট 1