Envoy 源码分析--buffer】的更多相关文章

目录 Envoy 源码分析--buffer BufferFragment RawSlice Slice OwnedSlice SliceDeque UnownedSlice OwnedImpl WatermarkBuffer WatermarkBufferFactory ZeroCopyInputStreamImpl Envoy 源码分析--buffer 申明:本文的 Envoy 源码分析基于 Envoy1.10.0. Envoy 的 buffer 在 1.10.0 前是基于 libevent…
目录 Envoy 源码分析--network L4 filter manager FilterManagerImpl addWriteFilter addReadFilter addFilter initializeReadFilters onRead onWrite Envoy 源码分析--network L4 filter manager 申明:本文的 Envoy 源码分析基于 Envoy1.10.0. 承接Envoy 源码分析--network,上次 network 只分析到 L4 过滤,…
目录 Envoy 源码分析--network address Instance DNS cidr socket Option Socket ListenSocket ConnectionSocket TransportSocket listen connection ConnectionImpl ClientConnectionImpl Envoy 源码分析--network 申明:本文的 Envoy 源码分析基于 Envoy1.10.0. Envoy 的服务是通用服务,因此它需要支持 TCP…
目录 Envoy 源码分析--event libevent Timer SignalEvent FileEvent RealTimeSystem 任务队列 延迟析构 dispacth_thread Envoy 源码分析--event 申明:本文的 Envoy 源码分析基于 Envoy1.10.0. Envoy 的事件是复用了 libevent 的 event_base .其在代码中的表现就是类 Dispatcher,一个 Dispatcher 其实就是一个 event_loop,主要的核心功能有…
目录 Envoy 源码分析--程序启动过程 初始化 main 入口 MainCommon 初始化 服务 InstanceImpl 初始化 启动 main 启动入口 服务启动流程 LDS 服务启动流程 最后 Envoy 源码分析--程序启动过程 申明:本文的 Envoy 源码分析基于 Envoy1.10.0. 前面几章分析了 event事件 和 底层网络, 但对创建服务的过程并没有串起来,只是分析了底层的网络公共库.这次我们分析下整个服务的创建过程. 初始化 main 入口 服务启动的总入口 ma…
Envoy 源码分析--LDS LDS 是 Envoy 用来自动获取 listener 的 API. Envoy 通过 API 可以增加.修改或删除 listener. 先来总结下 listener 的更新语义如下: 每个 listener 必须有一个唯一的名称.如果没有提供名称,Envoy 会生成一个 UUID 来作为它的名字.要动态更新 listener,管理服务必须提供一个唯一名称. 当 listener 被添加,在接收流量之前,会先进入 "预热" 阶段. 一旦 listener…
Netty源码分析七章: 编码器和写数据 第三节: 写buffer队列 之前的小节我们介绍过, writeAndFlush方法其实最终会调用write和flush方法 write方法最终会传递到head节点, 调用HeadContext的write方法: public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { unsafe.write(msg, prom…
Netty源码分析第七章: 编码器和写数据 第四节: 刷新buffer队列 上一小节学习了writeAndFlush的write方法, 这一小节我们剖析flush方法 通过前面的学习我们知道, flush方法通过事件传递, 最终会传递到HeadContext的flush方法: public void flush(ChannelHandlerContext ctx) throws Exception { unsafe.flush(); } 这里最终会调用AbstractUnsafe的flush方法…
问题 : netty的 ByteBuff 和传统的ByteBuff的区别是什么? HeapByteBuf 和 DirectByteBuf 的区别 ? HeapByteBuf : 使用堆内存,缺点 ,socket 传输的时候由于需要复制的原因,慢一点 DirectByteBuf : 堆外内存,可以使用零拷贝 概述 netty ByteBuf 存在两个指针,分成三个区域: 已读区(可丢弃),未读区(未读),可写区 .不像之前JDK 的 ByteBuffer 中只有一个position 指针.例如以下…
目录 Buffer概述 Buffer的创建 Buffer的使用 总结 参考资料 Buffer概述 注:全文以ByteBuffer类为例说明 在Java中提供了7种类型的Buffer,每一种类型的Buffer根据分配内存的方式不同又可以分为 直接缓冲区和非直接缓冲区. Buffer的本质是一个定长数组,并且在创建的时候需要指明Buffer的容量(数组的长度). 而这个数组定义在不同的Buffer当中.例如ByteBuffer的定义如下: public abstract class ByteBuff…