feat 默认模块

This commit is contained in:
2026-01-20 12:07:18 +08:00
parent a47557920c
commit 1edebb439c
10 changed files with 98 additions and 33 deletions

View File

@@ -10,6 +10,7 @@ import (
// DB 数据库模块
type DB struct {
DefaultModule
cfg *config.DBConfig
}
@@ -35,10 +36,6 @@ func (m *DB) Init() error {
return nil
}
func (m *DB) Start() error {
return nil
}
func (m *DB) Stop() error {
if err := etcd.Close(); err != nil {
log.Errorf("close etcd failed: %v", err)

View File

@@ -1,17 +1,17 @@
package module
import "git.hlsq.asia/mmorpg/service-common/discover"
import (
"git.hlsq.asia/mmorpg/service-common/discover"
"sync"
)
// Discover 服务发现模块
type Discover struct {
DefaultModule
}
func (m *Discover) Init() error {
return nil
}
func (m *Discover) Start() error {
discover.Listen()
func (m *Discover) Start(ready *sync.WaitGroup) error {
discover.Listen(ready)
return nil
}
@@ -19,7 +19,3 @@ func (m *Discover) Stop() error {
discover.Close()
return nil
}
func (m *Discover) Bind(_ ...any) Module {
return m
}

View File

@@ -2,19 +2,22 @@ package module
import (
"git.hlsq.asia/mmorpg/service-common/net/grpc/service"
"sync"
)
// Grpc Grpc模块
type Grpc struct {
DefaultModule
server service.IService
}
func (m *Grpc) Init() error {
func (m *Grpc) Start(ready *sync.WaitGroup) error {
m.server.Init(ready)
return nil
}
func (m *Grpc) Start() error {
m.server.Init()
func (m *Grpc) AfterStart() error {
m.server.SetReady()
return nil
}

View File

@@ -1,8 +1,37 @@
package module
import "sync"
// 重点!!!每个模块需要保证同步执行
type Module interface {
Init() error
Start() error
Stop() error
Bind(data ...any) Module
Init() error // 初始化
Start(ready *sync.WaitGroup) error // 启动
AfterStart() error // 启动之后
Stop() error // 停止
Bind(data ...any) Module // 绑定数据
}
type DefaultModule struct {
}
func (m *DefaultModule) Init() error {
return nil
}
func (m *DefaultModule) Start(ready *sync.WaitGroup) error {
ready.Done()
return nil
}
func (m *DefaultModule) AfterStart() error {
return nil
}
func (m *DefaultModule) Stop() error {
return nil
}
func (m *DefaultModule) Bind(_ ...any) Module {
return m
}

View File

@@ -13,6 +13,7 @@ import (
// Prometheus 普罗米修斯模块
type Prometheus struct {
DefaultModule
wg *sync.WaitGroup
server *http.Server
metricCfg *config.MetricConfig
@@ -23,7 +24,7 @@ func (m *Prometheus) Init() error {
return nil
}
func (m *Prometheus) Start() error {
func (m *Prometheus) Start(ready *sync.WaitGroup) error {
m.wg.Add(1)
go func() {
defer m.wg.Done()
@@ -31,6 +32,7 @@ func (m *Prometheus) Start() error {
Addr: fmt.Sprintf("%v:%v", m.metricCfg.Prometheus.Address, m.metricCfg.Prometheus.Port),
Handler: promhttp.Handler(),
}
ready.Done()
if err := m.server.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
log.Errorf("prometheus server failed: %v", err.Error())
}

View File

@@ -14,6 +14,7 @@ import (
// Tracer 链路追踪模块
type Tracer struct {
DefaultModule
tp *sdktrace.TracerProvider
metricCfg *config.MetricConfig
serviceName string
@@ -42,10 +43,6 @@ func (m *Tracer) Init() error {
return nil
}
func (m *Tracer) Start() error {
return nil
}
func (m *Tracer) Stop() error {
if m.tp != nil {
if err := m.tp.Shutdown(context.Background()); err != nil {