Netty源码剖析(前言,概述及目录)

 

前言

 

    前段时间公司准备改造redis的客户端, 原生的客户端是阻塞式链接, 并且链接池初始化的链接数并不高, 高并发场景会有获取不到连接的尴尬, 所以考虑了用netty长连接解决连接数和阻塞io问题

    为此详细阅读了netty源码, 熟悉了netty的各个主要的特性以及疏通各个组件的关联关系, 所以想把这段时间的学习内容, 学习经验毫无保留的分享给大家, 自己提高的同时也帮助大家一起成长

    内容中我会把每个知识点通过每个章节去进行剖析, 每个章节也会尽可能的将关键的流程细化, 希望大家在学习的过程中能领会到源码的关键步骤, 最好能自己能debug到源码进行剖析

    此文档会根据自己对netty的学习深入, 不断地更新, 不断的细化, 不断的深入各个模块的原理

    由于个人技术能力有限, 难免会有疏漏和错误的地方(个人学习过程中就发现了一些其他文档中的错误), 发现问题, 也希望各位同学及时指正(轻喷.....)

下面概括一些要点:

1.学习netty源码需要什么知识?

    java基础就不用说了.....

    由于本文档只是netty源码剖析并不是netty教程, 所以这里并不打算讲nio和netty怎么用, 不了解的小伙伴可以首先熟悉下nio编程的基础, 没做过实战项目没关系, 能写出helloworld, 并知道每一步是做什么的, 足矣

    其次要有netty基本使用的能力, 我们要知道netty完成链路之后在哪里执行我们自定义的业务逻辑, 收到服务端(或者客户端)消息之后我们需要在什么地方处理, 如果这块不熟悉, 可以网上找个demo学习, 或者学习下《netty实战》, 对此会有一个清晰的认识

    再次我们熟悉多线程相关的知识, 最好是用过jdk的线程并发库

    如果以上知识都没问题, 那就开始愉快的学习吧

 

2.这个文档如何学习?

    文章会以章节的形式将每个模块的关键部分进行剖析, 并且随着自己研究的不断深入进行补充和修改, 文章并不打算对每个细节进行细致入微的讲解, 而是提炼关键代码, 辅助大家串通整个netty的脉络, 串通的脉络之后, 我们会很容易理解各个模块在框架中所承担的责任和义务, 之后如果进行自学就会变得非常容易

    内容会尽量用简单通俗的语言进行描述, 并且会附带我曾经学习某一部分的思考逻辑, 这些思路有可能会和读者产生共鸣, 从而能得心应手的解决学习当中的困惑

    每一个源码, 我都会通过注释去讲解一些关键逻辑, 小伙伴们可以多关注下注释

    在源码剖析过程中, 同学们需要自己debug进源码, 自己去疏通相关的逻辑关系, 只有课后自己动手, 才会真正掌握其原理, 否则, 是很难消化每一部分的精髓的

    在内容中我也会提示大家, 需要关注的哪些步骤初, 初学者只需要将自己的精力放在需要关注的步骤就好. 如果对其他步骤感兴趣也可以课后进行自行剖析

    由于文章中会经常跟源码, 有的方法会跟的比较深, 跟完了某个方法需要返回某个方法会用加粗标志, 方便读者找到相应方法

3.这篇文档学习完之后能达到什么水平?

    写这篇文档的目的就是通过带同学们解析源码的方式串通netty的整改脉络, 学完之后之后不能保证你能精通netty, 但至少我们能串通起整个脉络, 熟悉每一个组件, 每一个模块在netty中所承担的角色, 以及一个消息从发送到接受经历了什么步骤, 从而使我们能更容易的理解到这个框架的精髓, 为以后的继续深入打下坚实的根基......

     当然, 如果你学习的足够认真, 真正理解了脉络, 自己写一个简单的netty也不是不可能

用我最近的喜欢的鸡汤激励下小伙伴: 种树最好的时间是十年前, 其次是现在....

废话了这么多, 正文开始.....

 

相关文章