zhangzengfei
2024-03-30 e9e0c1f3abf1bbf83ebdb933d318caa2a45c15b0
main.go
@@ -3,15 +3,15 @@
import (
   "context"
   "flag"
   "os"
   "path"
   "path/filepath"
   "sdkCompare/proto/facecompare"
   "strconv"
   "time"
   "sdkCompare/cache"
   "sdkCompare/compare"
   "sdkCompare/config"
   "sdkCompare/db"
   "sdkCompare/proto/facecompare"
   "basic.com/pubsub/protomsg.git"
   "basic.com/valib/logger.git"
@@ -23,36 +23,27 @@
   "nanomsg.org/go-mangos/transport/tcp"
)
var (
   envirment   string
   procName    string
   targetType1 string
)
const procName = "faceCompare"
func init() {
   flag.StringVar(&envirment, "e", "config", "")
   flag.StringVar(&targetType1, "targetType1", "FaceDetect", "cache feature")
   flag.Parse()
   vaversion.Usage()
}
   config.Init(envirment)
func main() {
   err := config.Init()
   if err != nil {
      return
   }
   procName = filepath.Base(os.Args[0])
   var logFile = path.Join(config.LogConf.Path, procName+".log")
   var logFile = path.Join(config.LogConf.Path, "faceCompare.log")
   // 日志初始化
   logger.InitLogger(logFile, config.LogConf.Level, config.LogConf.MaxSize, config.LogConf.MaxBackups, config.LogConf.MaxAge)
   logger.Info("logger init success !")
}
func main() {
   //esutil.InitLog(logger.Debug)
   logger.Debug("This is a new server about sdk compare, proc name ", procName)
   serveUrl := "tcp://0.0.0.0:"
   if err := cache.ConnectDB(); err != nil {
   if err := db.ConnectDB(); err != nil {
      logger.Error(err.Error())
      return
   }
@@ -60,7 +51,7 @@
   cache.InitDbTablePersons()
   serveUrl = serveUrl + strconv.Itoa(config.DbPersonCompInfo.ServePort)
   logger.Debugf("%s serve url:%s", procName, serveUrl)
   logger.Infof("%s serve url:%s", procName, serveUrl)
   Recv(serveUrl)
}
@@ -73,6 +64,7 @@
   if sock, err = rep.NewSocket(); err != nil {
      logger.Error("new rep socket err:", err)
   }
   sock.AddTransport(ipc.NewTransport())
   sock.AddTransport(tcp.NewTransport())
   if err = sock.Listen(url); err != nil {
@@ -82,54 +74,54 @@
   for {
      select {
      case <-ctx.Done():
         logger.Debug("ctx done")
         logger.Info("ctx done")
         return
      default:
         msg, err = sock.Recv()
         if err != nil {
         if err != nil || len(msg) <= 0 {
            continue
         }
         if len(msg) > 0 {
            var compareType facecompare.CompareRequest
            err = proto.Unmarshal(msg, &compareType)
            if err != nil {
               logger.Error("compareType json unmarshal error")
         var request facecompare.CompareRequest
         err = proto.Unmarshal(msg, &request)
         if err != nil {
            logger.Warn("CompareRequest json unmarshal error")
            continue
         }
         var result []byte
         if request.CompareType == facecompare.CompareType_Compare {
            var compareArgInfo protomsg.CompareArgs
            var cacheChangeInfo protomsg.EsPersonCacheChange
            if err = proto.Unmarshal(request.Payload, &compareArgInfo); err == nil {
               timeStart := time.Now()
               result = compare.GetComparePersonBaseInfo(compareArgInfo)
               logger.Debug("用时:", time.Since(timeStart))
            } else if err = proto.Unmarshal(request.Payload, &cacheChangeInfo); err == nil {
               cache.UpdateCache(&cacheChangeInfo)
            } else {
               logger.Warn("CompareArgs or EsPersonCacheChange json unmarshal error")
               continue
            }
            var result []byte
            if compareType.CompareType == facecompare.CompareType_Compare {
               var compareArgInfo protomsg.CompareArgs
               var cacheChangeInfo protomsg.EsPersonCacheChange
               if err = proto.Unmarshal(compareType.Payload, &compareArgInfo); err == nil {
                  timeStart := time.Now()
                  result = cache.GetComparePersonBaseInfo(compareArgInfo)
                  logger.Debug("用时:", time.Since(timeStart))
               } else if err = proto.Unmarshal(compareType.Payload, &cacheChangeInfo); err == nil {
                  cache.UpdateCache(&cacheChangeInfo)
               } else {
                  logger.Error("CompareArgs or EsPersonCacheChange json unmarshal error")
                  continue
         } else if request.CompareType == facecompare.CompareType_UpdateCache {
            var compareEvent protomsg.CompareEvent
            if err = proto.Unmarshal(request.Payload, &compareEvent); err == nil {
               if compareEvent.EventType == protomsg.CompareEventType_ReInitCache { //加入集群后重新初始化缓存
                  cache.ReInitDbTablePersonsCache()
               } else if compareEvent.EventType == protomsg.CompareEventType_UpdateCache { //库中新增更新缓存
                  id := string(compareEvent.Payload)
                  cache.UpdateDbPersonsCacheById(id)
                  logger.Info("--------------更新人员缓存, id: ", id)
               }
            } else if compareType.CompareType == facecompare.CompareType_UpdateCache {
               var compareEvent protomsg.CompareEvent
               if err = proto.Unmarshal(compareType.Payload, &compareEvent); err == nil {
                  if compareEvent.EventType == protomsg.CompareEventType_ReInitCache { //加入集群后重新初始化缓存
                     cache.ReInitDbTablePersonsCache()
                  } else if compareEvent.EventType == protomsg.CompareEventType_UpdateCache { //库中新增更新缓存
                     id := string(compareEvent.Payload)
                     cache.UpdateDbPersonsCacheById(id)
                     logger.Debug("--------------更新人员缓存, id: ", id)
                  }
               } else {
                  logger.Error("CompareEvent json unmarshal error")
                  continue
               }
            } else {
               logger.Warn("CompareEvent json unmarshal error")
               continue
            }
            err = sock.Send(result)
            if err != nil {
               logger.Error("send reply err:", err.Error())
            }
         }
         err = sock.Send(result)
         if err != nil {
            logger.Warn("send reply err:", err.Error())
         }
      }
   }