林烟夜暖

阅读JDK、框架源码的总结,微服务、RPC、服务治理实践等

Dubbo 服务端请求解码

Decode Request

Dubbo 服务端请求解码 服务端请求解码总体流程: NettyCodecAdapter$InternalDecoder.decode(ChannelHandlerContext ctx, ByteBuf input, List<Object> out) -->new NettyBackedChannelBuffer(ByteBuf buffer) // 创建一个buf...

Dubbo 客户端请求编码

Encode Request

Dubbo 客户端请求编码 以Dubbo使用Netty4为通信框架来进行分析。 客户端请求编码总体流程如下: NettyCodecAdapter$InternalEncoder.encode(ChannelHandlerContext ctx, Channel ch, Object msg) -->new NettyBackedChannelBuffer(ByteBuf buff...

WeakHashMap源码分析(JDK 8)

WeakHashMap

WeakHashMap源码分析 一、WeakHashMap简介 public class WeakHashMap<K,V> extends AbstractMap<K,V> implements Map<K,V> { ... } WeakHashMap继承于AbstractMap,实现了Map接口。和HashMap一样,We...

LinkedHashMap源码分析(JDK 8)

LinkedHashMap

LinkedHashMap源码分析(JDK 8) HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。由于LinkedHashMap是HashMap的子类,所以LinkedHashMap自然会拥有HashMap的所有特性。比如,LinkedHa...

Dubbo通信框架Netty4

Netty4

Dubbo通信框架Netty4 Netty4是2.5.6引入的,2.5.6之前的Netty用的是Netty3。在Dubbo源码中相较于Netty3,添加Netty4主要仅仅改了两个类:NettyServer,NettyClient,还有就是编解码。 使用方式: 提供者端: <dubbo:protocol server="netty4" /> <dubbo:provi...

HashMap源码解析(JDK8为主)

HashMap

HashMap源码解析(JDK8为主) HashMap根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度`O(1)`,但遍历顺序却是不确定的。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以用Collections的`synchronizedMap`方法使HashMap具有线程...

Dubbo线程模型

Thread Model

Dubbo线程模型 一、Netty的线程模型 在Netty中存在两种线程:boss线程和worker线程。 1.boss线程 作用: accept客户端的连接; 将接收到的连接注册到一个worker线程上。 个数: 通常情况下,服务端每绑定一个端口,开启一个boss线程。 2.worker线程 作用: 处理注册在其身上的连接connectio...

Dubbo 心跳机制

Heartbeat

Dubbo 心跳机制 Dubbo的心跳机制: 目的:检测provider与consumer之间的connection连接是否还连接着,如果连接断了,需要作出相应的处理。 原理: provider端的心跳默认是在heartbeat(默认是60s)内如果没有读消息或写消息,就会发送心跳请求消息,如果连着3次(180s)没有读消息,provider会关闭chan...

Java开发日常工具汇总

Tool

Lombok 待补充…

Dubbo 异步调用原理分析

Async Call

Dubbo 异步调用原理分析 Dubbo 客户端发起请求过程分析、Dubbo 服务端接收请求并发送响应流程分析、Dubbo 客户端接收响应流程分析(异步转同步实现)这三篇文章分析了Dubbo同步调用的流程,下面来看Dubbo异步调用的原理。 一、使用方式 服务提供方不变,消费方代码如下: <dubbo:reference id="demoService" check="fals...