HBase異步客戶端

2018-05-11 14:50 更新

HBase異步客戶端

它是HBase 2.0中引入的新API,旨在提供異步訪問HBase的能力。

您可以從ConnectionFactory獲取AsyncConnectionfrom,然后從中獲取一個異步表實例來訪問HBase。完成后關閉AsyncConnection實例(通常在程序退出時)。

對于異步表,大多數(shù)方法與舊Table界面有相同的含義,預期返回值通常包含CompletableFuture。我們在這里沒有任何緩沖區(qū),所以沒有關于異步表的close方法,你不需要關閉它。它是線程安全的。

掃描(scan)有以下幾個不同之處:

  • getScanner方法可以返回一個ResultScanner。你可以以舊的方式使用它,它的工作原理與舊的ClientAsyncPrefetchScanner一樣。
  • scanAll方法會一次返回所有的結果。它旨在為小掃描提供一種更簡單的方法,您通常希望一次獲得全部結果。
  • 觀察者(Observer)模式。有一種掃描方法接受ScanResultConsumer作為參數(shù)。它會將結果傳遞給消費者。

注意,AsyncTable接口是模板化的。模板參數(shù)指定掃描使用的ScanResultConsumerBase類型,這意味著觀察者模式掃描API是不同的。這兩種類型的掃描用戶是 ScanResultConsumer和AdvancedScanResultConsumer。

ScanResultConsumer需要一個單獨的線程池,用于執(zhí)行向返回的CompletableFuture注冊的回調(diào)。由于使用單獨的線程池可以釋放RPC線程,所以回調(diào)可以自由地執(zhí)行任何操作。如果回調(diào)不快,或者有疑問,請使用此功能。

AdvancedScanResultConsumer在框架線程內(nèi)執(zhí)行回調(diào)。不允許在回調(diào)中執(zhí)行耗時的工作,否則它可能會阻塞框架線程并導致非常糟糕的性能影響。顧名思義,它是為想要編寫高性能代碼的高級用戶而設計的。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號