Phoenix客户端进化之由重到轻

简介: Phoenix重客户端 Phoenix是HBase之上的SQL层,它为HBase赋予了NEWSQL的特性,支持了大多数的标准SQL特性,并提供了JDBC的访问接口,使得我们在应用程序中能够方便的集成使用。

Phoenix重客户端

Phoenix是HBase之上的SQL层,它为HBase赋予了NEWSQL的特性,支持了大多数的标准SQL特性,并提供了JDBC的访问接口,使得我们在应用程序中能够方便的集成使用。其架构如图:

image

从其架构来看,Phoenix结构上划分为客户端和服务端两部分:

  • 客户端包括应用程序开发,将SQL进行解析优化生成QueryPlan,进而转化为HBase Scans,调用HBase API下发查询计算请求,并接收返回结果;
  • 服务端主要是利用HBase的协处理器,处理二级索引、聚合及JOIN计算等。

这种架构我们称之为重客户端架构,也是目前Phoenix使用最广泛的方式,但是这种方式存在一些使用上的缺陷:

  1. 应用程序与Phoenix core绑定使用,需要引入Phoenix内核依赖,目前一个单独Phoenix重客户端集成包已达120多M;
  2. 运维不便,Phoenix仍在不断优化和发展,一旦Phoenix版本更新,那么应用程序也需要对应升级版本并重新发布;
  3. 仅支持Java API,其他语言开发者不能使用Phoenix。

Phoenix轻客户端

针对重客户端使用问题,Phoenix社区引入了轻客户端架构,如图所示:

image

轻客户端架构将Phoenix分为三部分:

  • 瘦客户端是用户最小依赖的JDBC驱动程序,与Phoenix依赖进行解耦,支持Java、Python、Go等多种语言客户端;
  • QueryServer是一个单独部署的HTTP服务,接收轻客户端的RPC请求,并将SQL转发给Phoenix Core进行解析优化执行;
  • Phoenix Server与重客户端架构相同。

轻客户端JDBC连接串格式为:

jdbc:phoenix:thin:url=http://<server-hostname>:<port>[;option=value...]

其中

server-hostname:为QueryServer的主机名或IP
port:为QueryServer的端口号,默认为8765

Phoenix还提供了轻客户端命令行工具sqlline-thin.py,可以方便的进行测试使用。

QueryServer介绍

QueryServer基于Calcite的Avatica组件实现,内部嵌入了独立的Jetty HttpServer,支持Protobuf和JSON两种RPC传输协议,其中Protobuf是默认协议,提供比JSON更高效的通信方式。

由于QueryServer是无状态的,可以部署在HBase集群的每台RegionServer上,通过HTTP负载均衡器将多个客户端的请求分发在多个QueryServer上。

image

总结与展望

Phoenix轻客户端使业务端应用程序更加轻薄,业务开发人员无需再花费精力在底层Phoenix升级及运维,更加专注于业务本身,同时提供给非Java开发人员使用Phoenix的一种途径。

相比较重客户端,轻客户端实现增加了RPC请求链路,在性能上略有降低,阿里云HBase团队后续会进一步优化轻客户端读写性能。


阿里云HBase2.x版本已经支持Phoenix5.x的轻客户端模式,详细使用请参考:
产品入口:
  链接:https://cn.aliyun.com/product/hbase

云HBase SQL服务使用文档
  链接:https://help.aliyun.com/document_detail/104059.html?spm=a2c4g.11174283.6.606.11fc3c2ewByoQn

参考文献

https://phoenix.apache.org/server.html

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5月前
|
存储 固态存储 关系型数据库
下一代实时数据库:Apache Doris 【三】集群部署
下一代实时数据库:Apache Doris 【三】集群部署
172 0
|
2月前
|
SQL 设计模式 数据处理
Flink SQL 在快手实践问题之状态兼容的终极方案特点内容如何解决
Flink SQL 在快手实践问题之状态兼容的终极方案特点内容如何解决
20 0
|
2月前
|
消息中间件 安全 Kafka
Flink与Kafka的终极联盟:揭秘如何在一瞬间切换SASL机制,保护您的数据不受黑客侵袭!
【8月更文挑战第7天】Apache Flink作为高性能流处理框架,在与Kafka集成时确保数据安全至关重要。通过配置`KafkaConsumer`使用SASL机制如SCRAM-SHA-256或PLAIN,可有效防止未授权访问。SCRAM-SHA-256采用强化的身份验证流程提高安全性,而PLAIN机制则相对简单。配置涉及设置`properties`参数,包括指定`sasl.mechanism`、`security.protocol`及JAAS认证信息。合理选择和配置这些参数对于保护Flink应用与Kafka间的数据通信安全至关重要。
54 0
|
5月前
|
消息中间件 存储 负载均衡
Kafka 迁移工具 MirrorMaker2 原理起底
MirrorMaker2 (MM2) 是 Kafka 从 2.4.0 开始提供的数据复制工具,用于集群间的数据同步和备份。MM2 有三种部署模式:dedicated mode、standalone mode 和 Kafka Connect mode。AutoMQ即将推出基于MM2的迁移产品,助力用户平滑迁移到AutoMQ平台。
198 2
Kafka 迁移工具 MirrorMaker2 原理起底
|
5月前
|
数据挖掘 关系型数据库 MySQL
下一代实时数据库:Apache Doris 【一】简介
下一代实时数据库:Apache Doris 【一】简介
157 0
下一代实时数据库:Apache Doris 【一】简介
|
5月前
|
存储 固态存储 OLAP
下一代实时数据库:Apache Doris 【六】数据划分
下一代实时数据库:Apache Doris 【六】数据划分
101 1
|
5月前
|
Java Apache 数据库
下一代实时数据库:Apache Doris 【二】编译与安装
下一代实时数据库:Apache Doris 【二】编译与安装
415 0
|
5月前
|
存储 运维 OLAP
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(2)
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(2)
331 0
|
5月前
|
SQL 存储 数据挖掘
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(1)
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(1)
201 0
|
5月前
|
存储 SQL OLAP
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(3)
带你读《Apache Doris 案例集》——05 当 Apache Doris 遇上大模型:探秘腾讯音乐如何 基于大模型+ OLAP 构建智能数据服务平台(3)
170 0