Browse Source

设置NODE_ID

luoyangwei 1 year ago
parent
commit
bb1ca6019a
5 changed files with 12 additions and 6 deletions
  1. 2 1
      .env
  2. 3 1
      Dockerfile
  3. 1 0
      docker-compose.yml
  4. 3 4
      utils/gid/gid.go
  5. 3 0
      websocket.go

+ 2 - 1
.env

@@ -1,2 +1,3 @@
 ENVIRONMENT=test
-TZ=Europe/Berlin
+TZ=Europe/Berlin
+NODE_ID = 100

+ 3 - 1
Dockerfile

@@ -3,9 +3,11 @@ FROM alpine as runner
 ARG NAME
 ARG ENVIRONMENT
 ARG TZ
+ARG NODE_ID
 ENV NAME=${NAME}
 ENV ENVIRONMENT=${ENVIRONMENT}
 ENV TZ=${TZ}
+ENV NODE_ID=${NODE_ID}
 
 # COPY /etc/ssl/certs/ca-bundle.pem /etc/ssl/cert.pem
 COPY . .
@@ -17,4 +19,4 @@ RUN echo "${TZ}" > /etc/timezone
 RUN chmod 755 ${NAME}
 # COPY /etc/ssl/certs/ca-certificates.crt /etc/ssl/cert
 
-ENTRYPOINT ["sh", "-c", "./$NAME -f etc/$NAME.$ENVIRONMENT.toml"]
+ENTRYPOINT ["sh", "-c", "./$NAME -f etc/$NAME.$ENVIRONMENT.toml -n $NODE_ID"]

+ 1 - 0
docker-compose.yml

@@ -12,6 +12,7 @@ services:
         - "NAME=websocket"
         - "ENVIRONMENT=${ENVIRONMENT}"
         - "TZ=${TZ}"
+        - "NODE_ID=${NODE_ID}"
     volumes:
       - "/var/logs/sikey:/var/logs/sikey"
       - "/data:/data"

+ 3 - 4
utils/gid/gid.go

@@ -2,20 +2,19 @@ package gid
 
 import (
 	"log"
-	"time"
 
 	"github.com/bwmarrin/snowflake"
 )
 
 var node *snowflake.Node
 
-func init() {
+func SetNodeId(n int64) {
 	var err error
-	nodeId := time.Now().Unix()
-	node, err = snowflake.NewNode(nodeId)
+	node, err = snowflake.NewNode(n)
 	if err != nil {
 		log.Fatalln(err)
 	}
+	log.Println("node id:", n)
 }
 
 func GetMessageId() string {

+ 3 - 0
websocket.go

@@ -14,16 +14,19 @@ import (
 	"sikey.com/websocket/config"
 	"sikey.com/websocket/repositories"
 	"sikey.com/websocket/server"
+	"sikey.com/websocket/utils/gid"
 	"sikey.com/websocket/utils/mysqlx"
 	"sikey.com/websocket/utils/redisx"
 	"sikey.com/websocket/utils/zlog"
 )
 
 var configFile = flag.String("f", "./etc/websocket.toml", "the config file")
+var nodeId = flag.Int64("n", 1, "the node id")
 
 func main() {
 	flag.Parse()
 	config.MustLoadConfig(*configFile)
+	gid.SetNodeId(*nodeId)
 
 	// Zaplog init
 	zlog.WithZapLogger(zlog.NewLogger(config.MustLoadLogger()))