t-io介绍请见:t-io官网
自问:为什么不是“百万级TCP长连接框架”而是30万了?
自答:t-io目前已经做过的测试中,最多只测到了30万个长连接(见:t-io 30W长连接并发压力测试报告),当测试报告上看,我本人推测出单机可以支持百万级,只是这种推测不是人人能接受的,所以此处改成30万也不妨,懂的人自然能从这个测试报告中体会到t-io单机可以支持多少个长连接!
本次发布要点:不再区分自用版和社区版,全部开源。过去设立自用版的故事,不必再回首,t-io要以愈挫愈勇的心态面对是非和挑衅。
修改列表:
1、org.tio.core.maintain.Groups
增加Comparator,让组内的连接可以排序(用treeset实现的,所以请务必保证ChannelContext对象创建后排序一直保持一致,否则和group解绑时解不掉)
内部实现优化,减少一个map的维护
2、MapWithLockPropSupport内部实现简化
3、org.tio.server.AioServer.stop()优化
4、增加Converter.java
5、Aio.java如下方法增加Converter能力
getPageOfAll()
getPageOfConnecteds()
getPageOfGroup()
6、groupListener.onAfterBind(channelContext, groupid);
7、在一些场景增加集群功能,譬如群组发送、ip发送、user发送等支持集群(原自用版功能)
8、IP拉黑功能(原自用版功能)
9、其它细节优化
最新pom:
<dependency> <groupid>org.t-io</groupid> <artifactid>tio-core</artifactid> <version>3.0.0.v20180520-RELEASE</version> </dependency>
特别提醒:本次新闻允许匿名评论
引用来自“zcy421593”的评论
更专业的角度看,长度+body确实有天生缺陷,就算限制缓冲区长度4k,假设有100W并发, 那么只要每个连接只发4k-1长度,最后一个字节都不发送,那不算收到完整消息,服务端就得保持缓存100W * (4K - 1)的数据,接近400G,可以瞬间把服务器打爆掉。面对客户端前端使用这种协议不科学。另外宣扬100w,30w没任何意义,随便c++搞个epoll,iocp在没有业务的情况下轻轻松松100W并发无压力,关键配上业务呢?数据库跟得上吗?
io往往不是服务器性能的瓶颈,光提高io对整体性能的提高一点用都没有,最终的性能表现是各个服务器组件模块配合得出的最终效果。
引用来自“zcy421593”的评论
更专业的角度看,长度+body确实有天生缺陷,就算限制缓冲区长度4k,假设有100W并发, 那么只要每个连接只发4k-1长度,最后一个字节都不发送,那不算收到完整消息,服务端就得保持缓存100W * (4K - 1)的数据,接近400G,可以瞬间把服务器打爆掉。面对客户端前端使用这种协议不科学。另外宣扬100w,30w没任何意义,随便c++搞个epoll,iocp在没有业务的情况下轻轻松松100W并发无压力,关键配上业务呢?数据库跟得上吗?
io往往不是服务器性能的瓶颈,光提高io对整体性能的提高一点用都没有,最终的性能表现是各个服务器组件模块配合得出的最终效果。
这些测试只针对io,并不涉及到数据库,如果这些只针对io的测试没用,那著名的TFB测试平台也没有存在的意义
引用来自“nullref”的评论
tio宣称自己某某硬件参数指标下达到百万连接数,本人发过专门的质疑分析帖子。结论是,库的作者的测试数据仅供参考。对于服务器端的人来说,长连重来都没有难过。难的是,要在各种复杂的网络环境下保持产品的质量。这远不是tio这种提供Java版tcp库所能达到的。各种产品,需要各自的策略来实现其纷纷不同的业务需求。
tio的作者还没有意识到商业化的库需要什么,商业需求是什么。很难挣钱的。老老实实去找一份工作,业余放GitHub慢慢折腾把。
引用来自“小菜鸡1”的评论
tio好像已经有好多商业项目了吧?至于你回复的这位仁兄,可以参考这个(正文诚不错,评论更精彩):https://www.oschina.net/question/2617937_2243270
引用来自“nullref”的评论
tio宣称自己某某硬件参数指标下达到百万连接数,本人发过专门的质疑分析帖子。结论是,库的作者的测试数据仅供参考。对于服务器端的人来说,长连重来都没有难过。难的是,要在各种复杂的网络环境下保持产品的质量。这远不是tio这种提供Java版tcp库所能达到的。各种产品,需要各自的策略来实现其纷纷不同的业务需求。
tio的作者还没有意识到商业化的库需要什么,商业需求是什么。很难挣钱的。老老实实去找一份工作,业余放GitHub慢慢折腾把。
引用来自“熊猫大侠到此一游”的评论
辛苦了! 这两天正在着手开发一个基于tio的物联网平台。引用来自“湮YM灭”的评论
Maven仓库里的jar 更新不下来???试了好几次都不行引用来自“乐乐杰”的评论
虽然这东西我没用过,但作者开源,就该给赞,做为搞技术的我们,有多少人在码农这条道路过真真创造过什么?又有多少人只是在抄别人的...所以我们要感谢这些真正搞技术的创造者们.....赞了.引用来自“InkFx”的评论
我比较好奇一件事:服务端端口可以只有一个,但是 每一个客户端也得开一个端口。长链接 30W,一台计算机 65000 个端口(假设可以模拟65000个客户端)
楼主想测试 30W 长链接,就得 5 台电脑。【楼主电脑不够了?所以没有到 100W?】
1、你得准备一台服务器和服务器端的代码
2、你得写好一份客户端程序代码用来测试,要保证服务器和客户端的应用层协议适配
3、你要准备好至少5台客户端机,然后装上jvm和客户端程序,默认情况下windows是没有6.5W+端口可以使用的,你得一台一台的配置一下客户端,使之可以使用6.5W+端口
4、好了,接下来你要开始做测试了:你要先开服务器程序,然后在各客户机上一个一个打开测试程序
5、观察各监控数据
好了,接下来,你尝试着去做一下这个测试。PS:客户机如果开6.5W+端口的话,基本上是干不了其它活的了,所以基本别指望你的同事可以兼职给你挂机测试。
我本人以前动用过公司11台机器,每个机器挂16000个端口,一共17.6W个连接,然后我时不时地发个群聊消息(注:我发一条消息,服务器要分发17.6W条消息,因为所有连接都在一个群),中途我的一个运维同事还恶搞过我这个服务器,时不时一口气发了几千群聊(1000 * 17.6W,这概念你自己想)的大消息,服务器除了会内存飙一下,没点事。
小结:有的事,说起来相当简单,但是请你试着照如上步骤去做做,要多少代价和精力
引用来自“远方夕阳”的评论
支持楼主专研精神,不懂装懂,刚愎自用的程序猿太多了,楼主不必在意不过也发现某同学一年前对t-io的质疑到现在都没有动手去验证,这就有点懒了
引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“艾米”的评论
tcp/ip协议帧格式就决定了,当然我指的ipv4,tcp帧里的端口类型是uint16_t,即2的16次方减1个端口,我实在不明白t-io这位大神作者用了何种神功撸出了300K的tcp长连接,注意这哥们号称的长连接,难道是自己用java实现了一套传输协议层?引用来自“talent-tan”的评论
在下对前辈渊博的知识真是佩服得五体投地,甘拜下风!@红薯 家的OSC真人才济济!😄😄😄引用来自“艾米”的评论
好牛逼哦,好怕怕哦。别扯那些没用的,你说你能单机跑300K TCP长连接,linux下你就用netstat -nat|grep -i "port" |wc -l。把port替换成你的测试端口,截图发出来,欢迎打脸。否则请挖个洞钻进去,真特么不嫌丢人引用来自“talent-tan”的评论
别啊,我真的认输了!是真心认输了!@红薯 能帮我撤回这条新闻吗?TCP协议四元组【srcip,srcport,destip,destport】都不知道么,TCP的端口数,最大值确实为65535。但是,这并不代表一个服务器可以接受的连接数就是这个值,很多人之所以把这两个概念搞混淆是因为对socket和port没有更深的认识和理解。服务器“端口号”这个重要的东西,我们只用了一次,就是执行bind的时候,srcip,srcport固定了,接下来就是destip×destport了。
所以30W连接并不是张口乱说,多几台客户端就来了。
引用来自“nullref”的评论
tio宣称自己某某硬件参数指标下达到百万连接数,本人发过专门的质疑分析帖子。结论是,库的作者的测试数据仅供参考。对于服务器端的人来说,长连重来都没有难过。难的是,要在各种复杂的网络环境下保持产品的质量。这远不是tio这种提供Java版tcp库所能达到的。各种产品,需要各自的策略来实现其纷纷不同的业务需求。
tio的作者还没有意识到商业化的库需要什么,商业需求是什么。很难挣钱的。老老实实去找一份工作,业余放GitHub慢慢折腾把。
引用来自“开源中国-首席营养师”的评论
普及一下这个话题的tcp知识。1.机子的端口 65535 个
2.tcp是连接好就保持住的,如果中断,会话结束。
3.作为服务方,监听的端口收到请求后,会“随机”打开本地的另一个端口,为与请求方建立连接
估计楼主想表达可以支持>30万个端使用tcp协议访问。这性能已经非常厉害了。
感谢楼主分享
引用来自“wanghuan5516”的评论
兄弟,3中的会“随机”打开本地的另一个端口
这个说法不太对;
假设你说的对,当要打开第65536个端口的时候,服务端没法打开啊,这时候服务端会咋样?
引用来自“开源中国-首席营养师”的评论
开不了的,一对一的通信,满足不了要报错的。打个比方:你的宽带只有10M,你一秒就发不了10M+一个字节的数据。
引用来自“PublicCMS”的评论
你确定不要去看下书 查下相关知识 继续坚持么引用来自“开源中国-首席营养师”的评论
上干货引用来自“开源中国-首席营养师”的评论
普及一下这个话题的tcp知识。1.机子的端口 65535 个
2.tcp是连接好就保持住的,如果中断,会话结束。
3.作为服务方,监听的端口收到请求后,会“随机”打开本地的另一个端口,为与请求方建立连接
估计楼主想表达可以支持>30万个端使用tcp协议访问。这性能已经非常厉害了。
感谢楼主分享
引用来自“wanghuan5516”的评论
兄弟,3中的会“随机”打开本地的另一个端口
这个说法不太对;
假设你说的对,当要打开第65536个端口的时候,服务端没法打开啊,这时候服务端会咋样?
引用来自“开源中国-首席营养师”的评论
开不了的,一对一的通信,满足不了要报错的。打个比方:你的宽带只有10M,你一秒就发不了10M+一个字节的数据。
引用来自“开源中国-首席营养师”的评论
普及一下这个话题的tcp知识。1.机子的端口 65535 个
2.tcp是连接好就保持住的,如果中断,会话结束。
3.作为服务方,监听的端口收到请求后,会“随机”打开本地的另一个端口,为与请求方建立连接
估计楼主想表达可以支持>30万个端使用tcp协议访问。这性能已经非常厉害了。
感谢楼主分享
引用来自“PublicCMS”的评论
你没分清客户端和服务端 服务端就是只占一个端口 和 多个句柄 客户端才需要申请临时端口 所以需要测试百万链接 需要很多客户端机器引用来自“开源中国-首席营养师”的评论
无论客户端和服务端,都需要。有兴趣去看一下C版本的网络编程。引用来自“开源中国-首席营养师”的评论
普及一下这个话题的tcp知识。1.机子的端口 65535 个
2.tcp是连接好就保持住的,如果中断,会话结束。
3.作为服务方,监听的端口收到请求后,会“随机”打开本地的另一个端口,为与请求方建立连接
估计楼主想表达可以支持>30万个端使用tcp协议访问。这性能已经非常厉害了。
感谢楼主分享
引用来自“placeholder”的评论
官网->文档-> t-io稳定性 -> 3、....用JVirsualVM监控出来的内存和CPU仍十分漂亮。-------------------------------------
笔误,应该是JVisualVM。
引用来自“红薯”的评论
第 100 个评论来了。 tio 的 star 比 j2cache 多,我不服tio的两级缓存已经提供了对j2cache的支持!tio的缓存设计都在:org.tio.utils.cache包中
-------------------------------------
笔误,应该是JVisualVM。
引用来自“l_gang”的评论
这么多人有疑问,作者截个图 可否?引用来自“艾米”的评论
我的锅,理论上是可以实现的,我道歉引用来自“汪纬”的评论
不能怂引用来自“艾米”的评论
我的锅,理论上是可以实现的,我道歉引用来自“艾米”的评论
我的锅,理论上是可以实现的,我道歉引用来自“艾米”的评论
我的锅,理论上是可以实现的,我道歉1.机子的端口 65535 个
2.tcp是连接好就保持住的,如果中断,会话结束。
3.作为服务方,监听的端口收到请求后,会“随机”打开本地的另一个端口,为与请求方建立连接
估计楼主想表达可以支持>30万个端使用tcp协议访问。这性能已经非常厉害了。
感谢楼主分享
引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“艾米”的评论
tcp/ip协议帧格式就决定了,当然我指的ipv4,tcp帧里的端口类型是uint16_t,即2的16次方减1个端口,我实在不明白t-io这位大神作者用了何种神功撸出了300K的tcp长连接,注意这哥们号称的长连接,难道是自己用java实现了一套传输协议层?引用来自“talent-tan”的评论
在下对前辈渊博的知识真是佩服得五体投地,甘拜下风!@红薯 家的OSC真人才济济!😄😄😄引用来自“风中静草”的评论
哦,没看出哪里有问题,虽然端口是有65535个(2的16次方减1个),可是t-io服务端是只要开一个啊,300K个客户端都连接向同一个服务端的同一个端口,这有什么逻辑错误吗?@talent-tan 武兄,你从实招来,为何一个t-io的服务端能撑得住300K+个客户端同时暴虐?这个情况已经超出了部分人的认知范围了😏。
引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“艾米”的评论
tcp/ip协议帧格式就决定了,当然我指的ipv4,tcp帧里的端口类型是uint16_t,即2的16次方减1个端口,我实在不明白t-io这位大神作者用了何种神功撸出了300K的tcp长连接,注意这哥们号称的长连接,难道是自己用java实现了一套传输协议层?引用来自“talent-tan”的评论
在下对前辈渊博的知识真是佩服得五体投地,甘拜下风!@红薯 家的OSC真人才济济!😄😄😄@talent-tan 武兄,你从实招来,为何一个t-io的服务端能撑得住300K+个客户端同时暴虐?这个情况已经超出了部分人的认知范围了😏。
引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“艾米”的评论
tcp/ip协议帧格式就决定了,当然我指的ipv4,tcp帧里的端口类型是uint16_t,即2的16次方减1个端口,我实在不明白t-io这位大神作者用了何种神功撸出了300K的tcp长连接,注意这哥们号称的长连接,难道是自己用java实现了一套传输协议层?引用来自“talent-tan”的评论
在下对前辈渊博的知识真是佩服得五体投地,甘拜下风!@红薯 家的OSC真人才济济!😄😄😄引用来自“艾米”的评论
好牛逼哦,好怕怕哦。别扯那些没用的,你说你能单机跑300K TCP长连接,linux下你就用netstat -nat|grep -i "port" |wc -l。把port替换成你的测试端口,截图发出来,欢迎打脸。否则请挖个洞钻进去,真特么不嫌丢人引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“艾米”的评论
tcp/ip协议帧格式就决定了,当然我指的ipv4,tcp帧里的端口类型是uint16_t,即2的16次方减1个端口,我实在不明白t-io这位大神作者用了何种神功撸出了300K的tcp长连接,注意这哥们号称的长连接,难道是自己用java实现了一套传输协议层?引用来自“talent-tan”的评论
在下对前辈渊博的知识真是佩服得五体投地,甘拜下风!@红薯 家的OSC真人才济济!😄😄😄引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“艾米”的评论
还有从他说只需要一个端口这点来看,可知他的基础知识是多么差,哪怕不知道协议栈的工作原理,起码用socket自己写个简单的echo server吧?引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“艾米”的评论
tcp/ip协议帧格式就决定了,当然我指的ipv4,tcp帧里的端口类型是uint16_t,即2的16次方减1个端口,我实在不明白t-io这位大神作者用了何种神功撸出了300K的tcp长连接,注意这哥们号称的长连接,难道是自己用java实现了一套传输协议层?引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“光的笔记”的评论
没看出这回复有什么问题,还请解释一二引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“艾米”的评论
这位同学,你先别笑,再好好想想你的答案有没有毛病,我也是醉了 😅引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
本来随口一回,答案也没毛病,看到你们的回复,我竟然笑起来了,是我笑点低?引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“开源中国-首席营养师”的评论
这解释我也挻服的,超级NB。引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“梦朝思夕”的评论
回复@talent-tan : 这是我见过的最NB的解释了!引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????而你说的6万几端口,并不是每个客户端连接服务端都要不同的端口号,而是服务端需要开一个端口给外部访问时,有6万几个端口号让人选择。
引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
支持再多的TCP长连接,服务器端只需要一个端口,是一个!引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“梦朝思夕”的评论
咨询一个问题,单机的端口只有65000多个,如何做到30万的长连接????引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“贤狼罗兰斯”的评论
除了连接数之外,还需要考虑服务器收到消息后的任务调度。benchmark应该包括echo,json解析等业务逻辑的测试,以及随着请求数和链接数的增加,服务器的负载能否线性增长。最后,需要客户端统计出响应的最长响应时间,平均响应时间,失败任务数。引用来自“hotsmile”的评论
当连接数到一定量后,负载并不是呈现线性增长的。以我对tio的了解,连接数增加后,主要增加两个方面的代价:一是会增加维护集合的大小(譬如各种Map映射,Set集合),二是会增加监控代价(譬如检测哪些断连哪些超时),其它在aio底层的实现就看jdk的表现了。
为了不引起其它群(尤其是netty交流群)的一些争议,本次把百万级改成30万,不过懂的人依然懂,不理解的人依然不理解的,改一下说法,从我的角度来说只是为了避免无谓的口水战,我内心依然非常相信tio是百万级的。
引用来自“贤狼罗兰斯”的评论
除了连接数之外,还需要考虑服务器收到消息后的任务调度。benchmark应该包括echo,json解析等业务逻辑的测试,以及随着请求数和链接数的增加,服务器的负载能否线性增长。最后,需要客户端统计出响应的最长响应时间,平均响应时间,失败任务数。引用来自“一大三千”的评论
我之前觉得这框架作者缺少严谨的态度,现在能改过来,善莫大焉👍引用来自“talent-tan”的评论
要模拟100万个客户端,是很困难的。所以去年,我参考tio的数据结构模型,在内存中模拟了200万个"ChannelContext",然后进行一些模拟操作,结果也是很OK的。不过模拟毕竟是模拟,不具备太强的说服力,所以干脆把"百万级"改成"30万"了,按群友们的说法:"30万也很OK了,谁会把30万个长连接放在一台服务器上呢"引用来自“dwingo”的评论
十万以上的长连接, 一般的做法是用一个极致高效的C/C++写的前端代理来管理大量连接, 后端java只跟前端代理连接.能达到这种规模的, 服务器不做分布式也说不过去了. 因此不用太担心java能否处理几十上百万连接的问题.
引用来自“土卫十六”的评论
但是除了TCP转发,还有服务器之间的文件同步与数据库同步怎么办?数据同步可以使用Redis这样天然的分布式数据库。。。但是文件同步怎么办,很难处理啊。引用来自“fuygkunlij”的评论
踏踏实实做技术比较好,一看到煽动性的言辞就不敢用了引用来自“轨迹_”的评论
没让你非得用哦,没有点水准和测试能开出来让大家测么?感觉好就用,不好就不用,双向自愿的嘛!😁引用来自“土卫十六”的评论
这个产品是业余在做,还是全职在做呢?能充当大规模文件服务器呢?对I/O调度有所考虑吗?不能只考虑内存数据的使用啊。。。引用来自“一大三千”的评论
我之前觉得这框架作者缺少严谨的态度,现在能改过来,善莫大焉👍引用来自“talent-tan”的评论
要模拟100万个客户端,是很困难的。所以去年,我参考tio的数据结构模型,在内存中模拟了200万个"ChannelContext",然后进行一些模拟操作,结果也是很OK的。不过模拟毕竟是模拟,不具备太强的说服力,所以干脆把"百万级"改成"30万"了,按群友们的说法:"30万也很OK了,谁会把30万个长连接放在一台服务器上呢"引用来自“dwingo”的评论
十万以上的长连接, 一般的做法是用一个极致高效的C/C++写的前端代理来管理大量连接, 后端java只跟前端代理连接.能达到这种规模的, 服务器不做分布式也说不过去了. 因此不用太担心java能否处理几十上百万连接的问题.
引用来自“fuygkunlij”的评论
踏踏实实做技术比较好,一看到煽动性的言辞就不敢用了引用来自“轨迹_”的评论
没让你非得用哦,没有点水准和测试能开出来让大家测么?感觉好就用,不好就不用,双向自愿的嘛!😁引用来自“fuygkunlij”的评论
踏踏实实做技术比较好,一看到煽动性的言辞就不敢用了引用来自“蒋林辉”的评论
做开源实属不易,那些嘴上不饶人的可以自己去试试,还有作为做技术人为什么要和市井小民一样骂骂不休呢,天外有天,人外有人,如果觉得有问题可以指出源码存在的问题,帮助作者改进啊,jdk1.x版本也是多low的一样道理,真心的感谢作者写出这个项目,而且还不计私心的开源出来,等项目忙完会好好研读源码的t-io在很长一段时间内都是不计私心的开源的,不过现在还是有点私心的,主要存在以下几个私心:
1、把t-io做成品牌,服务更多的优质用户,也为自己将来创业打下人脉基础
2、让厌恶t-io的x们继续不喜欢t-io
所以说现在完全没私心,在下愧不敢当!
但t-io开源出来最大的受益者还是广大被TCP长连接应用所困扰的用户,至于本人就算从t-io中获取到了什么物质利益、品牌利益,那也是长期付出顺带的开花结果,不觉得这种通过劳动获得正当报酬有什么不妥!
引用来自“一大三千”的评论
我之前觉得这框架作者缺少严谨的态度,现在能改过来,善莫大焉👍引用来自“talent-tan”的评论
要模拟100万个客户端,是很困难的。所以去年,我参考tio的数据结构模型,在内存中模拟了200万个"ChannelContext",然后进行一些模拟操作,结果也是很OK的。不过模拟毕竟是模拟,不具备太强的说服力,所以干脆把"百万级"改成"30万"了,按群友们的说法:"30万也很OK了,谁会把30万个长连接放在一台服务器上呢"能达到这种规模的, 服务器不做分布式也说不过去了. 因此不用太担心java能否处理几十上百万连接的问题.
引用来自“一大三千”的评论
我之前觉得这框架作者缺少严谨的态度,现在能改过来,善莫大焉👍引用来自“talent-tan”的评论
之所以改口30万,不是因为tio不支持百万级别,而是目前条件限制等因素,并没有测到100万,为了防止部分瓜众说tio玩扛杆,暂时改为30万谢谢大家的支持!
引用来自“PublicCMS”的评论
😓 怎么越来越谦虚了引用来自“talent-tan”的评论
看自问自答引用来自“PublicCMS”的评论
用虚拟ip的方式 测试下百万连接呢引用来自“Javen”的评论
支持,还在研究尝试在游戏中使用...引用来自“JFinal”的评论
tio 牛逼 👍谢谢大家的支持!
引用来自“PublicCMS”的评论
😓 怎么越来越谦虚了引用来自“talent-tan”的评论
看自问自答引用来自“PublicCMS”的评论
😓 怎么越来越谦虚了