2026-08-10 10:03:46 +08:00
|
|
|
|
package impl
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2026-09-14 22:17:59 +08:00
|
|
|
|
"bsm/full/pkgs/ecmall/internal/config"
|
2026-08-10 11:16:02 +08:00
|
|
|
|
|
2026-08-10 10:03:46 +08:00
|
|
|
|
"git.apinb.com/bsm-sdk/core/cache/redis"
|
2026-09-22 21:15:34 +08:00
|
|
|
|
"git.apinb.com/bsm-sdk/core/types"
|
|
|
|
|
|
"git.apinb.com/bsm-sdk/core/vars"
|
2026-08-10 10:03:46 +08:00
|
|
|
|
"git.apinb.com/bsm-sdk/core/with"
|
2026-08-10 11:16:02 +08:00
|
|
|
|
"github.com/patrickmn/go-cache"
|
2026-08-10 10:03:46 +08:00
|
|
|
|
clientv3 "go.etcd.io/etcd/client/v3"
|
|
|
|
|
|
"gorm.io/gorm"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
var (
|
2026-08-10 11:16:02 +08:00
|
|
|
|
// RedisService Redis缓存服务客户端,用于存储临时数据和缓存热点数据
|
2026-08-10 10:03:46 +08:00
|
|
|
|
RedisService *redis.RedisClient
|
2026-08-10 11:16:02 +08:00
|
|
|
|
|
|
|
|
|
|
// EtcdService Etcd客户端,用于服务发现和配置管理
|
|
|
|
|
|
EtcdService *clientv3.Client
|
|
|
|
|
|
|
|
|
|
|
|
// DBService 数据库服务连接, 用于数据持久化存储
|
|
|
|
|
|
DBService *gorm.DB
|
|
|
|
|
|
|
|
|
|
|
|
// MemoryService 内存缓存服务, 用于存储频繁访问的数据,提供最快的访问速度
|
|
|
|
|
|
MemoryService *cache.Cache
|
2026-08-10 10:03:46 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
2026-08-10 11:16:02 +08:00
|
|
|
|
// NewImpl 初始化实现层
|
|
|
|
|
|
// 建立与各种外部服务的连接,包括内存缓存、Redis、数据库和Etcd
|
|
|
|
|
|
// 这些连接将在整个服务生命周期中使用
|
2026-08-10 10:03:46 +08:00
|
|
|
|
func NewImpl() {
|
2026-08-10 11:16:02 +08:00
|
|
|
|
// 初始化内存缓存服务,用于存储热点数据
|
|
|
|
|
|
MemoryService = with.Memory(nil)
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化Redis缓存服务,用于分布式缓存
|
2026-08-10 10:03:46 +08:00
|
|
|
|
RedisService = with.RedisCache(config.Spec.Cache)
|
2026-08-10 11:16:02 +08:00
|
|
|
|
|
2026-09-22 21:15:34 +08:00
|
|
|
|
// 初始化数据库连接,用于数据持久化。
|
|
|
|
|
|
// 聚合进程不会调用各模块的 impl.NewImpl(),因此在这里打开 SDK 的自动迁移:
|
|
|
|
|
|
// 各模块模型在 init() 中已通过 database.AppendMigrate 注册表名,
|
|
|
|
|
|
// 这样聚合启动时也能为它们建表(连接参数沿用 SDK 默认值)。
|
|
|
|
|
|
DBService = with.Databases(config.Spec.Databases, &types.SqlOptions{
|
|
|
|
|
|
MaxIdleConns: vars.SqlOptionMaxIdleConns,
|
|
|
|
|
|
MaxOpenConns: vars.SqlOptionMaxOpenConns,
|
|
|
|
|
|
ConnMaxLifetime: vars.SqlOptionConnMaxLifetime,
|
|
|
|
|
|
IsAutoMigrate: true,
|
|
|
|
|
|
Debug: vars.SqlOptionDebug,
|
|
|
|
|
|
})
|
2026-08-10 11:16:02 +08:00
|
|
|
|
|
|
|
|
|
|
// 初始化Etcd客户端,用于服务发现和配置管理
|
2026-08-10 10:03:46 +08:00
|
|
|
|
EtcdService = with.Etcd(config.Spec.Etcd)
|
|
|
|
|
|
}
|