java cassandra连接池_Cassandra Datastax驱动程序 - 连接池

本文深入探讨了Cassandra连接池的管理,强调了Session对象在连接重用中的关键作用。Cluster.Builder用于配置群集,而Session管理连接池,通常每个节点至少有一个连接。避免频繁创建Session以减少TCP连接数,提高效率。Cassandra的二进制协议支持连接上的多路复用,允许单个连接处理大量异步请求。
摘要由CSDN通过智能技术生成

accepted answer(在撰写本文时)正在给出正确的建议:

只要您使用相同的Session对象,您[将]重用连接 .

但是,有些部分最初过于简单 . 我希望以下内容能够深入了解每种对象类型的范围及其各自的用途 .

Builder≠Cluster≠Session≠Connection≠Statement

Cluster.Builder用于配置和创建群集

群集代表整个Cassandra戒指

环由多个节点(主机)组成,环可以支持一个或多个键空间 . 您可以在Cluster对象中查询cluster-(ring)-level属性 .

我也把它看作代表响铃的调用应用程序的对象 . 您将应用程序的需求(例如加密,压缩等)传达给构建器,但是此对象首先实现/与实际C *环通信 . 如果您的应用程序为不同的用户/目的使用多个身份验证凭据,则即使它们连接到同一个环,您也可能拥有不同的Cluster对象 .

会话本身不是连接,但它管理它们

会话可能需要与环中的所有节点通信,除了在仅包含一(1)个节点的环的特殊情况之外,这不能通过单个TCP连接来完成 . 会话管理connection pool,该池通常至少有一个连接用于环中的每个节点 . This is why you should re-use Session objects as much as possible. An application does not directly manage or access connections.

从Cluster对象访问会话;它通常是"bound"一次到单个键空间,它成为从该会话执行的语句的默认键空间 . 语句可以使用完全限定的表名(例如 keyspacename.tablename )来访问其他键空间中的表,因此不需要使用多个会话来跨键空间访问数据 . 使用多个会话与同一个环进行通信会增加所需的TCP连接总数 .

语句在会话中执行

语句可以是prepared,每个语句都可以改变数据或查询它(在某些情况下,两者都是) . 最快,最有效的语句最多需要与之通信一个节点和来自拓扑感知群集的会话应仅在单个TCP连接上联系该节点(或其中一个对等节点) . 效率最低的语句必须触及所有副本(大多数节点),但这将由环本身上的协调器节点处理,因此即使对于这些语句,Session也只使用来自应用程序的单个连接 .

此外,驱动程序使用的Cassandra二进制协议的版本2和3使用连接上的多路复用 . 因此,虽然单个语句至少需要一个TCP连接,但该单个连接可能同时为多达128或32k个异步请求提供服务,具体取决于协议版本(分别) .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值