快速了解Netty

2021-05-23 16:52|来源: 网路

netty是什么

快速了解NettyNetty是基于Java NIO client-server的网络应用框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。

Netty提供了一种新的方式来开发网络应用程序,这种新的方式使它很容易使用和具有很强的扩展性。Netty的内部实现是很复杂的,但是Netty提供了简单易用的API从网络处理代码中解耦业务逻辑。

Netty是完全基于NIO实现的,所以整个Netty都是异步的。

netty架构

Netty主要特性

Netty有很多重要的特性,主要特性如下:

  • 优雅的设计 - 统一的API接口,支持多种传输类型,例如OIO,NIO

  • 简单而强大的线程模型

  • 丰富的文档

  • 卓越的性能

  • 拥有比原生Java API 更高的性能与更低的延迟

  • 基于池化和复用技术,使资源消耗更低

  • 安全性

  • 完整的SSL/TLS以及StartTLS支持

  • 可用于受限环境,如Applet以及OSGI

Netty的以上特性,比较适合客户端数据较大的请求/处理场景,例如web服务器等,要想知道有哪些系统使用了Netty,可以参考:http://netty.io/wiki/adopters.html

相关问答

更多
  • netty如何使用[2022-05-14]

    和spring , 先写一个类,然后与一般的bean同样配置
    我假设您仍想与Camel集成。 我先来看看骆驼文档 。 在此之后,你需要开始尝试。 我有一个例子,我创建了一个Camel处理器作为Netty服务器。 Netty组件的工作原理是From端点是消耗的服务器,To端点是生成的客户端。 我需要一个To端点,它是一个服务器,组件不支持它。 我只是将Camel Processor实现为一个Spring bean,它在初始化时启动了Netty Server。 JBoss Netty文档和示例非常好。 值得一提的是。 这是我瘦身的例子。 它是一个向所有连接的客户端发送消息 ...
  • 您只需覆盖messageReceived即可处理消息。 如果你想要一些“特殊”处理,你可以“覆盖”其他人。 You only need to override messageReceived to process messages. You "can" override others if you want some "special" handling.
  • 在阅读了相当庞大的Netty资源的一部分之后,我已经用一些仔细应用的Proguard规则解决了这个问题: -keepattributes Signature,InnerClasses -keepclasseswithmembers class io.netty.** { *; } -keepnames class io.netty.** { *; } 我原来的异常是由字节码中的类型变量引起的,Netty通过反射来使用字节码。 -keepattributes Signature保留这些信息。 ...
  • 在这篇文章中你可以找到你回答,在Netty 3.X中,这些包来自org.jboss.netty。* http://netty.io/3.10/api/index.html 但是从Netty 4.X开始,包装来自io.netty。*参见: http ://netty.io/4.0/api/index.html 是的,版本3和版本4有几个不同之处。 我建议您使用稳定版本进行开发,请在http://netty.io/wiki/index.html中查看 In this post you could find yo ...
  • ProxyHandler不支持HTTP1 / 1。 No the ProxyHandler does only support HTTP1/1.
  • Spark使用Akka Actor进行RPC和消息传递,而后者使用Netty。 另外,为了移动批量数据,使用Netty。 对于混洗数据,可以选择使用Netty。 默认情况下,NIO直接用于传输洗牌数据。 对于广播数据(驾驶员对所有员工的数据传输),默认情况下使用Jetty。 Spark uses Akka Actor for RPC and messaging, which in turn uses Netty. Also, for moving bulk data, Netty is used. For ...
  • netty的异步来自哪里? Netty采用了你可能从JavaScript这样的语言中得知的eventloops原理。 这允许netty完全异步工作。 (有关eventloops和基本原理的更多信息,我会推荐这个关于JavaScript中的evenloop的视频 ) 客户端需要什么来从异步获益? 客户端发送请求(包含有效负载和请求id = clientside递增整数) 服务器处理请求50秒 服务器发送响应(包含有效载荷和客户端在其请求中发送的相同请求ID) 客户端收到响应并查找请求标识(如果客户端能够找到请 ...
  • 将byte[]传递给Netty write方法相当于传递未加密的ByteBuf 。 我们可以在ByteArrayEncoder的源代码中看到这一点,它在内部调用Unpooled#wrappedBuffer(byte[]) : @Override protected void encode(ChannelHandlerContext ctx, byte[] msg, List out) throws Exception { out.add(Unpooled.wrappedBuffer( ...
  • 在我发布问题后不久找到答案。 我需要使用频道上提供的属性映射: http://netty.io/wiki/new-and-noteworthy.html Found the answer shortly after I posted my question. I need to use the attribute map available on the Channel: http://netty.io/wiki/new-and-noteworthy.html