Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dubbo之长连接 #2733

Closed
ghost opened this issue Nov 5, 2018 · 23 comments
Closed

dubbo之长连接 #2733

ghost opened this issue Nov 5, 2018 · 23 comments

Comments

@ghost
Copy link

ghost commented Nov 5, 2018

我看见网上说dubbo客户端和服务端基于长连接,那是当我客户端和服务端都开着的时候,服务端数据改变的时候,客户端并没有自动变化啊,那这个长连接到底是怎么回事,还需要配置什么文件吗

@AnyOSR
Copy link

AnyOSR commented Nov 5, 2018

服务端数据改变是什么意思?provider宕机?注册中心用的什么?长连接就是会建立一个tcp连接。假如用的是zk的话,得等一会儿才会感知到provider的宕机

@carryxyh
Copy link
Member

carryxyh commented Nov 5, 2018

@BellaJiangxia
你好,之前你提交过一个issue,包括这个issue在内,其实跟dubbo都毫无关系。长连接指的就是tcp链接,你如果想要知道长连接定义,那建议你先去看一下tcp连接的相关知识,如果你想知道dubbo的长连接机制,那么建议你先去看一下Netty的相关知识点。

@carryxyh carryxyh closed this as completed Nov 5, 2018
@ghost
Copy link
Author

ghost commented Nov 5, 2018

yw 7kqt30 yq ad58tf 8v4,就比如我服务端提供了这个方法,服务端启动,客户端启动调用那个方法,得到这个数据,
r n gesb8yai ijc 42
然后服务端方法改变成
l4cg6 jjb m d jq 2u6 f
客户端会自动变化吗

@carryxyh
Copy link
Member

carryxyh commented Nov 5, 2018

重启服务端后会,不重启不会。
请自己尝试一下。

@ghost
Copy link
Author

ghost commented Nov 5, 2018

嗯,重启后是可以,但是这样还是长连接吗

@carryxyh
Copy link
Member

carryxyh commented Nov 5, 2018

请先去了解一下tcp协议和netty。

@AnyOSR
Copy link

AnyOSR commented Nov 5, 2018

当你服务端export的时候,class文件已经被加载,你服务端的被代理的bean已经生成了,你这时候再改变服务端的代码也没用啊。只是看起来改变了而已。和长连接没有什么关系

@ghost
Copy link
Author

ghost commented Nov 5, 2018

那到底应该怎么做才能实现长连接呢

@web1992
Copy link
Contributor

web1992 commented Nov 5, 2018

@BellaJiangxia 你怎么这么可爱
长连接是协议层的东西,建议请先学习下tcp/ip 协议

@superleo-cn
Copy link

superleo-cn commented Nov 5, 2018 via email

@ghost
Copy link
Author

ghost commented Nov 5, 2018

是要用心跳包来维持长连接吗

@ghost
Copy link
Author

ghost commented Nov 5, 2018

需要写socket来维持心跳吗

@ghost
Copy link
Author

ghost commented Nov 6, 2018

那就是动态加载吧

@ghost
Copy link
Author

ghost commented Nov 6, 2018

那这个动态加载有办法实现吗

@hulog
Copy link

hulog commented Nov 7, 2018

我觉得 @AnyOSR 已经回答的非常到位了,你现在是概念没有分清,服务端改动代码了势必要重新加载类,这个跟长连接半毛钱关系没有,等你真的需要动态加载了,你可以自己去修改dubbo源码动态绑定bean,这个是高阶玩法。

@cvictory
Copy link
Contributor

cvictory commented Nov 7, 2018 via email

@sweihub
Copy link

sweihub commented Feb 18, 2019

我们有大约40个基于Dubbo的微服务,一启动就建立了超过4万条TCP连接,给系统带来严重的问题,谁的更好的办法可以直接降低TCP连接数?(各种参数已设置过accepts/connections等等)另外,Dubbo这种长连接设计是否值得讨论,异步TCP连接如果高效使用,一条TCP连接都可以跑满带宽,这么多长连接必要性何在?

@tswstarplanet
Copy link
Contributor

@weisunding Excuse me, How do you get the conclusion "40 thousands tcp long connections" ?

@sweihub
Copy link

sweihub commented Feb 18, 2019

@tswstarplanet We have about 40 microservices based on Dubbo (providers and consumes), when bring them up, we monitored about 40,000 TCP connections established by using Linux netstat/ss command. We tried to reduced the accepts/connections parameters, but ended up with dubbo connection failure/timeout etc.

@Johnson-Jia
Copy link

@sweihub 请问,找到问题原因了吗? 我这边也遇到这个问题了,三十个服务左右,全部启动后占用Linux 线程 三万多

@sweihub
Copy link

sweihub commented Dec 23, 2020

没找到原因,也没有得到官方修复,已经放弃dubbo ,逐步迁移到spring cloud。

@Johnson-Jia
Copy link

@sweihub 找到原因了 这个问题引起的 #6988

@sweihub
Copy link

sweihub commented Dec 24, 2020

牛X,官方貌似都不维护了。这么一个严重大Bug两年多都没人响应。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants