feat: refactor.
This commit is contained in:
18
bootstrap.go
18
bootstrap.go
@@ -4,16 +4,20 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/go-kratos/kratos/v2/log"
|
||||
"github.com/go-kratos/kratos/v2/registry"
|
||||
kratosRegistry "github.com/go-kratos/kratos/v2/registry"
|
||||
|
||||
"github.com/tx7do/kratos-bootstrap/config"
|
||||
"github.com/tx7do/kratos-bootstrap/logger"
|
||||
"github.com/tx7do/kratos-bootstrap/registry"
|
||||
"github.com/tx7do/kratos-bootstrap/tracer"
|
||||
|
||||
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||||
"github.com/tx7do/kratos-bootstrap/config"
|
||||
)
|
||||
|
||||
// Bootstrap 应用引导启动
|
||||
func Bootstrap(serviceInfo *ServiceInfo) (*conf.Bootstrap, log.Logger, registry.Registrar) {
|
||||
func Bootstrap(serviceInfo *config.ServiceInfo) (*conf.Bootstrap, log.Logger, kratosRegistry.Registrar) {
|
||||
// inject command flags
|
||||
Flags := NewCommandFlags()
|
||||
Flags := config.NewCommandFlags()
|
||||
Flags.Init()
|
||||
|
||||
var err error
|
||||
@@ -24,13 +28,13 @@ func Bootstrap(serviceInfo *ServiceInfo) (*conf.Bootstrap, log.Logger, registry.
|
||||
}
|
||||
|
||||
// init logger
|
||||
ll := NewLoggerProvider(config.GetBootstrapConfig().Logger, serviceInfo)
|
||||
ll := logger.NewLoggerProvider(config.GetBootstrapConfig().Logger, serviceInfo)
|
||||
|
||||
// init registrar
|
||||
reg := NewRegistry(config.GetBootstrapConfig().Registry)
|
||||
reg := registry.NewRegistry(config.GetBootstrapConfig().Registry)
|
||||
|
||||
// init tracer
|
||||
if err = NewTracerProvider(config.GetBootstrapConfig().Trace, serviceInfo); err != nil {
|
||||
if err = tracer.NewTracerProvider(config.GetBootstrapConfig().Trace, serviceInfo); err != nil {
|
||||
panic(fmt.Sprintf("init tracer failed: %v", err))
|
||||
}
|
||||
|
||||
|
||||
@@ -16,38 +16,24 @@ import (
|
||||
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||||
)
|
||||
|
||||
const remoteConfigSourceConfigFile = "remote.yaml"
|
||||
|
||||
type Type string
|
||||
|
||||
const (
|
||||
LocalFileType Type = "file"
|
||||
NacosType Type = "nacos"
|
||||
ConsulType Type = "consul"
|
||||
EtcdType Type = "etcd"
|
||||
ApolloType Type = "apollo"
|
||||
KubernetesType Type = "kubernetes"
|
||||
PolarisType Type = "polaris"
|
||||
)
|
||||
|
||||
// NewRemoteConfigSource 创建一个远程配置源
|
||||
func NewRemoteConfigSource(c *conf.RemoteConfig) config.Source {
|
||||
switch Type(c.Type) {
|
||||
default:
|
||||
fallthrough
|
||||
case LocalFileType:
|
||||
case LocalFile:
|
||||
return nil
|
||||
case NacosType:
|
||||
case Nacos:
|
||||
return nacos.NewConfigSource(c)
|
||||
case ConsulType:
|
||||
case Consul:
|
||||
return consul.NewConfigSource(c)
|
||||
case EtcdType:
|
||||
case Etcd:
|
||||
return etcd.NewConfigSource(c)
|
||||
case ApolloType:
|
||||
case Apollo:
|
||||
return apollo.NewConfigSource(c)
|
||||
case KubernetesType:
|
||||
case Kubernetes:
|
||||
return kubernetes.NewConfigSource(c)
|
||||
case PolarisType:
|
||||
case Polaris:
|
||||
return polaris.NewConfigSource(c)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package bootstrap
|
||||
package config
|
||||
|
||||
import "flag"
|
||||
import (
|
||||
"flag"
|
||||
|
||||
"github.com/tx7do/kratos-bootstrap/utils"
|
||||
)
|
||||
|
||||
// CommandFlags 命令传参
|
||||
type CommandFlags struct {
|
||||
Conf string // 引导配置文件路径,默认为:../../configs
|
||||
Env string // 开发环境:dev、debug……
|
||||
@@ -11,25 +16,31 @@ type CommandFlags struct {
|
||||
}
|
||||
|
||||
func NewCommandFlags() *CommandFlags {
|
||||
return &CommandFlags{
|
||||
f := &CommandFlags{
|
||||
Conf: "",
|
||||
Env: "",
|
||||
ConfigHost: "",
|
||||
ConfigType: "",
|
||||
Daemon: false,
|
||||
}
|
||||
|
||||
f.defineFlag()
|
||||
|
||||
return f
|
||||
}
|
||||
|
||||
func (f *CommandFlags) Init() {
|
||||
func (f *CommandFlags) defineFlag() {
|
||||
flag.StringVar(&f.Conf, "conf", "../../configs", "config path, eg: -conf ../../configs")
|
||||
flag.StringVar(&f.Env, "env", "dev", "runtime environment, eg: -env dev")
|
||||
flag.StringVar(&f.ConfigHost, "chost", "127.0.0.1:8500", "config server host, eg: -chost 127.0.0.1:8500")
|
||||
flag.StringVar(&f.ConfigType, "ctype", "consul", "config server host, eg: -ctype consul")
|
||||
flag.BoolVar(&f.Daemon, "d", false, "run app as a daemon with -d=true.")
|
||||
}
|
||||
|
||||
func (f *CommandFlags) Init() {
|
||||
flag.Parse()
|
||||
|
||||
if f.Daemon {
|
||||
BeDaemon("-d")
|
||||
utils.BeDaemon("-d")
|
||||
}
|
||||
|
||||
flag.Parse()
|
||||
}
|
||||
15
config/options.go
Normal file
15
config/options.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package config
|
||||
|
||||
const remoteConfigSourceConfigFile = "remote.yaml"
|
||||
|
||||
type Type string
|
||||
|
||||
const (
|
||||
LocalFile Type = "file"
|
||||
Nacos Type = "nacos"
|
||||
Consul Type = "consul"
|
||||
Etcd Type = "etcd"
|
||||
Apollo Type = "apollo"
|
||||
Kubernetes Type = "kubernetes"
|
||||
Polaris Type = "polaris"
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package config
|
||||
|
||||
import "os"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package logger
|
||||
|
||||
import (
|
||||
"os"
|
||||
@@ -8,31 +8,45 @@ import (
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
|
||||
"github.com/go-kratos/kratos/v2/log"
|
||||
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
||||
|
||||
aliyunLogger "github.com/go-kratos/kratos/contrib/log/aliyun/v2"
|
||||
fluentLogger "github.com/go-kratos/kratos/contrib/log/fluent/v2"
|
||||
logrusLogger "github.com/go-kratos/kratos/contrib/log/logrus/v2"
|
||||
tencentLogger "github.com/go-kratos/kratos/contrib/log/tencent/v2"
|
||||
zapLogger "github.com/go-kratos/kratos/contrib/log/zap/v2"
|
||||
|
||||
"github.com/go-kratos/kratos/v2/log"
|
||||
"github.com/go-kratos/kratos/v2/middleware/tracing"
|
||||
"github.com/tx7do/kratos-bootstrap/config"
|
||||
|
||||
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||||
)
|
||||
|
||||
type LoggerType string
|
||||
// NewLogger 创建一个新的日志记录器
|
||||
func NewLogger(cfg *conf.Logger) log.Logger {
|
||||
if cfg == nil {
|
||||
return NewStdLogger()
|
||||
}
|
||||
|
||||
const (
|
||||
LoggerTypeStd LoggerType = "std"
|
||||
LoggerTypeFluent LoggerType = "fluent"
|
||||
LoggerTypeLogrus LoggerType = "logrus"
|
||||
LoggerTypeZap LoggerType = "zap"
|
||||
LoggerTypeAliyun LoggerType = "aliyun"
|
||||
LoggerTypeTencent LoggerType = "tencent"
|
||||
)
|
||||
switch Type(cfg.Type) {
|
||||
default:
|
||||
fallthrough
|
||||
case Std:
|
||||
return NewStdLogger()
|
||||
case Fluent:
|
||||
return NewFluentLogger(cfg)
|
||||
case Zap:
|
||||
return NewZapLogger(cfg)
|
||||
case Logrus:
|
||||
return NewLogrusLogger(cfg)
|
||||
case Aliyun:
|
||||
return NewAliyunLogger(cfg)
|
||||
case Tencent:
|
||||
return NewTencentLogger(cfg)
|
||||
}
|
||||
}
|
||||
|
||||
// NewLoggerProvider 创建一个新的日志记录器提供者
|
||||
func NewLoggerProvider(cfg *conf.Logger, serviceInfo *ServiceInfo) log.Logger {
|
||||
func NewLoggerProvider(cfg *conf.Logger, serviceInfo *config.ServiceInfo) log.Logger {
|
||||
l := NewLogger(cfg)
|
||||
|
||||
return log.With(
|
||||
@@ -47,30 +61,6 @@ func NewLoggerProvider(cfg *conf.Logger, serviceInfo *ServiceInfo) log.Logger {
|
||||
)
|
||||
}
|
||||
|
||||
// NewLogger 创建一个新的日志记录器
|
||||
func NewLogger(cfg *conf.Logger) log.Logger {
|
||||
if cfg == nil {
|
||||
return NewStdLogger()
|
||||
}
|
||||
|
||||
switch LoggerType(cfg.Type) {
|
||||
default:
|
||||
fallthrough
|
||||
case LoggerTypeStd:
|
||||
return NewStdLogger()
|
||||
case LoggerTypeFluent:
|
||||
return NewFluentLogger(cfg)
|
||||
case LoggerTypeZap:
|
||||
return NewZapLogger(cfg)
|
||||
case LoggerTypeLogrus:
|
||||
return NewLogrusLogger(cfg)
|
||||
case LoggerTypeAliyun:
|
||||
return NewAliyunLogger(cfg)
|
||||
case LoggerTypeTencent:
|
||||
return NewTencentLogger(cfg)
|
||||
}
|
||||
}
|
||||
|
||||
// NewStdLogger 创建一个新的日志记录器 - Kratos内置,控制台输出
|
||||
func NewStdLogger() log.Logger {
|
||||
l := log.NewStdLogger(os.Stdout)
|
||||
12
logger/options.go
Normal file
12
logger/options.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package logger
|
||||
|
||||
type Type string
|
||||
|
||||
const (
|
||||
Std Type = "std"
|
||||
Fluent Type = "fluent"
|
||||
Logrus Type = "logrus"
|
||||
Zap Type = "zap"
|
||||
Aliyun Type = "aliyun"
|
||||
Tencent Type = "tencent"
|
||||
)
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package registry
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package registry
|
||||
|
||||
import (
|
||||
"testing"
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"net/http/pprof"
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package tracer
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -17,6 +17,7 @@ import (
|
||||
semConv "go.opentelemetry.io/otel/semconv/v1.4.0"
|
||||
|
||||
conf "github.com/tx7do/kratos-bootstrap/api/gen/go/conf/v1"
|
||||
"github.com/tx7do/kratos-bootstrap/config"
|
||||
)
|
||||
|
||||
// NewTracerExporter 创建一个导出器,支持:zipkin、otlp-http、otlp-grpc
|
||||
@@ -40,7 +41,7 @@ func NewTracerExporter(exporterName, endpoint string, insecure bool) (traceSdk.S
|
||||
}
|
||||
|
||||
// NewTracerProvider 创建一个链路追踪器
|
||||
func NewTracerProvider(cfg *conf.Tracer, serviceInfo *ServiceInfo) error {
|
||||
func NewTracerProvider(cfg *conf.Tracer, serviceInfo *config.ServiceInfo) error {
|
||||
if cfg == nil {
|
||||
return errors.New("tracer config is nil")
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package bootstrap
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
Reference in New Issue
Block a user