# nacos **Repository Path**: bks-czy/nacos ## Basic Information - **Project Name**: nacos - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-13 - **Last Updated**: 2026-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # nacos Nacos 配置中心的轻量 Go 封装,用于在不改动业务配置结构体的前提下按需接入 Nacos 配置中心。 ## 特性 - **默认关闭**:`Enabled=false` 时保持本地开发体验,直接读本地配置文件 - **按需启用**:生产环境将 `Enabled` 置为 `true` 即可从 Nacos 拉取完整 YAML 配置 - **零侵入**:不强制修改业务配置结构体,配置字段用 `mapstructure`/`yaml` tag 映射 - **官方 SDK**:基于 `nacos-group/nacos-sdk-go/v2`,仅做薄封装 ## 安装 ```bash go get gitee.com/bks-czy/nacos ``` ## 快速开始 ```go package main import ( "fmt" "log" nacos "gitee.com/bks-czy/nacos" ) func main() { cfg := nacos.DefaultConfig() // 默认关闭 cfg.Enabled = true // 生产环境开启 cfg.ServerAddr = "127.0.0.1" cfg.ServerPort = 8848 cfg.DataID = "xiaolanshu.yaml" cfg.Group = "DEFAULT_GROUP" content, err := nacos.LoadConfig(cfg) if err != nil { log.Fatal(err) } fmt.Println(content) } ``` ## 配置字段说明 | 字段 | 说明 | 默认值 | | --- | --- | --- | | `enabled` | 是否启用 Nacos | `false` | | `server_addr` | Nacos 服务地址(不带协议) | `127.0.0.1` | | `server_port` | Nacos 服务端口 | `8848` | | `namespace_id` | 命名空间 ID,空表示 public | `""` | | `group` | 配置分组 | `DEFAULT_GROUP` | | `data_id` | 配置 Data ID | `xiaolanshu.yaml` | | `username` / `password` | 开启鉴权时填写 | `""` | | `timeout_ms` | 拉取配置超时时间(毫秒) | `5000` | | `log_dir` | SDK 日志目录 | `logs/nacos` | | `cache_dir` | SDK 缓存目录 | `data/nacos/cache` | | `log_level` | SDK 日志级别 | `info` | | `fail_fast` | 拉取失败时是否启动失败,生产建议 `true` | `false` | | `watch` | 预留开关,当前启动期拉取配置,不自动热重建 | `false` | ## API ### `DefaultConfig() Config` 返回保持 Nacos 关闭的本地开发默认配置。 ### `WithDefaults(cfg Config) Config` 填充可选空字段,但不会强制开启 Nacos。 ### `LoadConfig(cfg Config) (string, error)` 从 Nacos 拉取一份 YAML 配置文档。未启用时直接返回空字符串。 ### `NewConfigClient(cfg Config) (config_client.IConfigClient, error)` 根据配置创建官方 Nacos 配置客户端。 ## License MIT ```go // 1. Redis rdb := redisx.NewClient(cfg.Redis) // 2. Elasticsearch esClient, _ := esx.NewClient(cfg.Elasticsearch) // 3. alipay var alipayClient *alipayx.Client if cfg.Alipay.AppID != "" { alipayClient, err = alipayx.NewClient(cfg.Alipay) } svc := paymentservice.NewService(repo, log, alipayClient) // 4. producer和consumer cfg := kafkax.DefaultConfig() cfg.Topic = "payment-events" producer, err := kafkax.NewProducer(cfg) if err != nil { log.Fatalf("创建 producer 失败: %v", err) } cfg := kafkax.DefaultConfig() cfg.Topic = "payment-events" cfg.GroupID = "payment-consumer-demo" consumer, err := kafkax.NewConsumer(cfg) if err != nil { log.Fatalf("创建 consumer 失败: %v", err) } go consumer.Run(ctx, handlePaymentEvent) ```