Netty学习路线总结
序
之前开过品味性能系列、Mysql学习系列,颇为曲高和寡。都是讲理论,很少有手把手深入浅出的文章。不过确实我就这脾气,文雅点的说法叫做“伪雅”,下里巴人叫做“装逼”。
学习资料
本篇文章,打算总结下学习过程,分析学习要点。
关于netty的资料颇多,学习起来未免杂乱。对于初学者麻烦点在于难以找到重点,再此则推荐一个学习路线。
- Netty 实战(精髓)
- Netty权威指南
- 通信理论学习,akka bio nio aio(可以绕过)
第一步 上手练习
Telnet示例(15分钟)
使用Netty创建Telnet服务
官方示例TelnetClient
推荐这个示例是因为它足够简单,简单到客户端也没有。
进阶示例(30分钟)
《Netty 实战(精髓》->第一个netty应用)
在这一章能够学习到更多细节。
- 服务端 (serverChannel)
- EchoServerHandler 简单的接收打印,将所接收的消息返回给发送者
- 冲刷所有待审消息到远程节点
- 关闭通道后,操作完成
通过这几步代码,学习 Netty 组件模型的基础 -> ChannelHandler ,它是重中之重。在稍后的第二步将会深入讲解。
- 服务端 (server)
- EchoServer 创建EventLoopGroup、ServerBootstrap
- 指定 Channel
- 设置 socket 地址使用所选的端口
- 添加 EchoServerHandler 到 Channel 的 ChannelPipeline
- 绑定的服务器;sync 等待服务器关闭
- 关闭 channel 和 块,直到它被关闭
- 关机的 EventLoopGroup,释放所有资源
- 客户端 (client) -> Bootstrap的构建过程
http://www.jianshu.com/p/5dcbc0456376
第二步 熟悉组件
对于从零开始,想要快速上手的同学来说。只想说直接给一份代码,从安全角度出发也不敢用到生产环境。出了问题也无从下手修改。
一些实用组件推荐,请务必熟悉它们的作用。
跟着Netty 实战(精髓),看《Netty 总览》
- 学习步骤如下:
Channel、ChannelHandler
Encode、Decode、ByteBuf
ChannelHandlerContext
ReferenceCountUtil
ChannelFuture、Promise
ChannelPipeline、ChannelInitializer
EventLoop、EventLoopGroup
Attributekey
CharsetUtil
尽量,按照其在整个通信过程中所属顺位,讲解所有 Netty 主要组件。大致结构图如下:

1.Channel、ChannelHandler
熟悉ChannelInboundHandlerAdapter 抽象类里面每个方法的用处。
利用责任单一原则,把消息
2.Encode、Decode、ByteBuf
Encode、Decode
ByteBuf
(ByteBuf和相关辅助类)[http://www.cnblogs.com/wade-luffy/p/6196481.html]
(WroldClock)[https://netty.io/4.0/xref/io/netty/example/worldclock/WorldClockServerHandler.html]
第三步 难点、要点
- EventLoop 数量、名称
- 粘包、半包
- 心跳 3次
- 重连
- session
- 不想转关键字
- 内存保护、溢出oom
- 连接数与释放
- 拒绝连接、黑名单、白名单
- Nginx
- fail over重试与幂等性
第四步 高阶原理
对于已经在项目中应用了 netty 的同学,更多的想学习源码,但是并不推荐直接看源码。
因为常常在没有一定设计功底的情况下,会看的不明所以。
- ByteBuf
- Channel 和Unsafe
- ChannelPipeline 和ChannelHandler
- EventLoop 和EventLoopGroup
- Future 和Promise
总结
更多协议类型支持,请自行根据需求搜索相应资料。
在通过github搜索相应源码参考学习时,切记分辨出事netty3.x与netty4.+版本。因为改动很大,很多资料已经没有参考价值。
分布式服务
- 幂等性
- fail over、fail fast、fail safe、fail back
- 分布式事务
- cas原子锁
- zookeeper与paxos算法
Netty学习路线总结的更多相关文章
- Netty学习路线
预研时间170517-170519 投入时间:约10h 理解度:入门①前置基础:了解基本网络协议和通信方式[图解HTTP]http://download.csdn.net/detail/niehanm ...
- 一位资深程序员大牛给予Java初学者的学习路线建议
java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...
- Java Web 学习路线
实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...
- 一位资深程序员给予Java初学者的学习路线建议
一位资深程序员给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干 ...
- 转载:一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打 ...
- Java后端学习,推荐书籍和学习路线
最近在学习Java和全栈开发,推荐一些有用的书籍 书架主要针对Java后端和全栈开发用的 书籍介绍 <Spring Boot 2.0企业级应用开发实战> 本书深入浅岀地讲解了 Spring ...
- 写给需要的Javaer-大数据学习路线篇
已经更新100+篇~ 关注公众号,BAT大神带你飞~ 听说你还在写Java,看Spring,看Dubbo,今天SpringCloud, 明天Dubbo3.X新版本... 10个开发9个半在写Java后 ...
- 程序员大佬推荐的java学习路线
作为我的第一篇博客,我第一个想到的就是在校时就看到的这篇文章.并且在之后的时间里自己都反复观看过,有时候这不单单是一篇学习路线,也是审视自己技术能力的里程碑,和激励自己的鞭挞绳. 先来个书籍清单: & ...
- 【强烈推荐】可能是最适合你的 Java 学习路线和方法
如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...
随机推荐
- FluentData -Micro ORM with a fluent API that makes it simple to query a database 【MYSQL】
官方地址:http://fluentdata.codeplex.com/documentation MYSQL: MySQL through the MySQL Connector .NET driv ...
- Windows IIS安装php
[可参考文档:https://docs.microsoft.com/en-us/iis/application-frameworks/scenario-build-a-php-website-on-i ...
- 猴子选大王的c#实现
原文地址:猴子选大王的c#实现作者:余文 今天被问到了猴子选大王的意思,题目大意就是说有n只猴子围坐成一个圈,按顺时针方向从1到n编号.然后从1号猴子开始沿顺时针方向从1开始报数,报到m的猴子出局,再 ...
- # 20175227 2018-2019-2 《Java程序设计》第一周学习总结
20175227 2018-2019-2 <Java程序设计>第一周学习总结 教材学习内容总结 1.安装VB,Ubuntu,Git,JDK,并自行配置. 2.写"Hello Wo ...
- 报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1
错误现象: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-com ...
- Windows10关闭自动更新
1 使用windows+r调出运行,输入:services.msc2 找到Windows update,右键选择属性:将启动类型从自动改为手动.3 使用windows+r调出运行,输入:gpedit. ...
- Unity Lighting(一)光照练习
Unity 2018.1.2f1 原文链接:https://www.youtube.com/watch?v=VnG2gOKV9dw Unity Lighting练习最终效果 眼睛.光源与物体 光学基础 ...
- [Oracle,2018-02-07] Oracle 报错:“ORA-02292:违反完整约束条件(XXX.FKXXX)
报错的原因很清楚,就是你要删除的记录是另外某条记录的外键,解决办法: 1.删除子记录,在删除本记录: 2.暂时禁用此外键(适合在测试后清除所有记录的情况,记得最后要恢复此外键) 解决办法有了,现在最主 ...
- Servlet-知识点
2018年10月05日 16:52:56 yigg 阅读数:38 1.JavaWeb开发的目录结构 https://blog.csdn.net/u012661010/article/details ...
- android 开发 View _5_ Paint详解
转载:http://blog.csdn.net/abcdef314159 //Paint的setStyle,Style共有3种 setStyle(Style style) Paint.Style.FI ...