注册中心使用zookeeper集群方式时,服务无法正常注册到注册中心
日志信息如下:
Log file created at: 2019/04/17 16:05:36
Running on machine: noone
Binary: Built with gc go1.12.4 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
E0417 16:05:36.055643 12645 motan.go:282] [ZkRegistry] connect server error. err:lookup : no such host
Log file created at: 2019/04/17 16:05:57
Running on machine: noone
Binary: Built with gc go1.12.4 for linux/amd64
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
执行 go run client.go 时有如下输出:
start parse config path:./../conf/motan-client.yaml
load mybasicRefer configuration success. url: motan2://:0/cn.interfaces.rpc.MotanDemoService?group=motan-demo-rpc
use log dir:./clientlogs
motan call fail! err:No referers for request, RequestID: 0, Request info: map[M_g:motan-demo-rpc M_mdu: M_p:cn.interfaces.rpc.MotanDemoService M_s:client-test M_v:]
zookeeper 集群是使用 docker 搭建的,同样情况下我使用 Java 则不存在这个问题,基本可以排除 zookeeper 集群的问题。
<!-- java: motan-server.xml -->
<motan:registry regProtocol="zookeeper" name="my_zookeeper" address="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"/>
另外当 zk-registry 中配置 host 和 port 为任意一个 zookeeper 节点时,都可以正常运行
motan-registry:
zk-registry:
protocol: zookeeper
host: 127.0.0.1
port: 2181
registrySessionTimeout: 10000
请问一下,这个可能是什么原因引起的?
具体配置如下:
#config fo server
motan-server:
log_dir: "./serverlogs"
application: "server-test"
#config of registries
motan-registry:
zk-registry:
protocol: zookeeper
address: "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
registrySessionTimeout: 10000
#conf of basic service
motan-basicService:
mybasicService:
application: "server-test"
group: motan-demo-rpc
protocol: motan2
registry: zk-registry
haStrategy: failover
loadbalance: roundrobin
serialization: simple
nodeType: server
#conf of services
motan-service:
mytest-demo:
path: cn.interfaces.rpc.MotanDemoService
basicService: mybasicService
ref : "main.MotanDemoService"
export: "motan2:8009"
#config fo client
motan-client:
log_dir: "./clientlogs"
application: "client-test"
#config of registries
motan-registry:
zk-registry:
protocol: zookeeper
address: "127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
registrySessionTimeout: 10000
#conf of basic refers
motan-basicRefer:
mybasicRefer:
application: "client-test"
group: motan-demo-rpc
protocol: motan2
registry: zk-registry
requestTimeout: 1000
haStrategy: failover
loadbalance: roundrobin
serialization: simple
retries: 1
#conf of refers
motan-refer:
mytest-demo:
path: cn.interfaces.rpc.MotanDemoService
basicRefer: mybasicRefer
代码如下:
package main
import (
"fmt"
"time"
"github.com/weibocom/motan-go"
)
func main() {
runServer()
}
func runServer() {
mscontext := motan.GetMotanServerContext("./../conf/motan-server.yaml")
mscontext.RegisterService(&MotanDemoService{}, "")
mscontext.Start(nil)
mscontext.ServicesAvailable() //注册服务后,默认并不提供服务,调用此方法后才会正式提供服务。需要根据实际使用场景决定提供服务的时机。作用与java版本中的服务端心跳开关一致。
time.Sleep(time.Second * 50000000)
}
type MotanDemoService struct{}
func (m *MotanDemoService) Hello(name string) string {
fmt.Printf("MotanDemoService hello:%s\n", name)
return "hello " + name
}
package main
import (
"fmt"
"github.com/weibocom/motan-go"
)
func main() {
runClient()
}
func runClient() {
mccontext := motan.GetClientContext("./../conf/motan-client.yaml")
mccontext.Start(nil)
var reply string
mclient := mccontext.GetClient("mytest-demo")
err := mclient.Call("hello", []interface{}{"Golang"}, &reply)
if err != nil {
fmt.Printf("motan call fail! err:%v\n", err)
} else {
fmt.Printf("motan call success! reply:%s\n", reply)
}
}
注册中心使用
zookeeper集群方式时,服务无法正常注册到注册中心日志信息如下:
server.ERRORclient.ERROR执行
go run client.go时有如下输出:zookeeper集群是使用docker搭建的,同样情况下我使用Java则不存在这个问题,基本可以排除zookeeper集群的问题。另外当
zk-registry中配置host和port为任意一个zookeeper节点时,都可以正常运行请问一下,这个可能是什么原因引起的?
具体配置如下:
motan-server.yamlmotan-client.yaml代码如下:
server.goclient.go