Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
kevwan authored Feb 17, 2021
1 parent 38abfb8 commit 9602494
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 60 deletions.
38 changes: 36 additions & 2 deletions zrpc/internal/rpcpubserver.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
package internal

import "github.com/tal-tech/go-zero/core/discov"
import (
"os"
"strings"

"github.com/tal-tech/go-zero/core/discov"
"github.com/tal-tech/go-zero/core/netx"
)

const (
allEths = "0.0.0.0"
envPodIp = "POD_IP"
)

func NewRpcPubServer(etcdEndpoints []string, etcdKey, listenOn string, opts ...ServerOption) (Server, error) {
registerEtcd := func() error {
pubClient := discov.NewPublisher(etcdEndpoints, etcdKey, listenOn)
pubListenOn := figureOutListenOn(listenOn)
pubClient := discov.NewPublisher(etcdEndpoints, etcdKey, pubListenOn)
return pubClient.KeepAlive()
}
server := keepAliveServer{
Expand All @@ -27,3 +39,25 @@ func (ags keepAliveServer) Start(fn RegisterFn) error {

return ags.Server.Start(fn)
}

func figureOutListenOn(listenOn string) string {
fields := strings.Split(listenOn, ":")
if len(fields) == 0 {
return listenOn
}

host := fields[0]
if len(host) > 0 && host != allEths {
return listenOn
}

ip := os.Getenv(envPodIp)
if len(ip) == 0 {
ip = netx.InternalIp()
}
if len(ip) == 0 {
return listenOn
}

return strings.Join(append([]string{ip}, fields[1:]...), ":")
}
33 changes: 33 additions & 0 deletions zrpc/internal/rpcpubserver_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package internal

import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/tal-tech/go-zero/core/netx"
)

func TestFigureOutListenOn(t *testing.T) {
tests := []struct {
input string
expect string
}{
{
input: "192.168.0.5:1234",
expect: "192.168.0.5:1234",
},
{
input: "0.0.0.0:8080",
expect: netx.InternalIp() + ":8080",
},
{
input: ":8080",
expect: netx.InternalIp() + ":8080",
},
}

for _, test := range tests {
val := figureOutListenOn(test.input)
assert.Equal(t, test.expect, val)
}
}
33 changes: 1 addition & 32 deletions zrpc/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,17 @@ package zrpc

import (
"log"
"os"
"strings"
"time"

"github.com/tal-tech/go-zero/core/load"
"github.com/tal-tech/go-zero/core/logx"
"github.com/tal-tech/go-zero/core/netx"
"github.com/tal-tech/go-zero/core/stat"
"github.com/tal-tech/go-zero/zrpc/internal"
"github.com/tal-tech/go-zero/zrpc/internal/auth"
"github.com/tal-tech/go-zero/zrpc/internal/serverinterceptors"
"google.golang.org/grpc"
)

const (
allEths = "0.0.0.0"
envPodIp = "POD_IP"
)

type RpcServer struct {
server internal.Server
register internal.RegisterFn
Expand All @@ -44,8 +36,7 @@ func NewServer(c RpcServerConf, register internal.RegisterFn) (*RpcServer, error
var server internal.Server
metrics := stat.NewMetrics(c.ListenOn)
if c.HasEtcd() {
listenOn := figureOutListenOn(c.ListenOn)
server, err = internal.NewRpcPubServer(c.Etcd.Hosts, c.Etcd.Key, listenOn, internal.WithMetrics(metrics))
server, err = internal.NewRpcPubServer(c.Etcd.Hosts, c.Etcd.Key, c.ListenOn, internal.WithMetrics(metrics))
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -92,28 +83,6 @@ func (rs *RpcServer) Stop() {
logx.Close()
}

func figureOutListenOn(listenOn string) string {
fields := strings.Split(listenOn, ":")
if len(fields) == 0 {
return listenOn
}

host := fields[0]
if len(host) > 0 && host != allEths {
return listenOn
}

ip := os.Getenv(envPodIp)
if len(ip) == 0 {
ip = netx.InternalIp()
}
if len(ip) == 0 {
return listenOn
}

return strings.Join(append([]string{ip}, fields[1:]...), ":")
}

func setupInterceptors(server internal.Server, c RpcServerConf, metrics *stat.Metrics) error {
if c.CpuThreshold > 0 {
shedder := load.NewAdaptiveShedder(load.WithCpuThreshold(c.CpuThreshold))
Expand Down
26 changes: 0 additions & 26 deletions zrpc/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/tal-tech/go-zero/core/discov"
"github.com/tal-tech/go-zero/core/logx"
"github.com/tal-tech/go-zero/core/netx"
"github.com/tal-tech/go-zero/core/service"
"github.com/tal-tech/go-zero/core/stat"
"github.com/tal-tech/go-zero/core/stores/redis"
Expand All @@ -16,31 +15,6 @@ import (
"google.golang.org/grpc"
)

func TestFigureOutListenOn(t *testing.T) {
tests := []struct {
input string
expect string
}{
{
input: "192.168.0.5:1234",
expect: "192.168.0.5:1234",
},
{
input: "0.0.0.0:8080",
expect: netx.InternalIp() + ":8080",
},
{
input: ":8080",
expect: netx.InternalIp() + ":8080",
},
}

for _, test := range tests {
val := figureOutListenOn(test.input)
assert.Equal(t, test.expect, val)
}
}

func TestServer_setupInterceptors(t *testing.T) {
server := new(mockedServer)
err := setupInterceptors(server, RpcServerConf{
Expand Down

0 comments on commit 9602494

Please sign in to comment.