Compare commits
No commits in common. "689d31c2462e2d44ad871b8d2a47ca00ed433817" and "252699cb777be71a6c8db9f6a49df9f095f2c6fe" have entirely different histories.
689d31c246
...
252699cb77
|
|
@ -9,11 +9,7 @@ RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o modelrt main.go
|
||||||
|
|
||||||
FROM alpine:latest
|
FROM alpine:latest
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ARG USER_ID=1000
|
|
||||||
RUN adduser -D -u ${USER_ID} modelrt
|
|
||||||
COPY --from=builder /app/modelrt ./modelrt
|
COPY --from=builder /app/modelrt ./modelrt
|
||||||
COPY configs/config.example.yaml ./configs/config.example.yaml
|
COPY configs/config.example.yaml ./configs/config.example.yaml
|
||||||
RUN chown -R modelrt:modelrt /app
|
|
||||||
RUN chmod +x /app/modelrt
|
RUN chmod +x /app/modelrt
|
||||||
USER modelrt
|
CMD ["/app/modelrt"]
|
||||||
CMD ["/app/modelrt", "-modelRT_config_dir=/app/configs"]
|
|
||||||
20
main.go
20
main.go
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"syscall"
|
"syscall"
|
||||||
|
"time"
|
||||||
|
|
||||||
"modelRT/alert"
|
"modelRT/alert"
|
||||||
"modelRT/config"
|
"modelRT/config"
|
||||||
|
|
@ -21,6 +22,7 @@ import (
|
||||||
_ "modelRT/docs"
|
_ "modelRT/docs"
|
||||||
"modelRT/handler"
|
"modelRT/handler"
|
||||||
"modelRT/logger"
|
"modelRT/logger"
|
||||||
|
"modelRT/middleware"
|
||||||
"modelRT/model"
|
"modelRT/model"
|
||||||
"modelRT/pool"
|
"modelRT/pool"
|
||||||
realtimedata "modelRT/real-time-data"
|
realtimedata "modelRT/real-time-data"
|
||||||
|
|
@ -34,6 +36,12 @@ import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var limiter *middleware.Limiter
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
limiter = middleware.NewLimiter(10, 1*time.Minute) // 设置限流器,允许每分钟最多请求10次
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
modelRTConfigDir = flag.String("modelRT_config_dir", "./configs", "config file dir of model runtime service")
|
modelRTConfigDir = flag.String("modelRT_config_dir", "./configs", "config file dir of model runtime service")
|
||||||
modelRTConfigName = flag.String("modelRT_config_name", "config", "config file name of model runtime service")
|
modelRTConfigName = flag.String("modelRT_config_name", "config", "config file name of model runtime service")
|
||||||
|
|
@ -72,16 +80,14 @@ func main() {
|
||||||
log.Println("configuration file not found,checking for example file")
|
log.Println("configuration file not found,checking for example file")
|
||||||
|
|
||||||
exampleConfigPath := filepath.Join(*modelRTConfigDir, *modelRTConfigName+".example."+*modelRTConfigType)
|
exampleConfigPath := filepath.Join(*modelRTConfigDir, *modelRTConfigName+".example."+*modelRTConfigType)
|
||||||
configDir := filepath.Dir(configPath)
|
|
||||||
if err := os.MkdirAll(configDir, 0o755); err != nil {
|
|
||||||
panic(fmt.Errorf("failed to create config directory %s:%w", configDir, err))
|
|
||||||
}
|
|
||||||
if _, err := os.Stat(exampleConfigPath); err == nil {
|
if _, err := os.Stat(exampleConfigPath); err == nil {
|
||||||
if err := util.CopyFile(exampleConfigPath, configPath); err != nil {
|
if err := util.CopyFile(exampleConfigPath, configPath); err != nil {
|
||||||
panic(fmt.Errorf("failed to copy example config file:%w", err))
|
panicErr := fmt.Errorf("failed to copy example config file:%w", err)
|
||||||
|
panic(panicErr)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
panic(errors.New("no config file and no config example file found"))
|
panicErr := errors.New("no config file and no config example file found")
|
||||||
|
panic(panicErr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -185,7 +191,7 @@ func main() {
|
||||||
engine.GET("/rt/datas/query", handler.QueryRealTimeDataHandler)
|
engine.GET("/rt/datas/query", handler.QueryRealTimeDataHandler)
|
||||||
|
|
||||||
// dashborad api
|
// dashborad api
|
||||||
dashboard := engine.Group("/dashboard")
|
dashboard := engine.Group("/dashboard", limiter.Middleware)
|
||||||
{
|
{
|
||||||
dashboard.GET("/load", nil)
|
dashboard.GET("/load", nil)
|
||||||
dashboard.GET("/query", nil)
|
dashboard.GET("/query", nil)
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,15 @@ package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"modelRT/handler"
|
"modelRT/handler"
|
||||||
|
"modelRT/middleware"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
// registerMeasurementRoutes define func of register measurement routes
|
// registerMeasurementRoutes define func of register measurement routes
|
||||||
func registerMeasurementRoutes(rg *gin.RouterGroup, middlewares ...gin.HandlerFunc) {
|
func registerMeasurementRoutes(rg *gin.RouterGroup, clientToken string) {
|
||||||
g := rg.Group("/measurement/")
|
g := rg.Group("/measurement/")
|
||||||
g.Use(middlewares...)
|
g.Use(middleware.SetTokenMiddleware(clientToken))
|
||||||
g.GET("load", handler.MeasurementGetHandler)
|
g.GET("load", handler.MeasurementGetHandler)
|
||||||
g.GET("recommend", handler.MeasurementRecommendHandler)
|
g.GET("recommend", handler.MeasurementRecommendHandler)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,21 +9,20 @@ import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
var measurementLimiter *middleware.Limiter
|
var limiter *middleware.Limiter
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// set a rate limiter to allow a maximum of 2 requests per second for measurement group api
|
limiter = middleware.NewLimiter(10, 1*time.Minute) // 设置限流器,允许每分钟最多请求10次
|
||||||
measurementLimiter = middleware.NewLimiter(2, 1*time.Second)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterRoutes define func of register all routes
|
// RegisterRoutes define func of register all routes
|
||||||
func RegisterRoutes(engine *gin.Engine, clientToken string) {
|
func RegisterRoutes(engine *gin.Engine, clientToken string) {
|
||||||
// use global middlewares
|
// use global middlewares
|
||||||
engine.Use(middleware.StartTrace())
|
engine.Use(middleware.StartTrace(), limiter.Middleware)
|
||||||
routeGroup := engine.Group("")
|
routeGroup := engine.Group("")
|
||||||
registerDiagramRoutes(routeGroup)
|
registerDiagramRoutes(routeGroup)
|
||||||
registerAttrRoutes(routeGroup)
|
registerAttrRoutes(routeGroup)
|
||||||
registerMeasurementRoutes(routeGroup, middleware.SetTokenMiddleware(clientToken), measurementLimiter.Middleware)
|
registerMeasurementRoutes(routeGroup, clientToken)
|
||||||
registerDataRoutes(routeGroup)
|
registerDataRoutes(routeGroup)
|
||||||
registerMonitorRoutes(routeGroup)
|
registerMonitorRoutes(routeGroup)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue