123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package mdb
- import (
- "context"
- "crypto/tls"
- "github.com/go-redis/redis/v8"
- mhayaMongo "github.com/mhaya/components/mongo"
- clog "github.com/mhaya/logger"
- cactor "github.com/mhaya/net/actor"
- cprofile "github.com/mhaya/profile"
- "go.mongodb.org/mongo-driver/mongo"
- "strings"
- "time"
- )
- type ActorDB struct {
- cactor.Base
- Name string
- }
- var (
- MDB *mongo.Database
- RDB redis.UniversalClient
- )
- func (p *ActorDB) AliasID() string {
- return "db" + p.Name
- }
- // OnInit Actor初始化前触发该函数
- func (p *ActorDB) OnInit() {
- mongo := p.App().Find(mhayaMongo.Name).(*mhayaMongo.Component)
- if mongo == nil {
- clog.DPanicf("[component = %s] not found.", mhayaMongo.Name)
- }
- // 获取 db_id = "center_db_1" 的配置
- dbID := p.App().Settings().GetConfig("db_id_list").GetString("game_db_id")
- MDB = mongo.GetDb(dbID)
- if MDB == nil {
- clog.Panicf("game_db_id not found")
- }
- redisConfig := cprofile.GetConfig("redis")
- addr := strings.Split(redisConfig.GetString("address"), ",")
- isTls := redisConfig.GetInt("tls", 0)
- if isTls == 1 {
- tlsConfig := &tls.Config{
- MinVersion: tls.VersionTLS12,
- PreferServerCipherSuites: true,
- }
- /* RDB = redis.NewUniversalClient(&redis.UniversalOptions{
- Addrs: []string{redisConfig.GetString("address")},
- Password: redisConfig.GetString("password"),
- DB: redisConfig.GetInt("db"),
- TLSConfig: tlsConfig,
- })*/
- clusterOptions := &redis.ClusterOptions{
- Addrs: addr,
- Password: "", // 如果启用了身份验证,请提供密码
- PoolSize: 1000, // 每个节点的最大连接数
- DialTimeout: 10 * time.Second,
- ReadTimeout: 30 * time.Second,
- WriteTimeout: 30 * time.Second,
- TLSConfig: tlsConfig,
- }
- // 创建集群客户端
- rdb := redis.NewClusterClient(clusterOptions)
- // 测试连接
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- pong, err := rdb.Ping(ctx).Result()
- if err != nil {
- clog.Panicf("无法连接到Redis集群: %v ,param:%v", err, addr)
- }
- clog.Warnf("连接到Redis集群: %v,param:%v", pong, addr)
- RDB = rdb
- } else {
- RDB = redis.NewUniversalClient(&redis.UniversalOptions{
- Addrs: addr,
- Password: redisConfig.GetString("password"),
- DB: redisConfig.GetInt("db"),
- })
- // 测试连接
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- pong, err := RDB.Ping(ctx).Result()
- if err != nil {
- clog.Panicf("无法连接到Redis: %v ,param:%v", err, addr)
- }
- clog.Warnf("连接到Redis: %v,param:%v", pong, addr)
- }
- if p.App().NodeId() == "m-center" {
- SetIndex()
- }
- }
|