文档章节

netty文章收藏

greki
 greki
发布于 2016/04/05 22:48
字数 820
阅读 795
收藏 59

 

1.林峰的关于netty文章

不错,遇到问题反复看了几遍总有启发,还说收藏记录一下。

http://www.infoq.com/cn/netty

Netty案例集锦之多线程篇(续)作者 李林锋 发布于 2015年11月25日 9

Netty案例集锦之多线程篇作者 李林锋 发布于 2015年9月3日 14

Netty系列之Netty编解码框架分析作者 李林锋 发布于 2015年4月29日 22

Netty版本升级血泪史之线程篇作者 李林锋 发布于 2015年2月7日 18

Netty系列之Netty百万级推送服务设计要点作者 李林锋 发布于 2015年1月4日 31

Netty系列之Netty并发编程分析作者 李林锋 发布于 2014年10月24日 17

Netty系列之Netty 服务端创建作者 李林锋 发布于 2014年9月11日 20

Netty系列之Netty安全性作者 李林锋 发布于 2014年8月8日 11

Netty系列之Netty线程模型作者 李林锋 发布于 2014年7月11日 25

Netty系列之Netty可靠性分析作者 李林锋 发布于 2014年6月19日 29

Netty系列之Netty高性能之道作者 李林锋 发布于 2014年5月30日 48

 

2.网络排查:

http://www.cnblogs.com/Security-Darren/p/4700387.html

 

3.netty源码细节

http://xw-z1985.iteye.com/category/260393
 

5.耗时业务逻辑线程处理(还在看,可能有不对的地方)

要关注3个地方的线程处理:

a.BOSS线程:处理连接建立(服务端才有)

b.worker线程:处理IO、解码(read等)

c.一个channel发了多个消息的,消息并发处理(初步看是用自己实现的业务线程池)

 

知乎的讨论:

https://www.zhihu.com/question/35487154(ExecutionHandler是netty3的东西,4已经去掉)

 

EventLoop:其本质是一个用来处理IO事件的线程,EventLoopGroup 其本质是一个线程池。一个EventLoop会对应着一个线程,一个EventLoop可以和多个Channel绑定,处理多个Channel的IO事件;但是一个Channel在整个生命周期内只会被一个EventLoop处理

http://blog.csdn.net/suifeng3051/article/details/28861883

 

官方文档:(解决了IO worker线程不堵塞的问题,但看源码一个handler只绑定一个线程,并不能解决handler处理的效率问题,例如一个连接发的消息很多,但是handler消息处理并不会并发执行)

https://netty.io/4.1/api/io/netty/channel/ChannelPipeline.html

static final EventExecutorGroup group = new DefaultEventExecutorGroup}(16); 
ChannelPipeline pipeline = ch.pipeline(); 
pipeline.addLast("decoder", new MyProtocolDecoder()); 
pipeline.addLast("encoder", new MyProtocolEncoder()); 
// Tell the pipeline to run MyBusinessLogicHandler's event handler methods 
// in a different thread than an I/O thread so that the I/O thread is not blocked by
// a time-consuming task. If your business logic is fully asynchronous or finished 
// very quickly, you don't need to specify a group.
pipeline.addLast(group, "handler", new MyBusinessLogicHandler());

 

    AbstractChannelHandlerContext(DefaultChannelPipeline pipeline, EventExecutorGroup group, String name,
                                  boolean inbound, boolean outbound) {

        if (name == null) {
            throw new NullPointerException("name");
        }

        channel = pipeline.channel;
        this.pipeline = pipeline;
        this.name = name;

        if (group != null) {
            // Pin one of the child executors once and remember it so that the same child executor
            // is used to fire events for the same channel.
            EventExecutor childExecutor = pipeline.childExecutors.get(group);
            if (childExecutor == null) {
                childExecutor = group.next();
                pipeline.childExecutors.put(group, childExecutor);
            }
            executor = childExecutor;
        } else {
            executor = null;
        }

        this.inbound = inbound;
        this.outbound = outbound;
    }



 

最后当然不能忘了官方文档:

http://netty.io/wiki/user-guide-for-4.x.html

http://netty.io/wiki/related-articles.html

本文转载自:http://www.infoq.com/cn/netty

共有 人打赏支持
greki
粉丝 98
博文 109
码字总数 45236
作品 0
杭州
技术主管
《深入探索Netty原理及源码分析》文集小结

写在2017年末尾,翻看文集的第一篇文章已经是三个月前的事了,也没想过这文集会写那么久,这么慢。。。 Netty文集中的文章主要都是我学习过程的笔记,写博客的主要目的是为了通过输出来倒逼输...

tomas家的小拨浪鼓
2017/12/30
0
0
Logstash 6.1.2 发布,开源服务端数据处理流程

Logstash 是一个开源的服务端数据处理流程,可同时从多个源中获取数据,将其转换,然后将其发送到“收藏”中,目前拥有超过 200 个插件。它能集中、转换和藏匿您的数据。 Logstash 6.1.2 更新...

淡漠悠然
01/17
0
0
《Istio官方文档》Pilot

原文链接  译者:carvendy Pilot(领航员)   Pilot负责Envoy实例在Istio网格服务部署的生命周期。   在上图中的图形,Pilot在服务网格中有着权威的服务代表,而服务网格依赖着底层平台。...

魔术师Carvendy
01/08
0
0
源码之下无秘密 ── 做最好的 Netty 源码分析教程

背景 在工作中, 虽然我经常使用到 Netty 库, 但是很多时候对 Netty 的一些概念还是处于知其然, 不知其所以然的状态, 因此就萌生了学习 Netty 源码的想法. 刚开始看源码的时候, 自然是比较痛苦...

永顺
2017/11/29
0
0
网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势

本文观点仅作参考,请根据自已系统的应用场景合理地选择数据传输层协议即可,无需盲目崇拜大牛言论。 1、前言 对于即时通讯开者新手来说,在开始着手编写IM或消息推送系统的代码前,最头疼的...

JackJiang2011
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jQuery学习笔记180924

jQuery - AJAX 简介 什么是 AJAX? AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。 简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据,并在网页上进行显示...

颖伙虫
20分钟前
1
0
springboot整合vue小试牛刀

序 本文主要研究一下如何在springboot工程整合vue maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-we......

go4it
21分钟前
1
0
使用python的profiler工具

主要用来检测python coding的执行时间 fly profiler

steel7c4
25分钟前
0
0
大数据日知录笔记

硬件成本的快速下降,使得电子设备的无处不在成为可能,数据无处不在,无时不在. IBM用3V(Volume,Velocity,Variety)来描述大数据的特点,后来又增加了Value这个维度,即价值密度低的数据成为大数据...

凌渡
34分钟前
0
0
IDEA、WebStorm最新永久激活方式

今天早上一大早打开IDEA发现激活已过期,遂开始寻找激活码。但是一直不成功,后来终于找到一种比较靠谱的激活方式。在此记录下来,以备不时之需。 目前网上现有的激活方式大概有这么三种 激活...

耒耒耒耒耒
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部