diff --git a/engine/load.go b/engine/load.go index bef0cdd1..40b3568f 100644 --- a/engine/load.go +++ b/engine/load.go @@ -39,8 +39,8 @@ func Load(cfg config.Config) (err error) { gou.LoadCrypt(`{}`, "PASSWORD") // 第二步: 建立数据库 & 会话连接 - share.DBConnect(cfg.DB) // 创建数据库连接 - share.SessionConnect(cfg.Session) // 创建会话服务器链接 + share.DBConnect(cfg.DB) // 创建数据库连接 + // share.SessionConnect(cfg.Session) // 创建会话服务器链接 // 加载应用引擎 if os.Getenv("YAO_DEV") != "" { diff --git a/go.mod b/go.mod index 6405a23d..c12b3db3 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/armon/go-metrics v0.3.10 // indirect github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect github.com/buraksezer/consistent v0.9.0 // indirect - github.com/buraksezer/olric v0.4.2 + github.com/buraksezer/olric v0.4.3 github.com/caarlos0/env/v6 v6.9.1 github.com/elazarl/go-bindata-assetfs v1.0.1 github.com/fatih/color v1.13.0 diff --git a/go.sum b/go.sum index 90abbb39..e9a42c47 100644 --- a/go.sum +++ b/go.sum @@ -72,8 +72,8 @@ github.com/buraksezer/connpool v0.4.0/go.mod h1:qPiG7gKXo+EjrwG/yqn2StZM4ek6gcYn github.com/buraksezer/consistent v0.0.0-20191006190839-693edf70fd72/go.mod h1:OEE5igu/CDjGegM1Jn6ZMo7R6LlV/JChAkjfQQIRLpg= github.com/buraksezer/consistent v0.9.0 h1:Zfs6bX62wbP3QlbPGKUhqDw7SmNkOzY5bHZIYXYpR5g= github.com/buraksezer/consistent v0.9.0/go.mod h1:6BrVajWq7wbKZlTOUPs/XVfR8c0maujuPowduSpZqmw= -github.com/buraksezer/olric v0.4.2 h1:1W5UCYFYrkeD6OHGyTi6R9YTLJ3vXcVkgas4ZbFQMfw= -github.com/buraksezer/olric v0.4.2/go.mod h1:xNt+/QiiVuqioJzgTMuiV2LynTNu87L1Tp5289XuU78= +github.com/buraksezer/olric v0.4.3 h1:A8QKRv/2BiIOWmoCzbsRniW/zbuN80vAJXMfEo4N7qc= +github.com/buraksezer/olric v0.4.3/go.mod h1:xNt+/QiiVuqioJzgTMuiV2LynTNu87L1Tp5289XuU78= github.com/caarlos0/env/v6 v6.9.1 h1:zOkkjM0F6ltnQ5eBX6IPI41UP/KDGEK7rRPwGCNos8k= github.com/caarlos0/env/v6 v6.9.1/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -147,8 +147,6 @@ github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0= github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= -github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= -github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE= @@ -207,8 +205,8 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= diff --git a/network/ip.go b/network/ip.go index 6f1243f3..80f1fc55 100644 --- a/network/ip.go +++ b/network/ip.go @@ -41,7 +41,7 @@ func ProcessIP(process *gou.Process) interface{} { // FreePort xiang.network.FreePort 获取可用端口 func FreePort() int { - addr, err := net.ResolveTCPAddr("tcp", "localhost:0") + addr, err := net.ResolveTCPAddr("tcp", ":0") if err != nil { exception.New("获取可用端口失败 %s", 500, err.Error()).Throw() return 0 @@ -52,6 +52,7 @@ func FreePort() int { exception.New("获取可用端口失败 %s", 500, err.Error()).Throw() return 0 } + defer l.Close() return l.Addr().(*net.TCPAddr).Port } diff --git a/share/session.go b/share/session.go index d47e3e18..b696a553 100644 --- a/share/session.go +++ b/share/session.go @@ -7,15 +7,11 @@ import ( "log" klog "github.com/yaoapp/kun/log" + "github.com/yaoapp/yao/network" "github.com/buraksezer/olric" - "github.com/buraksezer/olric/client" config_olric "github.com/buraksezer/olric/config" - "github.com/buraksezer/olric/serializer" "github.com/yaoapp/gou/session" - "github.com/yaoapp/kun/exception" - "github.com/yaoapp/yao/config" - "github.com/yaoapp/yao/network" ) var sessServer *olric.Olric @@ -23,28 +19,35 @@ var sessServer *olric.Olric // SessionPort Session 端口 var SessionPort int +// SessionMemberPort Session Member Port +var SessionMemberPort int + func init() { SessionPort = network.FreePort() - klog.Trace("session port: %d", SessionPort) + SessionMemberPort = network.FreePort() + klog.Trace("Session port: %d, Memeber Port:", SessionPort, SessionMemberPort) } -// SessionConnect 加载会话信息 -func SessionConnect(conf config.SessionConfig) { +// SessionConnect 加载会话信息 (废弃->共享方案用 Redis 替代) +// func SessionConnect() { - var clientConfig = &client.Config{ - Servers: []string{fmt.Sprintf("%s:%d", "127.0.0.1", SessionPort)}, - Serializer: serializer.NewMsgpackSerializer(), - Client: config_olric.NewClient(), - } +// stats, err := sessServer.Stats() +// fmt.Println(stats, err) - c, err := client.New(clientConfig) - if err != nil { - exception.New("会话服务器连接失败 %s", 500, err.Error()).Throw() - } +// var clientConfig = &client.Config{ +// Servers: []string{fmt.Sprintf("%s:%d", "127.0.0.1", SessionPort)}, +// Serializer: serializer.NewMsgpackSerializer(), +// Client: config_olric.NewClient(), +// } - dm := c.NewDMap("local-session") - session.MemoryUse(session.ClientDMap{DMap: dm}) -} +// c, err := client.New(clientConfig) +// if err != nil { +// exception.New("会话服务器连接失败 %s", 500, err.Error()).Throw() +// } + +// dm := c.NewDMap("local-session") +// session.MemoryUse(session.ClientDMap{DMap: dm}) +// } // SessionServerStop 关闭会话服务器 func SessionServerStop() { @@ -56,6 +59,7 @@ func SessionServerStop() { // SessionServerStart 启动会话服务器 func SessionServerStart() { + // SessionPort := 0 c := &config_olric.Config{ BindAddr: "127.0.0.1", BindPort: SessionPort, @@ -74,9 +78,10 @@ func SessionServerStart() { if err != nil { panic(fmt.Sprintf("unable to create a new memberlist config: %v", err)) } - // m.BindAddr = config.Conf.Session.Host - m.BindPort = SessionPort - m.AdvertisePort = SessionPort + m.BindAddr = "127.0.0.1" + m.BindPort = SessionMemberPort + // m.AdvertiseAddr = "127.0.0.1" + // m.AdvertisePort = SessionPort c.MemberlistConfig = m // c.MemberlistConfig.BindAddr = config.Conf.Session.Host @@ -94,14 +99,15 @@ func SessionServerStart() { } sessServer, err = olric.New(c) - if err != nil { klog.Error("Failed to create Olric instance: %v", err) } go func() { + // fmt.Println("Session Port IS:", SessionPort) // DEBUG err = sessServer.Start() // Call Start at background. It's a blocker call. if err != nil { + fmt.Println(err) klog.Panic("olric.Start returned an error: %v", err) } }()