多活高可用服务 MAS-使用指南
时间:2025-02-12 14:58:59
使用指南
- 在go.mod文件中引入依赖,即引入MAS-GO-SDK。
github.com/huaweicloud/devcloud-go
- 结合配置项说明,添加配置文件或者配置信息。
- 配置文件示例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", }}
- 配置文件示例config_Redis.yaml
- 初始化创建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.")}
- 配置文件方式创建
- 在需要执行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)}
父主题: Redis
support.huaweicloud.com/devg-mas/mas-devg-0064.html