dubbo-go icon indicating copy to clipboard operation
dubbo-go copied to clipboard

使用dubbo-go作为客户端,为什么在连接到zk后,需要等待20s后才能监听到zknode

Open Ashion opened this issue 8 months ago • 1 comments

如标题所述。 客户端: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&registry.role=0&release=dubbo-golang-3.2.0&retries=3&serialization=hessian2&side=consumer&sticky=false&timestamp=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&timestamp=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&timestamp=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&timestamp=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&timestamp=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&registry.role=0&registry.ttl=15m&release=2.7.4.1-lkpatch6&retries=3&serialization=hessian2&side=consumer&sticky=false&timeout=3s&timestamp=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&registry.role=0&registry.ttl=15m&release=2.7.4.1-lkpatch6&retries=3&serialization=hessian2&side=consumer&sticky=false&timeout=3s&timestamp=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"}),
	)

辛苦大佬们帮忙看看

Ashion avatar May 13 '25 11:05 Ashion

我们正在跟进这个问题,PR将会在最近提 @1kasa

No-SilverBullet avatar Jun 15 '25 12:06 No-SilverBullet