
把书读薄
文章平均质量分 77
爬蜥
这个作者很懒,什么都没留下…
展开
-
kafka中的消费者
把书读薄(Kafka权威指南 第四章)消费者是与消费分区是如何对应的?消费者从属于一个消费群组,一个群组里的消费者订阅同一个主题,每个消费者接受主题一部分分区的消息。消费者的数量应该小于等于分区的数量,如果消费者的数量超过分区数,那么超过部分会被闲置。不同消费组群互相不影响,如果一个应用要处理多个主题,,可以让多个主题公用一个消费者群组能不能不要消费组?可以。一个消费者可以自己订阅主题并加入消费组...原创 2018-04-30 13:31:10 · 463 阅读 · 0 评论 -
TCP/IP这本书讲TCP连接是如何建立和终止的?
把书读薄(TCP/IP详解 卷一 第十八章)TCP的三次握手是过程是怎样的?请求端(客户端)发起第一个SYN,执行主动打开,表示想要连接服务端,同时指明初始序号(ISN,比如这里的141553152)服务端做出回应,指明自己的初始序号,执行被动打开,同时将确认序号设置成对客户端的初始序号加1,表示确认了客户端的SYN客户端将确认序号设置成服务端的初始序号加1,表示确认了服务端的S...原创 2018-05-21 00:52:15 · 236 阅读 · 0 评论 -
Netty中的引导类
把书读薄(Netty In Action 第八章)Bootstrap类是干什么用的?Bootstrap是用来组织Netty的各个结构(pipeline,handler,eventloop),并使他们运行起来的类结构。分成两块,一个是客户端引导类Bootstrap,只用1个channel来处理所有的网络交互,另一个是服务端的ServerBootstrap,它提供一个父channel来接受...原创 2018-05-16 00:00:33 · 256 阅读 · 0 评论 -
Netty中的线程模型
把书读薄(Netty In Action 第七章)Netty是用什么来处理线程的?一般线程池化模式为从池的空闲任务列表中选择一个Thread,指派它取运行一个已提交的任务任务完成时,该Thread返回给该列表,使其可以重用运行任务处理的在编程上的构造通常称作事件循环,Netty使用EventLoop来描述。一个EventLoop将由一个永远不会变的Thread驱动,它可以...原创 2018-05-16 00:02:35 · 218 阅读 · 0 评论 -
怎么对ChannelHandler做测试?
把书读薄(Netty In Action第九章)怎么对ChannelHandler做测试?使用EmbeddedChannel。 writeOutbound:将出站消息写到EmbeddedChannel中,如果能通过readOutbound从EmbeddedChannel中读到数据,返回truereadOutbound:从EmbeddedChannel中读取一个出站消息,它所返...原创 2018-05-29 21:10:20 · 308 阅读 · 0 评论 -
TCP中的数据是怎么传输的?
把书读薄(TCP/IP详解 卷一 第十九章 第二十章)交互式数据是怎么传输的? 交互式数据指泛指每次传递的字节很少,比如Telnet,Rlogin以Rlogin为例,它每次传到服务器的是一个字节的按键,并且要求服务器回显客户端输入的字符。理论上完整的交互包括4个报文段:客户端发送交互的数据服务端对交互的数据进行ack服务端对数据进行会显客户端对数据回显进行确认...原创 2018-06-05 22:04:41 · 8984 阅读 · 0 评论 -
TCP/IP这本书讲TCP是从哪些方面保证可靠性的?
把书读薄(TCP/IP详解 卷一 第十七章)TCP协议长什么样?1位表示1bit,除去任选字段(选项和数据)共160bit也就是20字节源端口号和目的端口号用于寻找发端和接收端【源端口+源IP地址+目的端口+目的IP地址唯一确定一个TCP连接】序号用来标识从TCP发送端向接收端发送的数据字节流,他是32bit的无符号数,到达2的32次方-1后又从0开始确认序号是上次已成功收...原创 2018-06-05 22:12:34 · 1235 阅读 · 0 评论 -
如果ChannelHandler之间处理数据格式不一样,可以怎么做转换?
把书读薄(Netty In Action 第十章)Netty实现数据格式转换的方式是什么?继承实现ByteToMessageDecoder和MessageToByteEncoder。 ByteToMessageDecoder继承ChannelInboundHandlerAdapter MessageToByteEncoder继承ChannelOutboundHandler...原创 2018-05-30 00:00:44 · 409 阅读 · 0 评论 -
Netty中有哪些自带的ChannelHandler?
把书读薄(Netty In Action 第十一章)Netty中有哪些自带的ChannelHandler?SslHandler:负责对请求进行加密和解密,是放在ChannelPipeline中的第一个ChannelHandler HttpClientCodec和HttpServerCodec:HttpClientCodec负责将请求字节解码为HttpRequest、HttpCon...原创 2018-06-24 17:45:59 · 1447 阅读 · 0 评论 -
TCP中有哪些定时器?
把书读薄(TCP/IP详解 卷一 第二十二章 第二十三章)TCP中有哪些定时器?每个连接。TCP管理4个不用的定时器 1. 重传定时器,使用于当希望收到另一端的确认。 2. 坚持定时器,使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口 3. 保活定时器,检测到一个空闲连接的另一端何时崩溃或重启 4. 2MSL定时器,测量一个连接处于TIME_WAIT状态的时间如何...原创 2018-06-24 17:49:48 · 845 阅读 · 1 评论 -
TCP的局限性有哪些?
把书读薄(TCP/IP详解 卷一 第二十四章)Tcp的局限性有哪些?在带宽乘积很大的时候,即处于长肥网络中,容易暴露出问题 capacity(b)=bandwidth(b/s) * round-trip time(s)窗口过小的问题。问题:TCP首部窗口大小为16bit,从而窗口限制在65535个字节,但是当前存在大带宽时延乘积,比如横跨大陆的gigabit线路...原创 2018-06-24 23:04:02 · 606 阅读 · 0 评论 -
如果TCP发生超时,这个过程是如何处理的?
把书读薄(TCP/IP详解 卷一 第二十一章)为什么需要重传?TCP本身需要提供可靠的服务,方式之一就是确认接收方真的收到了数据,如果过了一段时间,即超时了,还没有收到确认的报文,认为报文可能被丢失,就重新传送报文,确保数据都能被收到 超时发生重传不一定重传同样的报文段,可以重新分组发送一个较大的报文段,只要它不超过接收方声明的MSS为什么要动态的计算超时时间?网...原创 2018-06-18 19:09:24 · 12277 阅读 · 1 评论 -
链路层
把书读薄(TCP/IP详解 卷一 第二章)链路层是做什么的?为IP模块发送和接收IP数据报为ARP模块发送ARP请求和接收ARP应答为RARP发送RARP请求和接收RARP应答什么是以太网?局域网采用的通信协议标准,封装格式详见 RFC 894。以太网链路层协议:SLIP(Serial Line IP 串行线路IP)、PPP(点对点协议)什么是IEEE 802?IEEE制定的局域网和城域网通信协议...原创 2018-05-06 19:44:36 · 176 阅读 · 0 评论 -
kafka中的生产者
把书读薄(kafka权威指南 第三章)kafka发送生产消息的大致流程是什么?1. 创建生产者对象,生产者发送包装消息的ProducerRecord2. 生产者通过send方法发送消息3. 消息被序列化4. 消息计算出分区5. 根据分区消息被分配到指定主题和分区的批次中6. 批量发送到broker7. broker判断是否消息失败,成功则直接返回元数据【可选】,失败判断是否重试,对应做相应处理如何...原创 2018-04-27 23:50:48 · 249 阅读 · 0 评论 -
kafka集群、请求、存储
把书读薄(Kafka权威指南 第五章)单节点与集群关系1. 新建节点;每个broker都有一个唯一的标识符,新的broker启动的时候,会创建一个临时节点,把自己的ID注册到zk,如果zk中已经有一个一样的ID存在,会得到错误,注册失败。如果注册成功,且集群中有着一个与新ID一样的旧ID副本,那么新的broker会立即加入集群,并拥有与旧broker相同的分区和主题2. 节点异常/关闭;启动时穿件...原创 2018-04-30 15:47:57 · 615 阅读 · 0 评论 -
kafka数据可靠传输
把书读薄(Kafka权威指南 第六章)kafka对消息可靠性做出的保证1. 保证分区消息的顺序。同一个生产者给同一个分区写消息一定是有序的2. 得去的所有的同步副本写入了消息时,才会被认为已经提交3. 只要有一个副本是活跃的消息就不会丢失4. 消费者只能提取已经提交的消息broker对消息可靠性的处理1. 复制系数。即一个消息应该有多少个副本【一般3个】,这些副本在机架上如何分布,保证不会应为1个...原创 2018-04-30 16:34:57 · 305 阅读 · 0 评论 -
kafka数据管道
把书读薄(Kafka权威指南 第七章)向kafka塞入(读取)数据的方式?1. 通过构建kafka客户端,进行读取或者写入。这种方式代码一般会被嵌入到应用程序2. 使用Connect Api,面对的是市面上的存储系统,Connect Api怎么处理与其它系统交互的?connect api包含3个基本概念:worker进程,连接器,转换器1. 连接器:她负责决定需要运行多少的任务,按照任务来拆分数据...原创 2018-04-30 16:38:59 · 804 阅读 · 0 评论 -
kafka多集群部署
把书读薄(Kafka权威指南 第八章)常见的集群模式比较1. Hub架构。一个中心的kafka集群做中央调度,对应多个本地的kafka集群。【变种是一个关键的kafka集群对应一个非关键的跟随者】优点:只有本地用到的数据就在本地使用,多个数据中心需要用到的数据就放在中央,从本地同步到远程的次数也就只有一次,这样读取的时候,需要本地的就本地读,否则远程读,也就是消费者只需要从一个集群读数据即可缺点:...原创 2018-04-30 16:40:34 · 2639 阅读 · 0 评论 -
Netty简介
把书读薄(Netty In Action 第一章)什么是Netty?Netty是一个框架。或者说是一个工具集。封装了网络编程方面java的API。Netty有哪些核心组件?Channel:java nio的基本构造,代表一个实体(硬件设备、文件、网路套接字等)的开放连接。用作传入(入站)或者传出(出站)数据回调:封装操作完成后需要做的事情的方法Future: 提供异步操作的结果访问事件和Chann...原创 2018-04-30 16:47:52 · 143 阅读 · 1 评论 -
Netty中的ByteBuf详解
把书读薄(Netty In Action 第五章)ByteBuf是做什么用的?Netty中传递字节数据的容器。ByteBuf的使用模式有那些?使用模式描述 优点 劣势堆缓冲区数据存存储在JVM的堆空间中,又称为支撑数组,通过 hasArray 来判断是不是在堆缓冲区中 没使用池化情况下能提供快速的分配和释放 发送之前都会拷贝到直接缓冲区直接缓冲区 存储在物理内存中能获取超过jvm堆限制大小的空间...原创 2018-05-03 22:24:48 · 7378 阅读 · 0 评论 -
Netty中的组件是怎么交互的?
把书读薄(Netty In Action第六章)## Netty中的组件是怎么交互的?ChannelHandler处理,结合它的状态做各种业务,通过ChannelPipelinel来连接各个ChannelHandler## ChannelHandler怎么在实际中使用?channelHandler家族具有如下的结构helloworld中:Channel、Eventloop 、ChannelFuture 是什么关系?它们是netty对网络的抽象组件。Channel本身用来提供基本的IO操作(bind/connect/read/write),连接建立之后通过EventLoop来处理所发生的事情,它们之间的对应关系是1个channel只能有1个EventLoop,...原创 2018-04-27 01:32:35 · 142 阅读 · 0 评论 -
Netty中的信息传输
把书读薄(Netty in Action 第四章)Channel有什么特征?channel是传输API的核心,每一个都会被分配一个ChannelPipeline和ChannelConfig,ChannelConfig包含了Channel的所有配置,并且支持热更新 每个channel都是独一无二的,channel之间的顺序通过Comparable来实现比较 channel的实现是线程安全的Netty...原创 2018-04-27 01:33:21 · 205 阅读 · 0 评论 -
初识kafka
把书读薄(kafka权威指南 第一章)kafka是用来干嘛的? 一个系统通常拥有许多的应用场景,比如聊天,购物,前端交互等,每个场景的数据进行单独分析的时候需要有各自的队列来搜集数据,然后分发给各自的后台来处理数据,各自的维护成本大,kafka则可以用来解决这些问题,它提供了多个数据的入口,并可以分发给下游多个地方消费 kafka的基本概念有哪些? 消息:kafka的数据单元【相当于表的一条记录】...原创 2018-04-27 23:48:16 · 165 阅读 · 0 评论 -
从Netty版hello world看Netty源码,我们能看到什么?
把书读薄(Netty in Action第二章) + Netty启动源码Netty服务端代码的hello world怎么写?public class EchoServer { private final int port; public EchoServer(int port) { this.port = port; } publi...原创 2018-07-08 22:29:35 · 263 阅读 · 0 评论