Java 在网络问题持续一段时间的情况下与远程Hbase服务器的客户端连接
我使用表接口()和连接接口()来获取表对象。但正如连接接口链接中提到的,“连接创建是一项繁重的操作。连接实现是线程安全的,因此客户端可以创建一次连接,并与不同的线程共享它。”Java 在网络问题持续一段时间的情况下与远程Hbase服务器的客户端连接,java,multithreading,hbase,Java,Multithreading,Hbase,我使用表接口()和连接接口()来获取表对象。但正如连接接口链接中提到的,“连接创建是一项繁重的操作。连接实现是线程安全的,因此客户端可以创建一次连接,并与不同的线程共享它。” 所以,如果我为所有线程创建一个连接对象(在静态块中创建此对象),那么如果出现一些网络问题,并且客户端与hbase群集的连接丢失一段时间,会发生什么情况呢。连接对象在此之后是否仍能工作?如果连接丢失,并在某个特定时间段(TCP超时)前再次返回,则一切正常 因为在客户端和hbase之间建立了TCP连接。同样如文档中所述,“到服
所以,如果我为所有线程创建一个连接对象(在静态块中创建此对象),那么如果出现一些网络问题,并且客户端与hbase群集的连接丢失一段时间,会发生什么情况呢。连接对象在此之后是否仍能工作?如果连接丢失,并在某个特定时间段(TCP超时)前再次返回,则一切正常 因为在客户端和hbase之间建立了TCP连接。同样如文档中所述,“到服务器的单独连接、元缓存、zookeeper连接等都由从该连接获得的表和管理实例共享”,如果我们在网络无法访问时发送了数据,数据将出现在缓冲区中,客户端将尝试重新传输该段,当网络恢复时,hbase将获得该数据
但是,如果网络在一定时间(TCP超时)之前无法访问,那么TCP最终会放弃并关闭套接字。对于这种情况,您必须放置一些catch块来处理此问题,或者需要重新启动jar。您好,我想知道您是否明白了这一点?我在单线程上进行了测试,如果连接丢失并再次恢复,则连接似乎可以正常工作。如果你做过其他实验,我很想知道!谢谢