框架
c412745699
这个作者很懒,什么都没留下…
展开
-
20200214_Disruptor框架
Disruptor是一个高性能的并发队列,三个特性保障了它的高效性: 1. CAS乐观锁: 利用CAS(compare and swap) 乐观锁代替了重量级的lock锁, 提升了性能。 2. 消除伪共享 伪共享是计算机的CPU缓存导致的。现在的计算机的CPU缓存一般是以行的形式来保存,一行大概是64个字节。java中一个Long是8个字节,所以一行能存8个Long。但是这...原创 2020-02-23 15:19:13 · 114 阅读 · 0 评论 -
20190825_Netty简介
Netty定义 Netty官网的第一句话就对Netty有了一个清晰的定义: Netty is an asynchronous event-driven network application framework. Netty是以异步事件驱动的网络框架。Netty之所以高效,主要来自于它是如何实现异步事件驱动的:其 I/O 模型和线程处理模型,前者决定如何收发数据,后者决定如何处理数据。 Net...原创 2019-08-25 14:45:14 · 133 阅读 · 0 评论 -
20190825_Netty Reactor模式
Reactor模式翻译为反应器模式。 Netty整体架构是Reactor模式的完整体现。参考Doug Lea这篇著名的论文 模式角色 Handle(句柄或描述符):本质上表现一个资源,是有操作系统提供的;该资源表示一个个的事件,比如文件描述符,或是针对网络编程里的socket描述符。既可以来自外部,也可以来自内部;外部事件比如客户端的连接请求,客户端发来数据等;内部事件比如操作系统产生的定时...原创 2019-08-25 15:52:35 · 118 阅读 · 0 评论 -
20190826_Netty 零拷贝
普通io操作(读到写) 4次上下文切换,4次拷贝 零拷贝: 2次上下文切换, 2次拷贝 零拷贝优化(直接读到socket) 2次上下文切换,1次拷贝 内存映射文件 首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只 硬盘上文件 的位置与进程 逻辑地址空间中 一块大小相同的区域之间的一一对应,如图1中过程1所示。这种对应关系纯属是逻辑上的概...原创 2019-08-26 23:30:04 · 119 阅读 · 0 评论 -
20190826_Netty ByteBuf与NIO ByteBuffer
Netty中使用了ByteBuf作为数据容器,它相对于NIO的ByteBuffer做了不少改进。下面我们分别对它们进行介绍。 ByteBuffer NIO为New IO, 区别于传统的Java IO。 Java Io 最核心的概念是流(stream),是面向流的编程。 java的流要么是输入流,要么是输出流,不可能同时包含两个。而java nio 有3个核心的概念。 selector, chan...原创 2019-08-26 23:31:40 · 287 阅读 · 0 评论 -
20190829Netty 源码分析
首先来了解一些概念: EventLoop: IO 线程 EventLoop。 EventExecutor: 实际上就是继承了ScheduledExecutorService,区别在于重新定义了一些Netty自己定义的关于Future的接口。 EventExecutorGroup: 一个EventExecutorGroup 包含一个或者多个 EventExecutor。 EventLoopGro...原创 2019-08-29 20:57:10 · 132 阅读 · 0 评论 -
20190829_netty底层架构总结
一个EventLoopGroup当中包含多个EventLoop. 一个EventLoop在它的生命周期当中只有唯一一个Thread进行绑定。 启用EventLoop所处理的各种I/O事件都将在它所关联的那个Thread上进行处理。 一个Channel在它的生命周期当中只会注册在一个EventLoop上。 一个EventLoop在运行过程中,会被分配给一个或多个channel. 在Netty中,...原创 2019-08-29 20:58:23 · 145 阅读 · 0 评论