Cassandra Datastax驱动程序 - 连接池

 鸳鸯520_205 发布于 2023-02-12 14:46

我正在尝试理解Datastax Cassandra Driver中的连接池,所以我可以在我的Web服务中更好地使用它.

我有1.0版本的文档.它说:

Java驱动程序异步使用连接,因此可以在同一连接上同时提交多个请求.

他们通过连接了解什么?连接到群集时,我们有:构建器,群集和会话.其中哪一个是连接?

例如,有这个参数:

maxSimultaneousRequestsPerConnection - 在主机的所有连接上同时发出的请求数,然后创建更多连接.

因此,在连接池的情况下,这些连接会自动创建(这是我所期望的).但究竟是什么联系?集群对象?会议?

我正在尝试决定在我的网络服务中保持"静态"的内容.目前,我决定保持Builder静态,因此对于每次调用,我都会创建一个新的Cluster和一个新的Session.这个可以吗?如果群集是连接,那么它应该没问题.但是吗?现在,记录器说,每次通话:

2013:12:06 12:05:50 DEBUG群集:742 - 使用联系点启动新群集

2013:12:06 12:05:50 DEBUG ControlConnection:216 - [控制连接]刷新节点列表和令牌映射

2013:12:06 12:05:50 DEBUG ControlConnection:219 - [控制连接]刷新模式

2013:12:06 12:05:50 DEBUG ControlConnection:147 - [控制连接]成功连接到...

那么,它每次都连接到集群?这不是我想要的,我想重用连接.

那么,连接实际上是Session?如果是这种情况,我应该保持群集静态,而不是构建器.

我应该调用什么方法,以确保尽可能重用连接?

2 个回答
  • 该接受的答案 (在写这篇文章的时间)被给予正确的建议:

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

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

    Builder≠Cluster≠Session≠Connection≠Statement

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

    A Cluster代表整个Cassandra戒指

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

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

    一个本身不是一个连接,但它管理它们Session

    会话可能需要与环中的所有节点通信,除了在仅包含一(1)个节点的环的特殊情况之外,这不能通过单个TCP连接来完成.所述会话管理一个连接池,并且池通常具有用于至少一个连接每个节点在环. 这就是您应该尽可能多地重用Session对象的原因.应用程序不直接管理或访问连接.

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

    A Statement会话中执行

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

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

    2023-02-12 14:47 回答
  • 你是对的,连接实际上在Session中,Session是你应该给DAO写入Cassandra的对象.

    只要您使用相同的Session对象,就应该重用连接(您可以将Session视为连接池).

    编辑(2017/4/10):我在@William Price之后对这个答案进行了预测.请注意,这个答案是4岁,而Cassandra在此期间已经改变了一点!

    2023-02-12 14:50 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有