dubbo-go
dubbo-go copied to clipboard
使用dubbo-go作为客户端,为什么在连接到zk后,需要等待20s后才能监听到zknode
如标题所述。 客户端:dubbo-go 服务端:线上的java服务(spring) 注册中心:zookeeper
问题: 为什么在连接到zk后,需要等待20s后才能监听到zknode
dubbo服务是一直在线的,在zk上也一直有该node,所以不存在是dubbo服务的问题
日志如下:
2025-05-13 19:03:42 INFO [email protected]/options.go:95 [Config Center] Config center doesn't start
2025-05-13 19:03:42 DEBUG [email protected]/options.go:96 config center doesn't start because Key: 'CenterConfig.Protocol' Error:Field validation for 'Protocol' failed on the 'required' tag,Key: 'CenterConfig.Address' Error:Field validation for 'Address' failed on the 'required' tag
2025-05-13 19:03:42 DEBUG config/provider_config.go:89 Registered provider services are empty
2025-05-13 19:03:42 DEBUG config/consumer_config.go:80 Registered consumer clients are empty
2025-05-13 19:03:42 INFO zookeeper/registry.go:67 [Zookeeper Registry] New zookeeper registry with url map[host:192.168.21.27 port:5181,192.168.21.13 protocol:zookeeper registry:zookeeper registry.group:dubbo registry.id:zookeeper registry.label:true registry.namespace: registry.preferred:false registry.role:0 registry.timeout:3s registry.ttl:15m registry.weight:0 registry.zone: remote-client-name:dubbo.registries-zookeeper-xxx simplified:true timeout:3000]
2025-05-13 19:03:42 INFO zookeeper/client.go:53 [Zookeeper Client] New zookeeper client with name = xxx, zkAddress = xxx, timeout = 5s
2025-05-13 19:03:42 WARN extension/registry_directory.go:60 registry directory zookeeper does not exist, make sure you have import the package, will use the default directory type.
2025-05-13 19:03:42 DEBUG directory/directory.go:83 new RegistryDirectory for service :zookeeper://:@xxxx/?interface=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&group=&version=.
2025-05-13 19:03:42 DEBUG meshrouter/meshrouter.go:50 [Mesh Router] xds wrapped client is not created.
2025-05-13 19:03:42 INFO directory/directory.go:113 Start subscribing for service :dubbo://:@:/?interface=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&group=dubbo&version=1.0.0 with a new go routine.
2025-05-13 19:03:42 INFO zookeeper/listener.go:473 [Zookeeper Listener] listen dubbo path{/dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/providers}
2025/05/13 19:03:42 Connected to 192.168.21.3:5181
2025/05/13 19:03:42 Connected to 192.168.21.3:5181
2025/05/13 19:03:42 Connected to 192.168.21.25:5181
2025/05/13 19:03:42 Authenticated: id=258505821161459640, timeout=4000
2025/05/13 19:03:42 Re-submitting `0` credentials after reconnect
2025/05/13 19:03:42 Authenticated: id=258505821161459641, timeout=4000
2025/05/13 19:03:42 Re-submitting `0` credentials after reconnect
2025/05/13 19:03:42 Authenticated: id=402621009932193890, timeout=5000
2025/05/13 19:03:42 Re-submitting `0` credentials after reconnect
2025-05-13 19:03:42 DEBUG registry/base_registry.go:332 consumer path:/dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/consumers, url:consumer://10.172.23.30/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient?app.version=&application=xxxinsightadmin&async=false&bean.name=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&category=consumers&cluster=failover&config.tracing=&environment=&generic=&group=dubbo&interface=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&keep-alive-interval=&keep-alive-timeout=&loadbalance=&metadata-type=local&module=sample&name=xxxinsightadmin&organization=dubbo-go&owner=dubbo-go&protocol=dubbo&provided-by=&reference.filter=cshutdown®istry.role=0&release=dubbo-golang-3.2.0&retries=3&serialization=hessian2&side=consumer&sticky=false×tamp=1747134222&version=1.0.0
2025-05-13 19:03:42 INFO zookeeper/registry.go:222 [Zookeeper Registry] Registry instance with root = /dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/consumers, node = consumer%3A%2F%2F10.172.23.30%2Fcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%3Fapp.version%3D%26application%3Dxxxinsightadmin%26async%3Dfalse%26bean.name%3Dcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%26category%3Dconsumers%26cluster%3Dfailover%26config.tracing%3D%26environment%3D%26generic%3D%26group%3Ddubbo%26interface%3Dcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%26keep-alive-interval%3D%26keep-alive-timeout%3D%26loadbalance%3D%26metadata-type%3Dlocal%26module%3Dsample%26name%3Dxxxinsightadmin%26organization%3Ddubbo-go%26owner%3Ddubbo-go%26protocol%3Ddubbo%26provided-by%3D%26reference.filter%3Dcshutdown%26registry.role%3D0%26release%3Ddubbo-golang-3.2.0%26retries%3D3%26serialization%3Dhessian2%26side%3Dconsumer%26sticky%3Dfalse%26timestamp%3D1747134222%26version%3D1.0.0
2025-05-13 19:03:42 INFO directory/directory.go:155 register completed successfully for service: dubbo://:@10.172.23.30:/?interface=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&group=dubbo&version=1.0.0
2025-05-13 19:04:02 DEBUG zookeeper/listener.go:206 [Zookeeper Listener] add zkNode{/dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/providers/dubbo%3A%2F%2F192.168.45.91%3A20880%2Fcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%3Fapplication%3Dxxxentwechat%26cloudProvider%3Dlcp%26deprecated%3Dfalse%26dubbo%3D2.0.2%26group%3Ddubbo%26release%3D2.7.4.1-lkpatch6%26timeout%3D150000%26timestamp%3D1747130617290%26version%3D1.0.0}
2025-05-13 19:04:02 DEBUG zookeeper/listener.go:206 [Zookeeper Listener] add zkNode{/dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/providers/dubbo%3A%2F%2F192.168.46.197%3A20880%2Fcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%3Fapplication%3Dxxxentwechat%26cloudProvider%3Dlcp%26deprecated%3Dfalse%26dubbo%3D2.0.2%26grayTag%3Dchannel-test03-1%26group%3Ddubbo%26release%3D2.7.4.1-lkpatch6%26timeout%3D150000%26timestamp%3D1746945901976%26version%3D1.0.0}
2025-05-13 19:04:02 DEBUG zookeeper/listener.go:226 handleZkNodeEvent->listenSelf(zk path{/dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/providers/dubbo%3A%2F%2F192.168.45.91%3A20880%2Fcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%3Fapplication%3Dxxxentwechat%26cloudProvider%3Dlcp%26deprecated%3Dfalse%26dubbo%3D2.0.2%26group%3Ddubbo%26release%3D2.7.4.1-lkpatch6%26timeout%3D150000%26timestamp%3D1747130617290%26version%3D1.0.0}) goroutine exit now
2025-05-13 19:04:02 DEBUG zookeeper/listener.go:162 got zk event ConfigChangeEvent{key = /dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/providers/dubbo%3A%2F%2F192.168.45.91%3A20880%2Fcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%3Fapplication%3Dxxxentwechat%26cloudProvider%3Dlcp%26deprecated%3Dfalse%26dubbo%3D2.0.2%26group%3Ddubbo%26release%3D2.7.4.1-lkpatch6%26timeout%3D150000%26timestamp%3D1747130617290%26version%3D1.0.0 , value = dubbo://192.168.45.91:20880/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient?application=xxxentwechat&cloudProvider=lcp&deprecated=false&dubbo=2.0.2&group=dubbo&release=2.7.4.1-lkpatch6&timeout=150000×tamp=1747130617290&version=1.0.0 , changeType = add}
2025-05-13 19:04:02 DEBUG registry/base_registry.go:370 [Registry] update begin, service event: ServiceEvent{Action{add}, Path{dubbo://192.168.45.91:20880/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient?application=xxxentwechat&cloudProvider=lcp&deprecated=false&dubbo=2.0.2&group=dubbo&release=2.7.4.1-lkpatch6&timeout=150000×tamp=1747130617290&version=1.0.0}, Key{}}
2025-05-13 19:04:02 DEBUG directory/directory.go:182 refresh invokers with ServiceEvent{Action{add}, Path{dubbo://192.168.45.91:20880/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient?application=xxxentwechat&cloudProvider=lcp&deprecated=false&dubbo=2.0.2&group=dubbo&release=2.7.4.1-lkpatch6&timeout=150000×tamp=1747130617290&version=1.0.0}, Key{}}
2025-05-13 19:04:02 INFO directory/directory.go:305 [Registry Directory] selector add service url{dubbo://192.168.45.91:20880/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient?application=xxxentwechat&cloudProvider=lcp&deprecated=false&dubbo=2.0.2&group=dubbo&release=2.7.4.1-lkpatch6&timeout=150000×tamp=1747130617290&version=1.0.0}
2025-05-13 19:04:02 DEBUG directory/directory.go:438 service will be added in cache invokers: invokers url is dubbo://192.168.45.91:20880/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient?app.version=&application=xxxentwechat&async=false&bean.name=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&category=consumers&cloudProvider=lcp&cluster=failover&config.tracing=&deprecated=false&dubbo=2.0.2&environment=&generic=&group=dubbo&interface=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&keep-alive-interval=&keep-alive-timeout=&loadbalance=&metadata-type=local&module=sample&name=xxxinsightadmin&organization=dubbo-go&owner=dubbo-go&provided-by=&reference.filter=cshutdown®istry.role=0®istry.ttl=15m&release=2.7.4.1-lkpatch6&retries=3&serialization=hessian2&side=consumer&sticky=false&timeout=3s×tamp=1747130617290&version=1.0.0!
2025-05-13 19:04:02 INFO getty/getty_client.go:74 use default getty client config
2025-05-13 19:04:02 DEBUG getty/pool.go:169 client new session:session {client:TCP_CLIENT:1:10.172.23.30:54352<->192.168.45.91:20880}, Read Bytes: 0, Write Bytes: 0, Read Pkgs: 0, Write Pkgs: 0
2025-05-13 19:04:02 DEBUG getty/pool.go:188 add session{session {client:TCP_CLIENT:1:10.172.23.30:54352<->192.168.45.91:20880}, Read Bytes: 0, Write Bytes: 0, Read Pkgs: 0, Write Pkgs: 0}
2025-05-13 19:04:02 DEBUG zookeeper/listener.go:226 handleZkNodeEvent->listenSelf(zk path{/dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/providers/dubbo%3A%2F%2F192.168.46.197%3A20880%2Fcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%3Fapplication%3Dxxxentwechat%26cloudProvider%3Dlcp%26deprecated%3Dfalse%26dubbo%3D2.0.2%26grayTag%3Dchannel-test03-1%26group%3Ddubbo%26release%3D2.7.4.1-lkpatch6%26timeout%3D150000%26timestamp%3D1746945901976%26version%3D1.0.0}) goroutine exit now
2025-05-13 19:04:02 DEBUG getty/pool.go:98 client init ok
2025-05-13 19:04:02 INFO dubbo/dubbo_protocol.go:99 [DUBBO Protocol] Refer service: dubbo://192.168.45.91:20880/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient?app.version=&application=xxxentwechat&async=false&bean.name=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&category=consumers&cloudProvider=lcp&cluster=failover&config.tracing=&deprecated=false&dubbo=2.0.2&environment=&generic=&group=dubbo&interface=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&keep-alive-interval=&keep-alive-timeout=&loadbalance=&metadata-type=local&module=sample&name=xxxinsightadmin&organization=dubbo-go&owner=dubbo-go&provided-by=&reference.filter=cshutdown®istry.role=0®istry.ttl=15m&release=2.7.4.1-lkpatch6&retries=3&serialization=hessian2&side=consumer&sticky=false&timeout=3s×tamp=1747130617290&version=1.0.0
2025-05-13 19:04:02 DEBUG protocolwrapper/protocol_filter_wrapper.go:97 [BuildInvokerChain] The consumer filters are cshutdown -> proxyInvoker, invoker: invoker{protocol: dubbo, host: 192.168.45.91:20880, path: /com.xxx.qywx.rpc.udubbo.WxUserRemoteClient}
2025-05-13 19:04:02 INFO tag/router.go:87 Config center does not start, Tag router will not be enabled
2025-05-13 19:04:02 INFO condition/dynamic_router.go:301 Config center does not start, Condition router will not be enabled
2025-05-13 19:04:02 INFO condition/dynamic_router.go:354 Config center does not start, Condition router will not be enabled
可以看到在2025-05-13 19:03:42注册成功后
2025-05-13 19:03:42 INFO directory/directory.go:155 register completed successfully for service: dubbo://:@10.172.23.30:/?interface=com.xxx.qywx.rpc.udubbo.WxUserRemoteClient&group=dubbo&version=1.0.0
在2025-05-13 19:04:02 才监听到zknode
2025-05-13 19:04:02 DEBUG zookeeper/listener.go:206 [Zookeeper Listener] add zkNode{/dubbo/com.xxx.qywx.rpc.udubbo.WxUserRemoteClient/providers/dubbo%3A%2F%2F192.168.45.91%3A20880%2Fcom.xxx.qywx.rpc.udubbo.WxUserRemoteClient%3Fapplication%3Dxxxentwechat%26cloudProvider%3Dlcp%26deprecated%3Dfalse%26dubbo%3D2.0.2%26group%3Ddubbo%26release%3D2.7.4.1-lkpatch6%26timeout%3D150000%26timestamp%3D1747130617290%26version%3D1.0.0}
dubbo client代码如下:
// Register POJOs for serialization
hessian.RegisterPOJO(&WxUserQuery{})
hessian.RegisterPOJO(&CommonResult{})
hessian.RegisterPOJO(&WxUserResultData{})
hessian.RegisterPOJO(&WxUserInfo{})
// Create Dubbo instance
instance, err := dubbo.NewInstance(
dubbo.WithName("luckyinsightadmin"),
dubbo.WithRegistry(
registry.WithZookeeper(),
registry.WithAddress(zkAddress),
registry.WithGroup("dubbo"),
registry.WithSimplified(),
registry.WithRegisterInterface(),
registry.WithTimeout(timeout),
registry.WithParams(map[string]string{"timeout": "3000"}),
),
dubbo.WithLogger(logger.WithLevel("debug")),
dubbo.WithGroup("dubbo"),
)
if err != nil {
return nil, fmt.Errorf("failed to create dubbo instance: %w", err)
}
// Create Dubbo client
cli, err := instance.NewClient()
if err != nil {
return nil, fmt.Errorf("failed to create dubbo client: %w", err)
}
conn, err := cli.DialWithInfo(
interfaceName,
&client.ClientInfo{
InterfaceName: interfaceName,
MethodNames: methodNames,
ConnectionInjectFunc: func(dubboCliRaw interface{}, conn *client.Connection) {
fmt.Println("========================================ConnectionInjectFunc", dubboCliRaw, conn)
},
},
client.WithRetries(3),
client.WithProtocol("dubbo"),
client.WithSerialization("hessian2"),
client.WithGroup("dubbo"),
client.WithVersion("1.0.0"),
client.WithParams(map[string]string{"category": "consumers"}),
)
辛苦大佬们帮忙看看
我们正在跟进这个问题,PR将会在最近提 @1kasa