一、Pulsar客户端简析
pulsar服务是经典的C/S架构,由客户端和服务端构成。服务端提供处理读写请求服务,客户端负责发起读写请求。pulsar将客户端按照读写分成了生产者和消费者,但是无论怎么分,它们本质上都是Pulsar客户端并有很多相同的地方,本篇就针对客户端进行分析。
下图是客户端的组成部分

-
ConnectionPool连接池(值得深挖)
连接池是客户端的核心,维护着跟服务端的TCP连接,客户端的读写(生产者/消费者)都强依赖网络连接,因为最后数据还是要通过底层的网络进行通信
-
LookupService
具有路有属性的客户端角色,负责查找Topic归属的Broker节点
-
线程池
-
事件线程池
-
外部线程池
-
内部线程池
-
二、创建客户端对象
1、创建流程
先看看下面一段代码

这是通过生产者写数据到Pulsar服务端的case,相信大家不会感到陌生,其中34行就是创建客户端的逻辑,因此就从这里进行跟踪

通过跟踪PulsarClient.builder方法可以看到这是一个静态方法,可以看到返回值是ClientBuilder对象,具体实现逻辑咱们先不关心,咱们只需要知道这个方法会创建一个ClientBuilder就够了,结合之前的创建的逻辑可以知道最终会走到ClientBuilder#build方法

build方法中核心就是50行的通过PulsarClientImpl构造函数创建客户端对象,其他的都是一些配置校验工作。下面就直接进入PulsarClientImpl的构造函数进行分析

这个构造方法虽然逻辑不少,但实际上重要的就是201行的初始化

最低0.47元/天 解锁文章
3418

被折叠的 条评论
为什么被折叠?



