起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > smart-socket是否会替代Netty成为最流行的框架

smart-socket是否会替代Netty成为最流行的框架

时间:2018-01-08 12:03:37来源:编程网 作者:IT培训网 已有: 名学员访问该课程

  快捷搜索:Nettysmart-socket

前言:Netty,当前最流行的NIO框架,通信领域开发的不二之选。经过多年的发展,已在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。

2018年什么样的框架最流行,是Netty还是smart-socket呢,作为开发者你该如何选择呢?

Netty,当前最流行的NIO框架,通信领域开发的不二之选。经过多年的发展,已在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。

再见,Netty!你好,smart-socket!

smart-socket是否会替代Netty成为最流行的框架_www.epx365.cn

再见,Netty

Netty,当前最流行的NIO框架,通信领域开发的不二之选。经过多年的发展,已在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源组件也基于Netty的NIO框架构建。目前市面上几乎找不到同类型可以与之媲美的通信框架,但是作为通信技术的爱好者,却向来无法对其产生亲近感。

我并不否认Netty的确是一款优秀的框架,曾经我也自己写过NIO框架,深知其实现难度有多大,最终选择了放弃。Netty的出现为广大程序员提供了便利,大大降低了开发高效、稳定服务的难度。至于本人对其无好感,究其原因有以下几点(首先申明一下,本人仅曾经简单使用过netty,并未深入研究):

  • 复杂;以下代码摘录自Netty官网,初看代码,应该大部分人对于run方法比较费解。EventLoopGroup是干嘛的?bossGroup和workerGroup是什么关系?childHandle入参如此复杂!ch.pipeline().addLast(new DiscardServerHandler())实现的是什么功能?等等...。总之,这一个方法会引发你诸多疑惑。

public class DiscardServer {          private int port;          public DiscardServer(int port) {         this.port = port;     }          public void run() throws Exception {         EventLoopGroup bossGroup = new NioEventLoopGroup(); // (1)         EventLoopGroup workerGroup = new NioEventLoopGroup();         try {             ServerBootstrap b = new ServerBootstrap(); // (2)             b.group(bossGroup, workerGroup)              .channel(NioServerSocketChannel.class) // (3)              .childHandler(new ChannelInitializer() { // (4)                  @Override                  public void initChannel(SocketChannel ch) throws Exception {                      ch.pipeline().addLast(new DiscardServerHandler());                  }              })              .option(ChannelOption.SO_BACKLOG, 128)          // (5)              .childOption(ChannelOption.SO_KEEPALIVE, true); // (6)                  // Bind and start to accept incoming connections.             ChannelFuture f = b.bind(port).sync(); // (7)                  // Wait until the server socket is closed.             // In this example, this does not happen, but you can do that to gracefully             // shut down your server.             f.channel().closeFuture().sync();         } finally {             workerGroup.shutdownGracefully();             bossGroup.shutdownGracefully();         }     }          public static void main(String[] args) throws Exception {         int port;         if (args.length > 0) {             port = Integer.parseInt(args[0]);         } else {             port = 8080;         }         new DiscardServer(port).run();     } }
  • 臃肿;下载Netty源码后,你会看到它的工程里有二十几个模块。发展了这么多年,它已然成了一个庞然大物。再加上其高深的设计哲学,以致于吾等凡夫俗子难以通过阅读源码领悟其精髓。

  • 面试必问;有过几年工作经历后再去面试,基本都会遭遇被问及Netty相关问题的情况。似乎没用过Netty你就不是一个合格的程序猿,不懂Netty线程模型就要给你的技术能力打上一个问号。亲身经历,不爽!也不屑去背网上那些相关的理论,不务实。

  • Netty解决了人们工作上的困扰,但同时它也限制了很多Java开发人员的技术成长。有些同学花费几十元RMB购买Netty相关的书籍,可无论书读的有多么透彻,也只是茶余饭后与同行有一些谈资,又不能让你也有能力写一个Netty出来。

Netty是一条横跨在你与通信领域之间的河,你可以远观河对岸的景色,却无法近距离感受其魅力。结合对Netty的个人成见,是时候跟Netty说再见了,或者说回头见。工作中可以采用Netty,出于学习目的则可以考虑一下本文的主角:smart-socket。

你好,smart-socket

这也是一款通信框架,而且是一款没有资格与Netty相提并论的国产开源项目,至少现阶段是如此。smart-socket是学习的产物,是作者在学习AIO过程中逐渐优化改进而成。本文的目的也是希望可以把smart-socket介绍给大家,让大家了解到有那么一波人,不安于已有的优质解决方案,致力于通过重复造轮子的形式,为这个开源社区注入新鲜血液。

Java于1.7版本提供了AIO通信API,Netty曾经也发布过AIO版,但最终还是选择了放弃,据说是由于性能改善并不显著。但通过开发smart-socket,本人有一点愚见。Java AIO已经将Socket编程门槛降到了一个非常低的程度。只要该技术点得到普及,会有很多AIO框架如雨后春笋般冒出来,有点技术能力的朋友都可以开发一套属于自己的通信框架。而Netty基于AIO的实现方案,相当于革了自己的命,在NIO上实现异步非阻塞通信并达到目前这种成就所付出的成本不言而喻,但AIO却让这一切来得非常低廉,致使Netty陷入了进退两难的局面,总不好舍弃过去在NIO模式上的付出吧。纯属个人YY,不喜勿喷,哈哈。

smart-socket经历了五个月的发展,并在开源中国平台上发布了四个版本,始终秉持着极简、易用、高性能的原则。项目可从码云中下载:smart-socket,欢迎各位下载。接下来正式开始王婆卖瓜,自卖自夸。

  • 极简
    何为“简”,代码量少即为“简”。smart-socket初期的实现仅用了11个文件,514行代码。这样的一款框架应该极具吸引力了吧,意味着你只要理解这514行代码,就可以彻底掌握AIO技术。不过随后的版本中增加了一些辅助编解码的工具类,导致代码量有所增加,但还是不到800行。

  • 易用
    何为“易”,学之轻松,使之便捷即为“易”。smart-socket只需熟悉三个接口(Filter、MessageProcessor、Protocol),三个类(AioSession、AioQuickServer、AioQuickClient)即可玩转Socket。

  • 高性能
    参见《每秒处理 500W 条消息,人、机为之颤抖》,不少朋友不认可这种测试方式。假设采用同样的测试方式,Netty每秒处理400W,那smart-socket这500W的数据是否更有说服力。
    此处再提供一份某网友的测试数据,该网友测试的关注点在于smart-socket建立连接的性能:

    • 测试环境: CPU E3-1231 v3 @ 3.40GHz,8核,内存16G

    • 测试结果:每秒处理8000个长连接请求,服务器总连接数达18W(调整配置项后每秒建立连接数1W左右)

smart-socket的定位很纯粹,仅仅负责协调数据读写资源,最大化的发挥系统性能,用户只需关注协议编解码以及消息的业务处理。smart-socket不会包揽通信层面方方面面的功能,希望每一个使用smart-socket的朋友,可以通过它加深对socket的理解与认知。如果您是对Socket技术有浓厚兴趣的朋友,非常欢迎体验以下smart-socket。

文章出自:http://qh.itpxw.cn/peixun/software/201837905.html

文章标题:smart-socket是否会替代Netty成为最流行的框架



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

(责任编辑:IT培训网)
顶一下
(2)
40%
踩一下
(3)
60%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02
推荐内容