博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
netty深入学习之中的一个: 入门篇
阅读量:6920 次
发布时间:2019-06-27

本文共 5339 字,大约阅读时间需要 17 分钟。

netty深入学习之中的一个: 入门篇

本文代码下载:

1)Netty是什么

Netty是Java NIO之上的网络库(API)。Netty 提供异步的、事件驱动的网络应用程序框架和工具,用以高速开发高性能、高可靠性的网络服务器和客户端程序。

2)Netty的特性

统一的API。适用于不同的协议(堵塞和非堵塞)。基于灵活、可扩展的事件驱动模型。高度可定制的线程模型。可靠的无连接数据Socket支持(UDP)性能。更好的吞吐量,低延迟。更省资源,尽量降低不必要的内存拷贝。完整的SSL/ TLS和STARTTLS的支持。能在Applet和Android的限制环境运行良好。健壮性:不再因过快、过慢或超负载连接导致OutOfMemoryError。不再有在高速网络环境下NIO读写频率丌一致的问题。易用:完好的Java doc,用户指南和样例,简洁简单。仅依赖于JDK1.5。

3)Netty高速上手

俗话说。万事开头难,因此我构建了一个Netty项目模板:avro-channel。目的是结合Netty和Avro实现异步传输数据和RPC(远程过程调用)。avro-channel最初的目的是为了实现一套RPC服务。发现了Netty功能如此强大之后,就想使用Netty构建整个后端体系。因此,本文的样例代码提供了一个简单的Netty入门:HelloWorldServer和HelloWorldClient。

构建项目非常easy。第一步。手工安装依赖jar到你的机器上,进入项目pom.xml所在文件夹:

        $ python ./mvn-install-lib.py

上面这个命令把lib/下的jar包安装到你的机器上。然后运行以下的命令构建:

        $ mvn clean compile package assembly:assembly

最后打开2个终端a,b。分别运行以下的服务器和客户端:

a 启动服务器

        $ java -jar ./target/avro-channel-1.0-PRE.jar
        $ java -cp ./target/avro-channel-1.0-PRE.jar avro.channel.server.netty.HelloWorldServer
b 启动客户端
        $ java -cp ./target/avro-channel-1.0-PRE.jar avro.channel.client.netty.HelloWorldClient

4)样例工程结构

avro-channel是标准的maven(3.05)工程,文件夹结构例如以下:

lib/netty包括jboss.netty和io.netty二个版本号系列。最后让我们看看完整的pom.xml:

4.0.0
avro-channel is a java framework for data transport and rpc. created by zhangliang
avro.channel
avro-channel
jar
1.0-PRE
avro-channel
http://maven.apache.org
UTF-8
2.3.2
1.7.7
1.7.10
1.9.13
3.2.10.Final
5.0.0.Alpha2
avro.channel.server.netty.HelloWorldServer
junit
junit
3.8.1
test
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-simple
${slf4j.version}
org.jboss.netty
netty
${jboss.netty.version}
io.netty
netty-all
${io.netty.version}
org.apache.avro
avro
${avro.version}
org.apache.avro
avro-ipc
${avro.version}
org.codehaus.jackson
jackson-core-asl
${jackson.version}
org.codehaus.jackson
jackson-mapper-asl
${jackson.version}
org.apache.maven.plugins
maven-compiler-plugin
${compiler-plugin.version}
1.6
1.6
UTF-8
org.apache.avro
avro-maven-plugin
${avro.version}
schemas
generate-sources
schema
protocol
idl-protocol
${project.basedir}/src/main/avro/
${project.basedir}/src/main/java/
org.apache.maven.plugins
maven-jar-plugin
true
lib/
${main.class}
org.apache.maven.plugins
maven-dependency-plugin
copy
package
copy-dependencies
${project.build.directory}/lib
maven-assembly-plugin
2.2
${main.class}
jar-with-dependencies

转载地址:http://byecl.baihongyu.com/

你可能感兴趣的文章
getContextPath、getServletPath、getRequestURI,getRealPath的区别
查看>>
Linux Foundation(笔记)
查看>>
【IScroll深入学习】解决IScroll疑难杂症
查看>>
[LeetCode] Insertion Sort List
查看>>
[大数据之Spark]——快速入门
查看>>
解决Eclipse里Maven工程报 An error occurred while filtering resources错误
查看>>
牛逼的 弹出层 layer !!!
查看>>
在javascript中使用wcf服务
查看>>
创业的感觉
查看>>
英特尔推出全新RRP物联网平台 计划为零售技术投资一亿美元
查看>>
中关村创业大街联合英特尔共建开放创新实验室
查看>>
Vega数据可视化工具——教你轻松玩转大数据可视化 | 附代码
查看>>
企业网络:安全只能靠两招
查看>>
中国CRM企业“学习”Salesforce,只是在集体自嗨?
查看>>
驱动智能制造的大数据时代
查看>>
智能家居独角兽将在传统企业中诞生
查看>>
IT仍是美国最佳就业岗位:人才稀缺令科技公司很着急
查看>>
Linux恶意软件将树莓派设备变成“矿工”
查看>>
拥抱开放式网络 通往下一代数据中心
查看>>
为了防止客户的丢失,请客服人员禁止做的四件事
查看>>