Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Artikel yang menerangkan secara terperinci cara memasang dan menggunakan pusat konfigurasi nacos

Artikel yang menerangkan secara terperinci cara memasang dan menggunakan pusat konfigurasi nacos

藏色散人
藏色散人ke hadapan
2022-11-14 16:44:543062semak imbas

Artikel ini diperkenalkan kepada anda melalui lajur tutorial golang tentang pusat konfigurasi "nacos". Di bawah, kita akan mempelajari tentang pusat konfigurasi dari perspektif golang, pemasangan naco dan cara melakukannya gunakan nacos untuk konfigurasi dan baca konfigurasi dalam nacos Documents, dll. Saya harap ia akan membantu rakan-rakan yang memerlukannya.

Artikel yang menerangkan secara terperinci cara memasang dan menggunakan pusat konfigurasi nacos

Apakah pusat konfigurasi

Sistem yang digunakan untuk mengurus semua konfigurasi dalam projek secara seragam. Walaupun ia kelihatan mudah, jangan memandang rendah modul ini. Jika projek Internet bersaiz sederhana tidak menggunakan model pusat konfigurasi, sejumlah besar pelbagai item konfigurasi, dan pelbagai keperluan pengubahsuaian yang tidak teratur pasti akan menyebabkan pemaju banyak sakit kepala dan menjadikan pengurusan sangat mengelirukan.

Proses perkhidmatan pusat konfigurasi adalah seperti berikut: Pengguna mengemas kini maklumat konfigurasi dalam pusat konfigurasi. Perkhidmatan A dan Perkhidmatan B menerima pemberitahuan kemas kini konfigurasi tepat pada masanya dan dapatkan konfigurasi daripada pusat konfigurasi. Secara umum, pusat konfigurasi ialah komponen perkhidmatan asas yang menguruskan pelbagai konfigurasi aplikasi secara seragam.

Dalam seni bina sistem, pusat konfigurasi ialah komponen keseluruhan sistem infrastruktur perkhidmatan mikro Fungsinya kelihatan tidak ketara, ia tidak lebih daripada pengurusan konfigurasi dan akses, tetapi ia adalah keseluruhan seni bina perkhidmatan mikro .

Apakah itu nacos

Nacos

Nacos ialah singkatan Perkhidmatan Penamaan dan Konfigurasi Daripada namanya, anda boleh melihat dua kawasan yang difokuskan on. Ia adalah Penamaan, iaitu pusat pendaftaran dan pusat konfigurasi Konfigurasi.

Konfigurasi perniagaan, suis fungsi, menurunkan taraf kebergantungan yang lemah dalam pengurusan perkhidmatan, dan juga kata laluan pangkalan data, dll., semuanya boleh menggunakan pusat konfigurasi dinamik. Apabila tiada komponen pusat konfigurasi khusus, kami menggunakan pengekodan keras, fail konfigurasi, pangkalan data, cache, dll. untuk menyelesaikan masalah. Apabila mengubah suai konfigurasi melalui pengekodan keras, anda perlu menyusun semula dan membungkus fail konfigurasi, dan aplikasi perlu dimulakan semula Prestasi pangkalan data adalah terhad, dan cache kehilangan ketepatan masa.

Model konfigurasi Nacos

data kumpulan ruang namaId secara unik menentukan konfigurasi

  • ruang nama: terikat kepada klien, satu clinet sepadan dengan satu ruang nama, tersedia Untuk asingkan persekitaran atau bezakan penyewa

  • kumpulan: kumpulan, bezakan perniagaan

  • dataId: id terkonfigurasi

Mari kita lihat bagaimana ia digunakan dalam senario sebenar

Contohnya: tapak web e-dagang mempunyai modul ini: modul pengguna, modul produk, modul pesanan, modul inventori

Beberapa modul ini memerlukan untuk dikonfigurasikan dan konfigurasinya berbeza Beginilah cara kami membuat ruang nama untuk setiap modul Setiap modul perlu mempunyai konfigurasi

semasa peringkat pembangunan dan konfigurasi selepas kami menggunakan Terdapat dua kumpulan dev , dan pro untuk membezakan Untuk dataId, sama ada dev atau

pro, ia mesti diisi.

Pemasangan Nacos

Di sini kami terus menggunakan docker untuk memasang

Pemasangan Nacos (docker)

docker run --name nacos-standalone -e MODE=standalone -e JVM_XMS=512m -e JVM_XMX=512m -e JVM_XMN=256m -p 8848:8848 -d nacos/nacos-server:latest

Akses: 192.168.1.103:8848/nacos/index.html Nama Pengguna/Kata Laluan: nacos/nacos

Konfigurasikan permulaan:

docker container update --restart=always xxx

Gunakan konfigurasi Do nacos

Selepas nacos berjaya dimulakan, lawati: 192.168.1.103:8848/nacos/index.html

Anda boleh mencipta ruang nama pengguna baharu lihatnya selepas penciptaan berjaya ke id yang sepadan, contohnya: 7ae18f62-e2b9-48bd-bff2-a49e7443f5bc

Kemudian kami mencipta fail konfigurasi baharu di bawah ruang nama pengguna dan isikan nama yang sepadan (dataId ) dan kumpulan. Di sini kami mencipta fail konfigurasi josn yang baharu:

{
    "name": "user-web",
    "host": "10.2.106.169",
    "port": 9091,
    "tags":["iceymoss", "goods", "golang", "web"],
    "user_srv":{
        "name": "user-srv",
        "host": "10.2.106.169",
        "port": 8081
    },
    "jwt":{
        "key": "dfijdfjidhfjijdfbdfdFwohPd6XmVCdnQi"
    },
    "sms":{
        "key": "mykey",
        "secret": "mysecret"
    },
    "params":{
        "sign_name": "生鲜小店",
        "code": "SMS_244610581"
    },
    "redis":{
        "host": "127.0.0.1",
        "port": 6379,
        "expir": 300
    },
    "verify":{
        "width": 5
    },
    "consul":{
        "host": "10.2.106.169",
        "port": 8500
    },
    "tracing":{
        "host": "127.0.0.1",
        "port": 6831,
        "name": "shopping"
    }
}

Dengan cara ini, keseluruhan fail konfigurasi dikonfigurasikan

Baca fail konfigurasi dalam nacos

Pull Get dependencies

Kami menggunakan go untuk membaca fail konfigurasi dan gunakan sdk yang perlu menarik nacos:

go get github.com/nacos-group/nacos-sdk-go/clients
go get github.com/nacos-group/nacos-sdk-go/common/constant
go get github.com/nacos-group/nacos-sdk-go/vo

Baca konfigurasi

Sebelum membaca konfigurasi, kami terlebih dahulu menulis struktur untuk pemetaan konfigurasi

Struktur direktori:

nacos_test
├── config
│   └── config.go
└── main.go

Apabila menulis konfigurasi, kita perlu memberi perhatian kepada fakta bahawa kita perlu mengekalkan nama tag dan konfigurasi Nama dalam fail adalah konsisten

package config

//UserSerConfig 映射用户配置
type UserSerConfig struct {
    Name string `mapstructure:"name" json:"name"`
    Host string `mapstructure:"host" json:"host"`
    Port int    `mapstructure:"port" json:"port"`
}

//JWTConfig 映射token配置
type JWTConfig struct {
    SigningKey string `mapstructure:"key" json:"key"`
}

//AliSmsConfig 阿里秘钥
type AliSmsConfig struct {
    Apikey    string `mapstructure:"key" json:"key"`
    ApiSecret string `mapstructure:"secret" json:"secret"`
}

//ParamsConfig 短信模板配置
type ParamsConfig struct {
    SignName     string `mapstructure:"sign_name" json:"sign_name"`
    TemplateCode string `mapstructure:"code" json:"code"`
}

//RedisConfig redis数据库配置
type RedisConfig struct {
    Host  string `mapstructure:"host" json:"host"`
    Port  int    `mapstructure:"port" json:"port"`
    Expir int    `mapstructure:"expir" json:"expir"`
}

//Verifier 手机验证长度
type Verifier struct {
    Width int `mapstructure:"width" json:"width"`
}

type ConsulConfig struct {
    Host string `mapstructure:"host" json:"host"`
    Port int    `mapstructure:"port" json:"port"`
}

//ServerConfig  映射服务配置
type ServerConfig struct {
    Name        string        `mapstructure:"name" json:"name"`
    Port        int           `mapstructure:"port" json:"port"`
    UserSerInfo UserSerConfig `mapstructure:"user_srv" json:"user_srv"`
    JWTInfo     JWTConfig     `mapstructure:"jwt" json:"jwt"`
    AliSms      AliSmsConfig  `mapstructure:"sms" json:"sms"`
    Params      ParamsConfig  `mapstructure:"params" json:"params"`
    Redis       RedisConfig   `mapstructure:"redis" json:"redis"`
    Verify      Verifier      `mapstructure:"verify" json:"verify"`
    ConsulInfo  ConsulConfig  `mapstructure:"consul" json:"consul"`
}

Baca fail konfigurasi di bawah:

package main

import (
    "StudyGin/nacos/config"
    "encoding/json"
    "fmt"

    "github.com/nacos-group/nacos-sdk-go/clients"
    "github.com/nacos-group/nacos-sdk-go/common/constant"
    "github.com/nacos-group/nacos-sdk-go/vo"
)

func main() {
    //服务端配置, nacos运行的socket
    sc := []constant.ServerConfig{
        {
            IpAddr: "10.2.81.102",
            Port:   8848,
        },
    }

    //客服端配置
    cc := constant.ClientConfig{
        NamespaceId:         "7ae18f62-e2b9-48bd-bff2-a49e7443f5bc", // 如果需要支持多namespace,我们可以场景多个client,它们有不同的NamespaceId
        TimeoutMs:           5000,
        NotLoadCacheAtStart: true,
        LogDir:              "tmp/nacos/log",
        CacheDir:            "tmp/nacos/cache",
        //RotateTime:          "1h",
        //MaxAge:              3,
        LogLevel: "debug",
    }

    configClient, err := clients.CreateConfigClient(map[string]interface{}{
        "serverConfigs": sc,
        "clientConfig":  cc,
    })
    if err != nil {
        panic(err)
    }

    //获取配置
    content, err := configClient.GetConfig(vo.ConfigParam{
        DataId: "user-web.json",
        Group:  "dev"})

    if err != nil {
        panic(err)
    }
    Config := &config.ServerConfig{}

  //将配置信息读取到config.ServerConfig{}对象中
    err = json.Unmarshal([]byte(content), &Config)
    if err != nil {
        panic(err)
    }
    fmt.Println(Config)

}

Output :

&{user-web 9091 {user-srv 10.2.106.169 8081} {dfijdfjidhfjijdfbdfdFwohPd6XmVCdnQi} {mykey mysecret} {生鲜小店 SMS_244610581} {127.0.0.1 6379 300} {5} {10.2.106.1600}}

Sudah tentu, kedua-dua pusat konfigurasi dan viper menyediakan pemantauan masa nyata Konfigurasi

boleh ditulis seperti ini:

    //监听配置变化
    err = configClient.ListenConfig(vo.ConfigParam{
        DataId: "user-web",
        Group:  "DEV",
        OnChange: func(namespace, group, dataId, data string) {
            fmt.Println("配置文件变化")
            fmt.Println("group:" + group + ", dataId:" + dataId + ", data:" + data)
        },
    })
    time.Sleep(3000 * time.Second)

Atas ialah kandungan terperinci Artikel yang menerangkan secara terperinci cara memasang dan menggunakan pusat konfigurasi nacos. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam