多活高可用服务 MAS-使用指南

时间:2025-02-12 14:58:59

使用指南

  1. 在go.mod文件中引入依赖,即引入MAS-GO-SDK。

    github.com/huaweicloud/devcloud-go

  2. 结合配置项说明,添加配置文件或者配置信息。

    • 配置文件示例config_Redis.yaml
      props:  version: v1  appId: xxx  monitorId: xxxx  cloud: xxxx  region: xxxxx  azs: az1etcd:  address: xxx.xxx.xxx.xxx:xxxx  apiVersion: v3  username: xxxx  password: xxxx  httpsEnable: falseRedis:  nearest: dc1  asyncRemoteWrite:    retryTimes: 4  connectionPool:    enable: true  asyncRemotePool:    persist: true    threadCoreSize: 10    taskQueueSize: 5    persistDir: dataDir/servers:  dc1:    hosts: xxx.xxx.xxx.xxx:xxxx    password: xxxxxx    type: normal# cluster, master-slave, normal    cloud: xxxx    region: xxxxx    azs: az1    pool:      maxTotal: 100      maxIdle: 8      minIdle: 0      maxWaitMillis: 10000      timeBetweenEvictionRunsMillis: 1000  dc2:    hosts: xxx.xxx.xxx.xxx:xxxx, xxx.xxx.xxx.xxx:xxxx    password: xxxxxx    type: cluster# cluster, master-slave, normal    cloud: xxxx    region: xxxxx    azs: az1    pool:      maxTotal: 100      maxIdle: 8      minIdle: 0      maxWaitMillis: 10000      timeBetweenEvictionRunsMillis: 1000routeAlgorithm: single-read-write# local-read-single-write, single-read-write, double-writeactive: dc1
    • 配置信息
      func RedisConfiguration() *config.Configuration {    return &config.Configuration{        Props: &mas.PropertiesConfiguration{            Version: "v1",            AppID: "xxx",            MonitorID: "xxxx",            Cloud: "xxx",            Region: "xxxxx",            Azs: "az1",        },        EtcdConfig: &etcd.EtcdConfiguration{            Address: "xxx.xxx.xxx.xxx:xxxx",            APIVersion: "v3",            Username: "xxxx",            Password: "xxxx",            HTTPSEnable: false,        },        RedisConfig: &config.RedisConfiguration{            Nearest: "dc1",            AsyncRemoteWrite: &config.AsyncRemoteWrite{                RetryTimes: 4,            },            ConnectionPoolConfig: &config.RedisConnectionPoolConfiguration{                Enable: true,            },            AsyncRemotePoolConfiguration: &config.AsyncRemotePoolConfiguration{                Persist: true,                ThreadCoreSize: 10,                TaskQueueSize: 5,                PersistDir: "dataDir/",            },            Servers: map[string]*config.ServerConfiguration{                "dc1": {                    Hosts:    "xxx.xxx.xxx.xxx:xxxx",                    Password: "xxxxxx",                    Type:     "normal",                    Cloud: "xxxx",                    Region: "xxxx",                    Azs: "az1",                    ConnectionPool: &config.ServerConnectionPoolConfiguration{                        MaxTotal: 100,                        MaxIdle: 8,                        MinIdle: 0,                        MaxWaitMillis: 10000,                        TimeBetweenEvictionRunsMillis: 1000,                    },                },                "dc2": {                    Hosts:    "xxx.xxx.xxx.xxx:xxxx,xxx.xxx.xxx.xxx:xxxx",                    Password: "xxxxxx",                    Type:     "cluster",                    Cloud: "xxxx",                    Region: "xxxx",                    Azs: "az1",                    ConnectionPool: &config.ServerConnectionPoolConfiguration{                        MaxTotal: 100,                        MaxIdle: 8,                        MinIdle: 0,                        MaxWaitMillis: 10000,                        TimeBetweenEvictionRunsMillis: 1000,                    },                },            },        },        RouteAlgorithm: "single-read-write",        Active:         "dc1",    }}

  3. 初始化创建DevsporeClient客户端。

    • 配置文件方式创建
      import (    "context"    "log"    "github.com/huaweicloud/devcloud-go/redis")var (    DevSporeClient *redis.DevsporeClient // Redis 客户端)func init() {    DevSporeClient = redis.NewDevsporeClientWithYaml("./resources/config_Redis.yaml")    if_, err := DevSporeClient.Ping(context.Background()).Result(); err != nil {        log.Fatal(err)    }    log.Println("INFO: init redis successed.")}
    • 配置信息方式创建
      import (    "context"    "log"    "github.com/huaweicloud/devcloud-go/redis")var (    DevSporeClient *redis.DevsporeClient // redis 客户端)func init() {    DevSporeClient = redis.NewDevsporeClient(RedisConfiguration())    if_, err := DevSporeClient.Ping(context.Background()).Result(); err != nil {        log.Fatal(err)    }    log.Println("INFO: init redis successed.")}

  4. 在需要执行Redis操作的地方使用DevsporeClient执行Redis操作。

    import (    "context"    "demo/conf"    "time"    "github.com/go-redis/redis/v8")func set(ctx context.Context, key, val string, time time.Duration) *redis.StatusCmd {    return conf.DevSporeClient.Set(ctx, key, val, time)}func get(ctx context.Context, key string) *redis.StringCmd {    return conf.DevSporeClient.Get(ctx, key)}

support.huaweicloud.com/devg-mas/mas-devg-0064.html