Java互联网架构Netty、Nio、Mina权威指南

来源:互联网 发布:php二维数组去掉重复值 编辑:程序博客网 时间:2024/05/17 00:03

Java互联网架构Netty、Nio、Mina权威指南

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了。对于学习有困难不知道如何提升自己可以加扣:1225462853进行交流得到帮助,获取学习资料.

CK2219-Java互联网架构Netty、Nio、Mina权威指南

下载地址:http://pan.baidu.com/s/1hr6z34g


基于最新的Netty5.0 版本撰写,从Netty开发环境的搭建,到第一个基于Netty的NIO服务端和客户端程序的开发,一步步的让初学从入门到精通,熟练的掌握基于Netty

的NIO开发,理解Netty的架构设计原理,可以对Netty进行深度的定制设计和开发。

本套教程共分为五部分:

第一部分介绍 JAVA NIO的入门知识,包括 Java NIO的演进和NIO编程入门。

第二部分是Netty入门,包括Netty开发环境的搭建、第一个服务端和客户端的开发与调试。

第三部分对Netty的编解码模块进行了详细介绍,包括编解码的基础知识、Java序列化、Google ProtoBuf和Jboss Marshalling序列化框架的应用;

第四部分是Netty多协议开发,详细介绍了基于Netty的HTTP协议、WebSocket协议、UDP协议和文件传输的设计和开发,最后讲解了如何利用Netty进行私有协议栈的设计和开发。

第五部分对Netty的主要类库源码进行了分析,包括ByteBuf和Unsafe、ChannelPipeline和ChannelHandler、EventLoop和EventLoopGroup、Future和Promise。

第六部分介绍了Netty的高级应用,包括Java多线程编程在Netty中的应用、Netty的架构剖析、Netty在互联网行业的应用、Netty在大数据领域的应用,最后是Netty的未来展望。

附录包含了Netty的启动参数配置列表。


Netty简介

Netty是基于Java NIO client-server的网络应用框架,使用Netty可以快速开发网络应用,例如服务器和客户端协议。Netty提供了一种新的方式来开发网络应用程序,这种新的方式使它很容易使用和具有很强的扩展性。Netty的内部实现是很复杂的,但是Netty提供了简单易用的API从网络处理代码中解耦业务逻辑。Netty是完全基于NIO实现的,所以整个Netty都是异步的。

网络应用程序通常需要有较高的可扩展性,无论是Netty还是其他的基于Java Nio的框架,都会提供可扩展性的解决方案。Netty中一个关键组成部分是它的异步特性,本片文章将讨论同步(阻塞)和异步(非阻塞)的IO来说明为什么使用异步代码解决扩展性问题以及如何使用异步。

Netty架构组成


4.Helloworld入门

在学习Netty之前,先来回顾一下NIO的通信步骤:

①创建ServerSocketChannel,为其配置非阻塞模式。

②绑定监听,配置TCP参数,录入backlog大小等。

③创建一个独立的IO线程,用于轮询多路复用器Selector。

④创建Selector,将之前创建的ServerSocketChannel注册到Selector上,并设置监听标识位SelectionKey.OP_ACCEPT。

⑤启动IO线程,在循环体中执行Selector.select()方法,轮询就绪的通道。

⑥当轮询到处于就绪状态的通道时,需要进行操作位判断,如果是ACCEPT状态,说明是新的客户端接入,则调用accept方法接收新的客户端。

⑦设置新接入客户端的一些参数,如非阻塞,并将其继续注册到Selector上,设置监听标识位等。

⑧如果轮询的通道标识位是READ,则进行读取,构造Buffer对象等。

⑨更细节的问题还有数据没发送完成继续发送的问题......

好啦,开始学习Netty了。先去http://netty.io/上下载所有的Netty包。

Netty通信的步骤:

①创建两个NIO线程组,一个专门用于网络事件处理(接受客户端的连接),另一个则进行网络通信的读写。

②创建一个ServerBootstrap对象,配置Netty的一系列参数,例如接受传出数据的缓存大小等。

③创建一个用于实际处理数据的类ChannelInitializer,进行初始化的准备工作,比如设置接受传出数据的字符集、格式以及实际处理数据的接口。

④绑定端口,执行同步阻塞方法等待服务器端启动即可。

强烈推荐读一读Netty官方翻译文档。

好了,说了那么多,下面就来HelloWorld入门吧!

阅读全文
1 0
原创粉丝点击