公众号:徘徊笔记

公众号:徘徊笔记

公众号:徘徊笔记

公众号:徘徊笔记 CSDN博客:https://blog.csdn.net/ph3636

2019-04-20 12:53:33

阅读数 279

评论数 0

Netty源码分析之读消息(下)

一个完整的消息可能需要读取多次,判断每次读取的数据大小,判断是否已经读取完毕,释放内存,设置准备读状态等。 ByteBuf byteBuf = null; int messages = 0; boolean close = false; try { i...

2019-07-07 21:56:47

阅读数 17

评论数 0

Netty源码分析之读消息(上)

服务端获取到读事件,网络模块开始读取消息 public final class NioEventLoop extends SingleThreadEventLoop // Also check for readOps of 0 to workaround possible JDK bug w...

2019-07-07 21:54:31

阅读数 30

评论数 0

Netty源码分析之刷新消息(下)

判断统计的buffer类型消息数量,如果不为0的话有可能是多个buffer消息,直接写进网络通道即可 // Always us nioBuffers() to workaround data-corruption. // See https://github.com/netty/netty/i...

2019-07-07 21:51:42

阅读数 20

评论数 0

Netty源码分析之刷新消息(上)

把消息刷新进网络通道 private void invokeFlush0() { try { ((ChannelOutboundHandler) handler()).flush(this); } catch (Throwable t) { no...

2019-07-07 21:47:31

阅读数 19

评论数 0

Netty源码分析之写消息

客户端发送消息,经过管道的处理器处理,首先是尾节点 public abstract class AbstractChannel extends DefaultAttributeMap implements Channel public ChannelFuture writeAndFlush(O...

2019-07-07 21:44:28

阅读数 11

评论数 0

Netty源码分析之建立连接(下)

服务端接收处理器专门针对客户端连接请求做了处理,往新建客户端通道的管道中添加服务端刚开始设置的子处理器,把对应的网络选项以及参数设置到配置中,最后从子线程组中挑选一个线程注册到客户端通道上,专门用于与客户端进行网络交互 private static class ServerBootstrapA...

2019-07-07 10:47:23

阅读数 18

评论数 0

Netty源码分析之建立连接(上)

客户端发起连接请求 网络模块开始与服务端建立连接,确保参数的有效性,建立连接失败的话就根据是否设置过超时时间来使用延迟任务判断最终的链接结果来通知主程序,以及设置监听器来选择性决定关闭其他资源。 protected abstract class AbstractNioUnsafe ext...

2019-07-07 10:43:54

阅读数 17

评论数 0

Netty源码分析之客户端初始化

客户端初始化,大体上和服务端类似,设置通道的网络选项,常设置的有超时时间,是否禁用Nagle优化的TCP_NODELAY,这个参数的意思是,当某一次的发送数据量很小的话,他不会立即发送给对方,等待一段时间或者当需要发送的数据量达到窗口的大小时才会正式发送给对方,实时性要求比较高的业务一般都会禁用这...

2019-07-05 15:56:20

阅读数 13

评论数 0

Netty源码分析之核心线程处理

核心线程是NioEventLoop,在第一次往任务队列中添加任务时开始启动线程 abstract class SingleThreadEventExecutor extends AbstractScheduledEventExecutor implements OrderedEventExec...

2019-07-05 15:51:55

阅读数 39

评论数 0

Netty源码分析之激活服务端通道

通道绑定活跃后激活管道的处理器 public final ChannelPipeline fireChannelActive() { AbstractChannelHandlerContext.invokeChannelActive(head); return this; } ...

2019-07-05 15:46:26

阅读数 26

评论数 0

Netty源码分析之绑定服务端通道

判断网络通道是否已经注册完毕分别执行同步或者添加监听器操作 if (regFuture.isDone()) { // At this point we know that the registration was complete and successful. Channel...

2019-07-05 15:44:12

阅读数 14

评论数 0

Netty源码分析之注册服务端通道(下)

设置promise为成功状态 protected final void safeSetSuccess(ChannelPromise promise) { if (!(promise instanceof VoidChannelPromise) && !p...

2019-07-05 15:34:29

阅读数 17

评论数 0

Netty源码分析之注册服务端通道(上)

判断是否是本线程目前是在主线程中,所以为false public void execute(Runnable task) { if (task == null) { throw new NullPointerException("task"); ...

2019-07-05 14:28:06

阅读数 72

评论数 0

Netty源码分析之管道处理器

添加管道处理器,可以指定对应的线程组来单独处理该处理器 public final ChannelPipeline addLast(ChannelHandler... handlers) { return addLast(null, handlers); } public final...

2019-07-05 14:24:17

阅读数 62

评论数 0

Netty源码分析之初始化服务端通道

初始化服务端启动程序ServerBootstrap,设置两个线程池,bossGroup监听本地绑定端口,专门用来处理客户端连接请求以及一些服务端的任务,然后在workerGroup给这个客户端Channel分配一个线程进行后续处理,只绑定一个端口的话这个通常可以设置成1,NioEventLoopG...

2019-07-05 14:20:16

阅读数 64

评论数 0

Netty源码分析之线程组

基于4.0版本。初始化线程组,设置线程数,线程工厂类,选择器提供者,默认的选择器选择策略,任务队列拒绝策略 SelectorProvider.provider(), DefaultSelectStrategyFactory.INSTANCE, RejectedExecutionHandlers...

2019-07-05 14:16:58

阅读数 19

评论数 0

RocketMQ源码分析之权限ACL

Broker服务端 初始化时会初始化权限相关的类,是否校验权限需要通过aclEnable控制,在指定目录下查找所有的访问校验规则类 BrokerController#initialize public static final String ACL_VALIDATOR_ID = &quo...

2019-06-13 17:06:26

阅读数 168

评论数 0

Dubbo源码分析之异步回调

异步回调需要设置方法返回值为CompletableFuture或者他的子类 消费端 判断返回值,设置参数异步加回调 class InvokerInvocationHandler implements InvocationHandler private RpcInvocation ...

2019-06-13 17:00:23

阅读数 28

评论数 0

Dubbo源码分析之处理请求(下)

处理请求,判断请求是否已经被损坏 void handleRequest(final ExchangeChannel channel, Request req) throws RemotingException { Response res = new Response(req.getI...

2019-06-13 16:42:42

阅读数 39

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭