Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

Go-Redis, Upstash, और OpenTelemetry के साथ डिस्ट्रिब्यूटेड ट्रेसिंग में मास्टर करें

इस ट्यूटोरियल में, आप सीखेंगे कि go-redis क्लाइंट का उपयोग करके Upstash Redis डेटाबेस से कैसे कनेक्ट करें और डिस्ट्रिब्यूटेड ट्रेसिंग का उपयोग करके अपने ऐप के परफॉरमेंस की निगरानी करें।

Go-Redis क्या है?

go-redis Golang के लिए एक लोकप्रिय Redis क्लाइंट है। बॉक्स से बाहर, यह Redis Server, Sentinel, और Cluster का समर्थन करता है।

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

आप go-redis का उपयोग डेटा कैश करने या अपने API के अनुरोधों को रेट-लिमिट करने के लिए कर सकते हैं। क्लाइंट के बारे में अधिक जानने के लिए, Redis Golang डॉक्यूमेंटेशन देखें।

डिस्ट्रिब्यूटेड ट्रेसिंग क्या है?

डिस्ट्रिब्यूटेड ट्रेसिंग आपको अनुरोधों का निरीक्षण करने की अनुमति देती है जैसे वे डिस्ट्रिब्यूटेड सिस्टम के माध्यम से प्रसारित होते हैं, विशेष रूप से माइक्रोसर्विसेज आर्किटेक्चर का उपयोग करके निर्मित।

ट्रेसिंग आपको अनुरोधों का पालन करने की अनुमति देती है जैसे वे डिस्ट्रिब्यूटेड सिस्टम के माध्यम से यात्रा करते हैं। आपको इस बात का पूरा संदर्भ मिलता है कि क्या अलग है, क्या टूटा है, और कौन से लॉग और त्रुटियां प्रासंगिक हैं।

Go-Redis, Upstash, और OpenTelemetry के साथ डिस्ट्रिब्यूटेड ट्रेसिंग में मास्टर करें

OpenTelemetry क्या है?

OpenTelemetry एक वेंडर-न्यूट्रल मानक है जो आपको ट्रेस, लॉग, और मेट्रिक्स एकत्र करने और निर्यात करने की अनुमति देता है।

Otel डेवलपर्स को वेंडर-अज्ञेय तरीके से टेलीमेट्री डेटा एकत्र करने और निर्यात करने की अनुमति देता है। OpenTelemetry के साथ, आप अपने एप्लिकेशन को एक बार इंस्ट्रूमेंट कर सकते हैं और फिर इंस्ट्रूमेंटेशन को बदले बिना वेंडर जोड़ या बदल सकते हैं, उदाहरण के लिए, यहां OpenTelemetry का समर्थन करने वाले लोकप्रिय DataDog विकल्पों की एक सूची है।

OpenTelemetry अधिकांश प्रोग्रामिंग भाषाओं के लिए उपलब्ध है और विभिन्न भाषाओं और वातावरणों में इंटरऑपरेबिलिटी प्रदान करता है।

ट्रेसिंग और go-redis

go-redis एक OpenTelemetry इंस्ट्रूमेंटेशन के साथ आता है जिसे redisotel कहा जाता है जिसे एक अलग मॉड्यूल के रूप में वितरित किया जाता है:

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

Redis क्लाइंट को इंस्ट्रूमेंट करने के लिए, आपको redisotel द्वारा प्रदान किए गए हुक को जोड़ना होगा:

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() 

redisotel के बारे में अधिक जानने के लिए, Monitoring Go Redis Performance and Errors देखें।

Uptrace

Uptrace एक सहज ज्ञान युक्त क्वेरी बिल्डर, रिच डैशबोर्ड, ऑटोमैटिक अलर्ट, और अधिकांश भाषाओं और फ्रेमवर्क के लिए इंटीग्रेशन के साथ एक ओपन सोर्स DataDog प्रतियोगी है।

आप DEB/RPM पैकेज या प्री-कंपाइल्ड बाइनरी डाउनलोड करके Uptrace इंस्टॉल कर सकते हैं।

उम्मीद के मुताबिक, redisotel प्रोसेस्ड Redis कमांड के लिए स्पैन बनाता है और होने वाली किसी भी त्रुटि को रिकॉर्ड करता है। यहां Uptrace पर एकत्रित जानकारी कैसे प्रदर्शित होती है:

Go-Redis, Upstash, और OpenTelemetry के साथ डिस्ट्रिब्यूटेड ट्रेसिंग में मास्टर करें

आप GitHub पर एक रन करने योग्य उदाहरण पा सकते हैं।

आगे क्या?

इसके बाद, आप ऐप के अन्य पहलुओं की निगरानी के लिए अधिक OpenTelemetry इंस्ट्रूमेंटेशन इंस्टॉल कर सकते हैं, उदाहरण के लिए, Gin या Go gRPC।

आप OpenTelemetry ट्रेसिंग API और मेट्रिक्स API के बारे में भी जान सकते हैं ताकि आप अपना खुद का इंस्ट्रूमेंटेशन बना सकें।

  1. नक्स्ट 3 ऐप्स को सर्वरलेस रेडिस के साथ लॉन्च करें: तेज़ परफॉरमेंस के लिए नक्स्ट 3 ऐप्स को सर्वरलेस रेडिस के साथ लॉन्च करें: तेज़ परफॉरमेंस के लिए

    परिचय अगर आपको कभी ऐसा ऐप बनाना पड़ा हो जो एप्लिकेशन उपयोग को ट्रैक करे, संसाधन उपयोग को प्रतिबंधित करे या ऐप परफॉरमेंस बढ़ाने के लिए कैश से डेटा लाए, तो आप जानते होंगे कि रेडिस इन आवश्यकताओं का जवाब है! रेडिस एक इन-मेमोरी, की-वैल्यू डेटाबेस है। यह ओपन सोर्स है और रिमोट डिक्शनरी सर्वर के लिए खड़ा है

  1. फ्लटर, सर्वरलेस फ्रेमवर्क और अपस्टैश रेडिस के साथ फुल-स्टैक सर्वरलेस मोबाइल ऐप बनाएं - भाग 2 फ्लटर, सर्वरलेस फ्रेमवर्क और अपस्टैश रेडिस के साथ फुल-स्टैक सर्वरलेस मोबाइल ऐप बनाएं - भाग 2

    इस ट्यूटोरियल सीरीज के भाग 2 में आपका स्वागत है। पहले भाग में, हमने देखा कि अपस्टैश, सर्वरलेस फ्रेमवर्क और रेडिस का उपयोग करके REST API कैसे बनाया जाता है। इस भाग में, हम अपने REST API एंडपॉइंट्स का उपभोग करने के लिए फ्लटर का उपयोग करके एक मोबाइल एप्लिकेशन बनाएंगे। चलिए शुरू करते हैं 🙃 सबसे पहले

  1. फ्लटर, सर्वरलेस फ्रेमवर्क और अपस्टैश रेडिस के साथ फुल-स्टैक सर्वरलेस ऐप बनाएं - भाग 1 फ्लटर, सर्वरलेस फ्रेमवर्क और अपस्टैश रेडिस के साथ फुल-स्टैक सर्वरलेस ऐप बनाएं - भाग 1

    इस पोस्ट में, हम फ्लटर, सर्वरलेस फ्रेमवर्क, अपस्टैश और डेटा स्टोर करने के लिए रेडिस के साथ एक सर्वरलेस मोबाइल एप्लिकेशन बनाएंगे। अपस्टैश क्या है? अपस्टैश रेडिस के लिए एक सर्वरलेस डेटाबेस है। अपस्टैश के साथ, आप प्रति-रिक्वेस्ट भुगतान करते हैं। इसका मतलब है कि जब डेटाबेस उपयोग में नहीं होता है तो आपस