Files
2026-04-10 11:12:10 +00:00

80 lines
2.2 KiB
Go

package main
import (
"ai-chat-service/chat-server/data"
metrics_app "ai-chat-service/chat-server/metrics-app"
metrics_bus "ai-chat-service/chat-server/metrics-bus"
"ai-chat-service/chat-server/server"
"ai-chat-service/interceptor"
"ai-chat-service/pkg/config"
"ai-chat-service/pkg/db/redis"
"ai-chat-service/pkg/log"
"ai-chat-service/proto"
"ai-chat-service/services/embedding"
"ai-chat-service/services/faiss"
"flag"
"fmt"
"net/http"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
"github.com/prometheus/client_golang/prometheus/promhttp"
"google.golang.org/grpc"
"google.golang.org/grpc/health"
"google.golang.org/grpc/health/grpc_health_v1"
"net"
)
var (
configFile = flag.String("config", "dev.config.yaml", "")
)
func main() {
flag.Parse()
registry := prometheus.NewRegistry()
registry.MustRegister(collectors.NewGoCollector(), collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}))
busMetrics := metrics_bus.NewBusMetrics(registry)
http.Handle("/metrics", promhttp.HandlerFor(registry, promhttp.HandlerOpts{}))
go http.ListenAndServe(":8080", nil)
//初始化配置文件
config.InitConfig(*configFile)
cnf := config.GetConfig()
//初始化日志
log.SetLevel(cnf.Log.Level)
log.SetOutput(log.GetRotateWriter(cnf.Log.LogPath))
log.SetPrintCaller(true)
logger := log.NewLogger()
logger.SetLevel(cnf.Log.Level)
logger.SetOutput(log.GetRotateWriter(cnf.Log.LogPath))
logger.SetPrintCaller(true)
// 初始化redis
redis.InitRedisPool(cnf)
recordsData := data.NewChatRecordsData()
embedder, err := embedding.NewEmbedder(cnf)
if err != nil {
log.Fatal(err)
}
faissClient := faiss.NewClient(cnf)
lis, err := net.Listen("tcp", fmt.Sprintf("%s:%d", cnf.Server.IP, cnf.Server.Port))
if err != nil {
log.Fatal(err)
}
s := grpc.NewServer(grpc.UnaryInterceptor(interceptor.UnaryAuthInterceptor), grpc.StreamInterceptor(metrics_app.NewStreamMiddleware(registry).WrapHandler()))
service := server.NewChatService(recordsData, embedder, faissClient, cnf, logger, busMetrics)
proto.RegisterChatServer(s, service)
healthCheckSrv := health.NewServer()
grpc_health_v1.RegisterHealthServer(s, healthCheckSrv)
if err = s.Serve(lis); err != nil {
log.Fatal(err)
}
}