Megosztás a következőn keresztül:


Oktatóanyag: Dinamikus konfiguráció használata Gin-webalkalmazásokban

Ez az oktatóanyag bemutatja, hogyan implementálhat dinamikus konfigurációs frissítéseket egy Gin-webalkalmazásban az Azure App Configuration használatával. Az előző rövid útmutatóban bemutatott webalkalmazásra épül.

Előfeltételek

A rövid útmutató befejezése: Gin-webalkalmazás létrehozása az Azure App Configuration használatával

Adatok újrabetöltése az alkalmazáskonfigurációból

  1. Nyissa meg a fájlt appconfig.go. A loadAzureAppConfiguration függvényen belül módosítsa a options-t a frissítés engedélyezéséhez. A Go-szolgáltató újra betölti a teljes konfigurációt, amikor a kiválasztott kulcsértékek bármelyikében változást észlel. A konfigurációváltozások figyelésével kapcsolatos további információkért tekintse meg a konfigurációfrissítés ajánlott eljárásait.

    options := &azureappconfiguration.Options{
        Selectors: []azureappconfiguration.Selector{
            {
                KeyFilter: "Config.*",
            },
        },
        TrimKeyPrefixes: []string{"Config."},
        RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{
            Enabled:  true,
        },
    }
    

    Jótanács

    A Interval tulajdonságot beállíthatja RefreshOptions-en, hogy meghatározza a konfigurációfrissítések közötti minimális időt. Ebben a példában az alapértelmezett 30 másodperces értéket használja. Ha csökkenteni szeretné az Alkalmazáskonfigurációs áruházba érkező kérések számát, módosítsa magasabb értékre.

  2. Frissítse a fájlt, main.go hogy regisztráljon egy visszahívási függvényt a konfigurációfrissítésekhez:

    // Existing code
    // ... ...
    var config Config
    if err := provider.Unmarshal(&config, nil); err != nil {
        log.Fatalf("Failed to unmarshal configuration: %v", err)
    }
    
    // Register refresh callback
    provider.OnRefreshSuccess(func() {
        // Re-unmarshal the configuration
        err := provider.Unmarshal(&config, nil)
        if err != nil {
            log.Printf("Failed to unmarshal updated configuration: %s", err)
            return
        }
    })
    
  3. Konfigurálási frissítési köztes szoftver hozzáadása. Frissítsen main.go az alábbi kóddal.

    func configRefreshMiddleware(provider *azureappconfiguration.AzureAppConfiguration) gin.HandlerFunc {
        return func(c *gin.Context) {
            // Start refresh in a goroutine to avoid blocking the request
            go func() {
                ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
                defer cancel()
    
                if err := provider.Refresh(ctx); err != nil {
                    log.Printf("Error refreshing configuration: %s", err)
                }
            }()
    
            c.Next()
        }
    }
    
  4. Használja a konfigurálási frissítés köztes szoftverét:

    // Existing code
    // ... ...
    router := gin.Default()
    
    // Use the configuration refresh middleware
    router.Use(configRefreshMiddleware(provider))
    
    // The rest of existing code
    //... ...
    

Kérelemalapú konfigurációfrissítés

A konfiguráció frissítését a webalkalmazáshoz érkező bejövő kérések aktiválják. Nem történik frissítés, ha az alkalmazás tétlen. Amikor az alkalmazás aktív, a konfigurációfrissítő köztes szoftver figyeli a azureappconfiguration.Options-ben megadott kiválasztott kulcs-érték párokat. A köztes szoftver az alkalmazáshoz érkező minden bejövő kéréskor aktiválódik. A köztes szoftver azonban csak akkor küld kéréseket az alkalmazáskonfiguráció értékének ellenőrzésére, ha a megadott frissítési időköz lejárt.

  • Ha az alkalmazáskonfiguráció kérése sikertelen a változásészleléshez, az alkalmazás továbbra is a gyorsítótárazott konfigurációt fogja használni. A módosítások ellenőrzésére tett új kísérletek rendszeres időközönként történnek, miközben új bejövő kérések érkeznek az alkalmazáshoz.
  • A konfigurációfrissítés aszinkron módon történik az alkalmazás bejövő kéréseinek feldolgozása során. Nem blokkolja vagy lassítja a frissítést kiváltó bejövő kérést. Előfordulhat, hogy a frissítést kiváltó kérés nem kapja meg a frissített konfigurációs értékeket, de a későbbi kérések új konfigurációs értékeket kapnak.
  • A köztes szoftver aktiválásának biztosításához használja a konfigurációfrissítő köztes szoftvert olyan korán, amennyire csak lehet a kérelem-feldolgozási sorban, hogy egy másik köztes szoftver ne hagyhassa figyelmen kívül az alkalmazásban.

A webalkalmazás futtatása

Most, hogy beállította a dinamikus konfigurációfrissítést, teszteljük, hogy működés közben láthassa.

  1. Indítsa el az alkalmazást.

    go run main.go
    
  2. Nyisson meg egy webböngészőt, és navigáljon http://localhost:8080 az alkalmazás eléréséhez. A weblap a következőképpen néz ki:

    Képernyőkép a gin webalkalmazás frissítéséről.

  3. Lépjen az Alkalmazáskonfigurációs áruházba, és frissítse a Config.Message kulcs értékét.

    Kulcs Érték Tartalomtípus
    Config.Message Hello az Azure App Configurationból – most élő frissítésekkel! Hagyja üresen
  4. A böngésző néhány alkalommal történő frissítése után a frissített tartalom a ConfigMap 30 másodpercen belüli frissítése után jelenik meg.

    Képernyőkép a gin webalkalmazás frissítéséről.

Erőforrások tisztítása

Ha nem szeretné folytatni a cikkben létrehozott erőforrások használatát, törölje az itt létrehozott erőforráscsoportot a díjak elkerülése érdekében.

Fontos

Egy erőforráscsoport törlése visszafordíthatatlan. Az erőforráscsoport és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a rossz erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait olyan erőforráscsoporton belül hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.

  1. Jelentkezzen be az Azure Portalra, és válassza ki az Erőforráscsoportokat.
  2. A Szűrés név szerint mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése lehetőséget.
  5. A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.

Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.