curator-framework 使用采坑記之org.apache.zookeeper.ClientCnxn - Opening socket connection to server..........Will not attempt to authenticate using SASL (unknown error)報錯解決


一、curator-framework  簡介

curator-framework 是對zookeeper做的分二次分布式封裝處理,目前代碼也是apache 開源社區維護,如下所示。

github地址:https://github.com/apache/curator

 

curator-framework 中包含了基於zookeeper的分布式鎖的實現、服務discovery、leader選舉、基於zk的緩存實現等。在curator-framework  提供了示例代碼,如下所示:

二、curator-framework  使用中的問題

1、curator-framework 在使用分布式鎖時遇到的問題:

一開始使用的是2.13.0的版本,maven中引入的方式如下:

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.13.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.13.0</version>
        </dependency>

使用時,客戶端連接zk和啟動都正常沒有任何的問題,在切換到最新的4.3.0的版本后出現連接報錯問題

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>4.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.3.0</version>
        </dependency>

 

着實郁悶了很久,使用pom分析看了一下依賴的關系,發現因為4.3.0 依賴的zk jar包版本和服務端的zk服務版本不一致,然后懷疑是 客戶端和服務端版本不一致導致的,那么嘗試修改maven中zk的jar包的依賴版本。

本文作者:張永清   轉載請注明博客園:https://www.cnblogs.com/laoqing/p/12768298.html

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
        </dependency>

首先排除apache.curator中的依賴的zk jar,然后重新引入和服務端版本一致的3.4.14版本的zk jar。

客戶端重新啟動連接后,發現正常了,由此發現客戶端和服務端版本一致,是可能會引發這個問題。

另外如果zk的服務端配置的zoo.cfg配置的為主機名,那么客戶端zk在連接時也需要用主機名去連接,在使用ip去連接時,也有可能會出現同樣的問題。

github參考代碼:https://github.com/597365581/bigdata_tools/tree/master/yongqing-bigdata-tools/yongqing-zookeeper-tool


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM