之前开过品味性能系列、Mysql学习系列,颇为曲高和寡。都是讲理论,很少有手把手深入浅出的文章。不过确实我就这脾气,文雅点的说法叫做“伪雅”,下里巴人叫做“装逼”。

学习资料

本篇文章,打算总结下学习过程,分析学习要点。

关于netty的资料颇多,学习起来未免杂乱。对于初学者麻烦点在于难以找到重点,再此则推荐一个学习路线。

第一步 上手练习

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 总览

  • 学习步骤如下:
  1. Channel、ChannelHandler

  2. Encode、Decode、ByteBuf

  3. ChannelHandlerContext

  4. ReferenceCountUtil

  5. ChannelFuture、Promise

  6. ChannelPipeline、ChannelInitializer

  7. EventLoop、EventLoopGroup

  8. Attributekey

  9. CharsetUtil

    尽量,按照其在整个通信过程中所属顺位,讲解所有 Netty 主要组件。大致结构图如下:

1.Channel、ChannelHandler

熟悉ChannelInboundHandlerAdapter 抽象类里面每个方法的用处。

利用责任单一原则,把消息

2.Encode、Decode、ByteBuf

第三步 难点、要点

  1. EventLoop 数量、名称
  2. 粘包、半包
  3. 心跳 3次
  4. 重连
  5. session
  6. 不想转关键字
  7. 内存保护、溢出oom
  8. 连接数与释放
  9. 拒绝连接、黑名单、白名单
  10. Nginx
  11. fail over重试与幂等性

第四步 高阶原理

对于已经在项目中应用了 netty 的同学,更多的想学习源码,但是并不推荐直接看源码。

因为常常在没有一定设计功底的情况下,会看的不明所以。

  1. ByteBuf
  2. Channel 和Unsafe
  3. ChannelPipeline 和ChannelHandler
  4. EventLoop 和EventLoopGroup
  5. Future 和Promise

总结

更多协议类型支持,请自行根据需求搜索相应资料。

在通过github搜索相应源码参考学习时,切记分辨出事netty3.x与netty4.+版本。因为改动很大,很多资料已经没有参考价值。

分布式服务

  • 幂等性
  • fail over、fail fast、fail safe、fail back
  • 分布式事务
  • cas原子锁
  • zookeeper与paxos算法

Netty学习路线总结的更多相关文章

  1. Netty学习路线

    预研时间170517-170519 投入时间:约10h 理解度:入门①前置基础:了解基本网络协议和通信方式[图解HTTP]http://download.csdn.net/detail/niehanm ...

  2. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  3. Java Web 学习路线

    实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...

  4. 一位资深程序员给予Java初学者的学习路线建议

    一位资深程序员给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干 ...

  5. 转载:一位资深程序员大牛给予Java初学者的学习路线建议

    一位资深程序员大牛给予Java初学者的学习路线建议   java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打 ...

  6. Java后端学习,推荐书籍和学习路线

    最近在学习Java和全栈开发,推荐一些有用的书籍 书架主要针对Java后端和全栈开发用的 书籍介绍 <Spring Boot 2.0企业级应用开发实战> 本书深入浅岀地讲解了 Spring ...

  7. 写给需要的Javaer-大数据学习路线篇

    已经更新100+篇~ 关注公众号,BAT大神带你飞~ 听说你还在写Java,看Spring,看Dubbo,今天SpringCloud, 明天Dubbo3.X新版本... 10个开发9个半在写Java后 ...

  8. 程序员大佬推荐的java学习路线

    作为我的第一篇博客,我第一个想到的就是在校时就看到的这篇文章.并且在之后的时间里自己都反复观看过,有时候这不单单是一篇学习路线,也是审视自己技术能力的里程碑,和激励自己的鞭挞绳. 先来个书籍清单: & ...

  9. 【强烈推荐】可能是最适合你的 Java 学习路线和方法

    如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path- ...

随机推荐

  1. LVM快照备份与恢复

    简介   最近在做数据备份方面的工作,用到两个工具,一个是dd,而另一个是lvm的快照(snapshot).由于数据比较大,直接是用dd非常耗时,而lvm的快照可以在几秒内轻松搞定,而且可以达到实时的 ...

  2. Beautiful Soup库基础用法(爬虫)

    初识Beautiful Soup 官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/# 中文文档:https://www.crumm ...

  3. 【算法和数据结构】_16_小算法_IntToStr: 将整型数据转换为字符串

    /* IntToStr: 将整型数据转换为字符串 */ #include <stdio.h> void int_to_str(const unsigned long int i_numbe ...

  4. sync;sync;sync;reboot

    Sync命令 在用reboot命令启动unix系统后,系统提示出错信息,部分应用程序不能正常工作.经仔细检查系统文件,并和初始的正确备份进行比较,发现某些文件确实被破坏了,翻来覆去找不到文件遭破坏的原 ...

  5. Hibernate多对一ManytoOne

    ------------------------Hibernate多对一ManytoOne 要点: ManytoOne配置在多端 可以配置级联操作 @ManyToOne(cascade=Cascade ...

  6. dubbo 支持的7种协议

    建议看原文 转自:https://blog.csdn.net/xiaojin21cen/article/details/79834222  1.dubbo 协议 (默认) 2.rmi 协议 3.hes ...

  7. python读取excel表

    from xlrd import open_workbookimport re #创建一个用于读取sheet的生成器,依次生成每行数据,row_count 用于指定读取多少行, col_count 指 ...

  8. 《面向对象程序设计(Java)》第四周学习总结

    第一部分 第四章部分理论知识 1.面向对象程序设计概述:java是完全面向对象的,必须熟悉OOP才能编写java程序. 类:由类构造对象的过程称为创建类的实例. 封装:封装是将数据和行为组合在一个包中 ...

  9. SOA和微服务的原则及对比

    一.面向服务设计的原则 服务可复用:不管是否存在即时复用的机会,服务均被设计为支持潜在的可复用 服务共享一个标准契约:为了与服务提供者交互,消费者需要导入服务提供者的服务契约,这个契约可以是一个IDL ...

  10. UI5-培训篇-Fiori培训

    1.学习网站: SAPUI5学习地址: https://blog.csdn.net/stone0823/article/category/6650292/1? SAPUI5文档: https://sa ...