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入门吧!
- Java互联网架构Netty、Nio、Mina权威指南
- java NIO: MINA, Netty
- 《Netty权威指南》基础篇--走进Java NIO
- 《netty权威指南》2.3 NIO编程
- Netty权威指南之NIO入门
- Netty 权威指南笔记(二):Java NIO 和 Netty 对比
- Java NIO框架Mina、Netty、Grizzly介绍
- Java NIO框架Mina、Netty、Grizzly介绍
- Netty 权威指南笔记(一):网络 I/O 模型和 Java NIO 入门
- Netty权威指南-NIO实现TimeServer服务器端源代码
- Netty权威指南-NIO实现TimeClient客户端源代码
- Netty 权威指南之java 序列化
- Netty权威指南 第2版学习笔记3——Netty NIO开发指南
- Java NIO框架Mina、Netty、Grizzly介绍与对比
- Java NIO框架Mina、Netty、Grizzly介绍与对比
- Java NIO框架Mina、Netty、Grizzly介绍与对比
- Java NIO框架之Mina、Netty、Grizzly介绍与对比
- Java NIO框架Mina、Netty、Grizzly介绍与对比
- VIM编辑器常用命令50例大全
- springMVC从上传的Excel文件中读取数据
- 传滴滴派驻ofo多名高管集体休假 小鸣单车CEO离职99%员工被裁
- Linux中文件描述符与索引节点的区别
- ubuntu添加源,并导入公钥
- Java互联网架构Netty、Nio、Mina权威指南
- Dijkstra单源最短路径算法
- 共享单车三大迷局:人没了车没了钱没了!
- Shop项目--5. 显示商品详细信息,product_info.jsp
- 起底Uber旧金山AI实验室 一切为了生意!
- HYSBZ
- 揭密Oracle之七种武器之三:破译古老的谜题---共享CBC Latch的秘密
- [BZOJ]3674 可持久化并查集
- 第一章 java入门