Phoenix客戶端進化之由重到輕 雲棲社群

2022-09-24 03:09:07 字數 1110 閱讀 7320

phoenix重客戶端

phoenix是hbase之上的sql層,它為hbase賦予了newsql的特性,支援了大多數的標準sql特性,並提供了jdbc的訪問介面,使得我們在應用程式中能夠方便的整合使用。

phoenix是hbase之上的sql層,它為hbase賦予了newsql的特性,支援了大多數的標準sql特性,並提供了jdbc的訪問介面,使得我們在應用程式中能夠方便的整合使用。其架構如圖:

從其架構來看,phoenix結構上劃分為客戶端和服務端兩部分:

這種架構我們稱之為重客戶端架構,也是目前phoenix使用最廣泛的方式,但是這種方式存在一些使用上的缺陷:

針對重客戶端使用問題,phoenix社群引入了輕客戶端架構,如圖所示:

輕客戶端架構將phoenix分為三部分:

輕客戶端jdbc連線串格式為:

jdbc:phoenix:thin:url=http://:[;option=value...]其中

server-hostname:為queryserver的主機名或ip

port:為queryserver的埠號,預設為8765

phoenix還提供了輕客戶端命令列工具sqlline-thin.py,可以方便的進行測試使用。

queryserver基於calcite的**atica元件實現,內部嵌入了獨立的jetty httpserver,支援protobuf和json兩種rpc傳輸協議,其中protobuf是預設協議,提供比json更高效的通訊方式。

由於queryserver是無狀態的,可以部署在hbase集群的每台regionserver上,通過http負載均衡器將多個客戶端的請求分發在多個queryserver上。

phoenix輕客戶端使業務端應用程式更加輕薄,業務開發人員無需再花費精力在底層phoenix公升級及運維,更加專注於業務本身,同時提供給非j**a開發人員使用phoenix的一種途徑。

相比較重客戶端,輕客戶端實現增加了rpc請求鏈路,在效能上略有降低,阿里雲hbase團隊後續會進一步優化輕客戶端讀寫效能。

阿里雲hbase2.x版本已經支援phoenix5.x的輕客戶端模式,詳細使用請參考:

產品入口:

??鏈結:

雲hbase sql服務使用文件

??鏈結:

Mina客戶端斷線重連

新建 實現mina的ioservicelistener介面 import org.apache.mina.core.service.ioservice import org.apache.mina.core.service.ioservicelistener import org.apache.mi...

Twisted之客戶端程式設計

主要類 reactor protocol 這兩個類都存在與 twisted.internet 命名空間中 reactor物件是twisted程式設計當中的第一步,它就是乙個反應器,專門負責與服務端的連線以及監聽 與伺服器互動,一旦與服務端連線上以後,即可呼叫reactor.run 開始監聽了 伺服器...

客戶端儲存之storage

storage是一種web儲存機制 實現客戶端儲存的一種方式 storage的目的是克服由cookie儲存所帶來的限制 當資料需要被嚴格控制在客戶端而無需持續的將資料傳送回伺服器。其主要實現兩個目標 1.提供一種cookie之外的儲存會話資料的途徑 2.提供一種儲存大量可以跨會話存在的資料的機制 在...