netty的异步特性需要注意的地方

  因为netty的eventLoop的异步执行任务,所以我们的任何写请求都将转化为一个任务到eventLoop的读写线程里面执行,这个线程只有一个,所以弥足珍贵,我们必须好好利用。

有时候,看很多框架源码,发现他们都不是在netty的handler里面去写数据,我估计是因为网络异步特性,加上netty的异步特性,导致我们控制力度变得很弱,所以不得不在外面来控制这种异步特性。

需要控制的地方有:

1.写数据的异步性,我们如果在handler里面写数据,如果不借助Future阻塞等待,那么我们必将不可能知道什么数据真正写出去,而且,因为有操作系统层面的隔离,我们甚至不知道什么时候数据会从网卡发出去。。。。我们不能控制网卡,但起码我们要控制我们在应用层面的写数据的有效性,我们要确定数据确实发出去了,而不是调用了简单的write方法就不管了。

 

所以,我们在外部来检测是否已经写数据完成,注意,这里不能在handler里面写数据,因为即使是在这里写数据,最终也会有可能构建一个写任务来执行,所以,不能在handler里面执行Future的sync和await !!!

 

那么,心跳检测,登录认证校验等,都必须在handler以外去做,这样才真正的复合网络异步编程的基本要求。

 

2.同时读写数据的不确定性。

如果存在读和写都存在,同时存在,那么先执行读,还是先执行写?

转载于:https://www.cnblogs.com/weiguangyue/p/9879768.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值