Sdílet prostřednictvím


Kurz: Použití dynamické konfigurace ve webové aplikaci Gin

V tomto kurzu se dozvíte, jak implementovat dynamické aktualizace konfigurace ve webové aplikaci Gin pomocí služby Azure App Configuration. Vychází z webové aplikace představené v předchozím rychlém startu.

Požadavky

Dokončení rychlého startu: Vytvoření webové aplikace Gin pomocí azure App Configuration

Opětovné načtení dat z konfigurace aplikace

  1. Otevřete soubor appconfig.go. Uvnitř funkce změňte loadAzureAppConfiguration pro umožnění aktualizace. Zprostředkovatel Go znovu načte celou konfiguraci, kdykoli zjistí změnu v některé z vybraných hodnot klíčů. Pro více informací o sledování změn konfigurace viz Nejlepší praxe pro aktualizaci konfigurace.

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

    Návod

    Můžete nastavit Interval vlastnost RefreshOptions , která určuje minimální čas mezi aktualizacemi konfigurace. V tomto příkladu použijete výchozí hodnotu 30 sekund. Pokud potřebujete snížit počet požadavků provedených ve službě App Configuration Store, upravte hodnotu na vyšší hodnotu.

  2. Aktualizujte svůj main.go soubor tak, abyste zaregistrovali funkci zpětného volání pro aktualizace konfigurace.

    // 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
        }
    })
    
    // The rest of existing code
    //... ...
    
  3. Přidejte aktualizační middleware pro konfiguraci. Aktualizujte main.go následujícím kódem.

    // Existing code
    // ... ...
    type App struct {
        Name      string
        Port      int
    }
    
    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()
        }
    }
    
    // The rest of existing code
    //... ...
    
  4. Použijte middleware aktualizace konfigurace:

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

Aktualizace konfigurace řízená požadavky

Aktualizace konfigurace se aktivuje příchozími požadavky vaší webové aplikace. Pokud je vaše aplikace nečinná, nedojde k žádné aktualizaci. Když je aplikace aktivní, middleware aktualizace konfigurace monitoruje vybrané klíčové hodnoty, které jste nakonfigurovali v azureappconfiguration.Options. Middleware se aktivuje při každém příchozím požadavku do vaší aplikace. Middleware však pošle požadavky na kontrolu hodnoty v App Configuration pouze tehdy, když uplynul vámi nastavený interval aktualizace.

  • Pokud požadavek na konfiguraci aplikace pro detekci změn selže, vaše aplikace bude dál používat konfiguraci uloženou v mezipaměti. Nové pokusy o kontrolu změn se budou pravidelně provádět, pokud budou vaší aplikaci přicházet nové požadavky.
  • Aktualizace konfigurace probíhá asynchronně ke zpracování příchozích požadavků vaší aplikace. Příchozí požadavek, který aktivoval aktualizaci, nezablokuje ani nezpomalí. Požadavek, který aktivoval aktualizaci, nemusí získat aktualizované hodnoty konfigurace, ale později požadavky získají nové hodnoty konfigurace.
  • Pokud chcete zajistit, aby se middleware aktivoval, použijte middleware aktualizace konfigurace co nejdříve ve zpracování požadavků, aby ho jiný middleware ve vaší aplikaci nemohl přeskočit.

Spuštění webové aplikace

Teď, když jste nastavili dynamickou aktualizaci konfigurace, otestujeme ji, abychom ji viděli v akci.

  1. Aplikaci spusťte.

     go mod tidy
     go run .
    
  2. Otevřete webový prohlížeč a navigujte na stránku http://localhost:8080 pro přístup k aplikaci. Webová stránka vypadá takto:

    Snímek obrazovky webové aplikace Gin před aktualizací

  3. Přejděte do obchodu App Configuration a aktualizujte hodnotu Config.Message klíče.

    Klíč Hodnota Typ obsahu
    Config.Message Dobrý den z Azure App Configuration – teď s živými aktualizacemi! Nechejte prázdné.
  4. Po několikanásobné aktualizaci prohlížeče se po aktualizaci objektu ConfigMap během 30 sekund zobrazí aktualizovaný obsah.

    Snímek obrazovky po aktualizaci webové aplikace Gin.

Vyčistěte zdroje

Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Dávejte pozor, abyste omylem neodstranili nesprávnou skupinu prostředků nebo jednotlivé prostředky. Pokud jste vytvořili prostředky pro tento článek ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.

  1. Přihlaste se k webu Azure Portal a vyberte skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
  4. Vyberte odstranit skupinu zdrojů.
  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte název skupiny prostředků a vyberte Odstranit.

Po několika okamžicích se skupina prostředků a všechny její prostředky vymažou.