本文主要是介绍更加深入剖析Kafka--Producer篇(中),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
客户端
客户端和服务端都是网络传输的终(端)点,两者角色是相对而言的,前者主动发起请求并接收后者应答。
两端之间由通道(连接)连通,每个客户端都有0到多个通道连接0到多个服务端。通道通过传输层交换数据,传输层有加密和明文两种实现。客户端通过选择器轮询所有通道,标记连接状态并收发网络数据,客户端获得所有通道处理结果再统一应答。这样就将客户端与具体网络I/O实现解耦,网络对客户端而言就成为一个整体。
客户端请求
客户端请求来自上游,它是发送给客户端而非由客户端发出的,它是网络请求的载体而非网络请求。客户端对请求的处理分成两步:1)客户端收到请求,记录其为处理中请求,再将网络请求写入发送缓冲。2)客户端开始轮询:选择器先全通道轮询并记录轮询结果:已发送请求(completedSends)、已接收回复(completedReceives)和所有无效通道(disconnected);客户端再拉取选择器轮询结果,判断哪些请求已完成,并逐一回复。
客户端请求有三个关键属性,依次为网络请求、需要网络响应和请求完成回调接口。
* 网络请求是个数据载体,它可以承载各种类型请求,任何类型的请求在其中都以一定格式序列化成字节数据,网络I/O传输的也是这部分字节。
* 需要网络响应用于标识客户端请求是否需要服务端确认,如果不需要则在网络请求发送成功后客户端请求立即成功。
* 回调接口注册在上游,用于请求完成后回调执行,它的回调方法参数是客户端响应,因此执行时会将响应回复给上游。
客户端响应也有三个关键属性,分别是坏连接标识&#
这篇关于更加深入剖析Kafka--Producer篇(中)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!