From cd2530afa4e001e01c699e91a8a5f5a0d8e441a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=AF=BB=E6=AC=A2?= Date: Wed, 8 Sep 2021 14:24:07 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E5=AE=8C=E5=96=84=E7=BD=91=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 5 +++-- config/nacos.go | 28 ++++++++++++++++++++++++++++ initialization/nacos.go | 29 +++++++++++++++++++++++------ middleware/jaeger.go | 14 +++++--------- 4 files changed, 59 insertions(+), 17 deletions(-) create mode 100644 config/nacos.go diff --git a/config/config.go b/config/config.go index 9e3c31e..1902f40 100644 --- a/config/config.go +++ b/config/config.go @@ -1,6 +1,7 @@ package config var ( - AppInfo appInfo - LokiConfig lokiConfig + AppInfo appInfo + LokiConfig lokiConfig + NacosConfig nacosConfig ) diff --git a/config/nacos.go b/config/nacos.go new file mode 100644 index 0000000..897a91e --- /dev/null +++ b/config/nacos.go @@ -0,0 +1,28 @@ +package config + +import ( + "gateway/utils" +) + +// Nacos配置 +type nacosConfig struct { + Host string // 主机 + Port uint64 // 端口 + NamespaceId string // 命名空间 + CenterConfigName string // 外部配置文件名,多个以逗号隔开 +} + +// InitNacosConfig 初始化OSS配置 +func InitNacosConfig() { + host := utils.GetEnvVal("NACOS_HOST", "nacos-headless") + port := utils.GetEnvIntVal("NACOS_PORT", 8848) + namespaceId := utils.GetEnvVal("NACOS_NAMESPACE", "") + centerConfigName := utils.GetEnvVal("NACOS_CONFIG_NAME", "application.yml") + + NacosConfig = nacosConfig{ + Host: host, + Port: uint64(port), + NamespaceId: namespaceId, + CenterConfigName: centerConfigName, + } +} diff --git a/initialization/nacos.go b/initialization/nacos.go index a66fbf3..8c44cc0 100644 --- a/initialization/nacos.go +++ b/initialization/nacos.go @@ -1,6 +1,7 @@ package initialization import ( + "gateway/config" "gateway/core" "gateway/utils" "github.com/nacos-group/nacos-sdk-go/clients" @@ -10,13 +11,14 @@ import ( // 初始化Nacos注册 func initNacos() { + config.InitNacosConfig() + sc := []constant.ServerConfig{ - *constant.NewServerConfig("192.168.0.124", 8848), + *constant.NewServerConfig(config.NacosConfig.Host, config.NacosConfig.Port), } cc := constant.ClientConfig{ - AppName: "gateway", - //NamespaceId: "e56f939e-6d22-449c-97d2-39a8ae5afd58", //namespace id - NamespaceId: "", + AppName: config.AppInfo.AppName, + NamespaceId: config.NacosConfig.NamespaceId, TimeoutMs: 5000, NotLoadCacheAtStart: true, RotateTime: "1h", @@ -39,7 +41,7 @@ func initNacos() { } success, _ := client.RegisterInstance(vo.RegisterInstanceParam{ Ip: ip, - Port: 8889, + Port: config.AppInfo.Port, Weight: 10, Enable: true, Healthy: true, @@ -51,12 +53,27 @@ func initNacos() { core.Log.Panic("服务注册失败,退出程序") } + // 打印所有服务 + go func() { + instances, err := client.SelectAllInstances(vo.SelectAllInstancesParam{ + ServiceName: config.AppInfo.AppName, + }) + if err != nil { + core.Log.Error("获取所有服务失败") + return + } + core.Log.Debug("获取到服务总数: %v", len(instances)) + for _, instance := range instances { + core.Log.Debug("服务ID: %v --> %v:%v", instance.InstanceId, instance.Ip, instance.Port) + } + }() + configClient, err := clients.NewConfigClient(configParam) if err != nil { core.Log.Error("创建配置连接失败: %v", err.Error()) } _ = configClient.ListenConfig(vo.ConfigParam{ - DataId: "gateway.yml", + DataId: config.NacosConfig.CenterConfigName, Group: "DEFAULT_GROUP", OnChange: configChanged, }) diff --git a/middleware/jaeger.go b/middleware/jaeger.go index 02e56bf..4c1edcd 100644 --- a/middleware/jaeger.go +++ b/middleware/jaeger.go @@ -2,6 +2,7 @@ package middleware import ( "fmt" + gc "gateway/config" "github.com/gin-gonic/gin" "github.com/opentracing/opentracing-go" "github.com/opentracing/opentracing-go/ext" @@ -9,16 +10,11 @@ import ( "io" ) -const ( - AppName = "gateway" - JaegerHostPort = "192.168.0.124:6831" -) - func OpenTracing() gin.HandlerFunc { return func(c *gin.Context) { var parentSpan opentracing.Span - tracer, closer := NewJaegerTracer(AppName) + tracer, closer := NewJaegerTracer() defer closer.Close() spCtx, err := opentracing.GlobalTracer().Extract(opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier(c.Request.Header)) @@ -53,7 +49,7 @@ func OpenTracing() gin.HandlerFunc { //var Tracer opentracing.Tracer -func NewJaegerTracer(serviceName string) (opentracing.Tracer, io.Closer) { +func NewJaegerTracer() (opentracing.Tracer, io.Closer) { cfg := &config.Configuration{ Sampler: &config.SamplerConfig{ Type: "const", //固定采样 @@ -62,10 +58,10 @@ func NewJaegerTracer(serviceName string) (opentracing.Tracer, io.Closer) { Reporter: &config.ReporterConfig{ LogSpans: true, - LocalAgentHostPort: JaegerHostPort, + LocalAgentHostPort: gc.AppInfo.JaegerServer, }, - ServiceName: serviceName, + ServiceName: gc.AppInfo.AppName, } tracer, closer, err := cfg.NewTracer()