2021SC@SDUSC
ClientCnxn在ZooKeeper中扮演的角色
在Session创建之前,首先要了解客户端如何发起这些连接请求的,以及怎样处理的。在此之前的文章中,已经详细分析了客户端与服务端之间的连接以及ZooKeeper是如何维护这些连接的。
就好比自来水工厂给每个家庭输送自来水。
其中,我们已经分析明白了自来水工厂与每个家庭之间使用的水管是用的什么材料的、水管长度有多长、直径大小是多少、所能传输自来水的流量是多大、这根水管连接到哪户家庭的等等,即NIOServerCnxn或者NettyServerCnxn所维护的属性。
而自来水工厂要根据每个家庭所交的水费,从而要控制水的流量等等、或者如果该家庭没有交水费,则需要关闭这个水管阀门、亦或者该家庭交了水费,则需要开启这个水管的阀门,即NIOServerCnxnFactory或者NettyServerCnxnFactory对连接进行的怎样的维护。
而基于NIO或者Netty的实现,就好比有两个自来水工厂,分别为NIOServerCnxnFactory自来水工厂和NettyServerCnxnFactory自来水工厂。而这两家自来水工厂所使用水管质量又有所不同,因此需要NIOServerCnxnFactory自来水工厂和NettyServerCnxnFactory自来水工厂根据水管的质量等进行不同的维护。
举了上述例子是为了说明,在了解了水管 (服务连接) 和自来水工厂 (服务连接工厂) 的功能后,我们还需要去了解每个家庭 (客户端)