一个java 程序,通过socket连接50个机器,有50个受信处理线程,50台机器每10ms发送给java程序一个消息,然后java程序保存到数据库。想问 
    用java开发是否能满足性能。有啥缺点?java 这样实现,比c语言效率差多少?

解决方案 »

  1.   

    java完全可以满足需求,我们的java程序单机有上万的QPS,使用的是Netty网络框架。但是如果你要把性能发展的极致,不要在处理网络连接的线程中操作数据库,你可以把需要保存的数据放到队列中,然后由专门负责处理数据库的线程来处理。c语言肯定比java效率高,但是如果你业务逻辑不复杂的话,瓶颈不是在语言上,是在网络层,和数据库层,和这些比语言的性能差距忽略不计。
      

  2.   


    我们公司一台服务器, 一个java写的采集程序 一个端口可以接 40000个TCP长连接请求, 
    我们一台服务器最多安装 20个端口, 也就是接入 100万TCP长连接请求, 一个长连接一个终端设备. 所以楼主说的不存在任何问题.
    就是我随意写个程序, 也能接入几千个终端.
    着急是你代码中的处理效率, 与java性能关系不大(在这个以内存不限的年代, C的性能并不一定比得过java)
      

  3.   

    提示, 我们用java写的程序最多的接入过一个省的设备: 1800万台, 用了10台一体机服务器, 每台是 300多G内存. 目前正在运行.
      

  4.   

    就象一楼说明, 开发语言根本没有性能问题,  有性能问题的是自己代码的质量, 写数据库的速度, 数据库的性能才是最大的问题! 关键业务都是慢能数据库. 
    我们采取的办法是: 1800万能设备的数据, 收到之后解释成明文, 直接存储在 txt文件里, 每个文件最大5M, 最多5万条记录, 缓存最长2分钟.
    也就是说: >5M 保存文件, 后面的写新文件
    >5万行, 保存文件, 后面的写新文件
    > 2分钟, 保存文件, 后面的写新文件写文件的速度才是最快的保存数据方式, 而且多线程可以多文件, 不冲突, 就看你硬盘速度多快了!!
    然后用专用的文件处理工具, 把文件一行行入库, 这样采集程序就不会受好数据库的限制, 最大的发挥处理速度. 
      

  5.   

    这点小任务量都不是事,并且还有成熟的框架支持,比如Mina---------------------PS:如果觉得我的分享不错,欢迎大家随手点赞~
    我有一个微信公众号,经常会分享一些Java技术相关的干货;如果你喜欢我的分享,可以用微信搜索“Java知己”关注。发送“1024”可以领取30本经典开发书籍,与10万程序员一起进步。