使用 java 模拟多个用户连接到 Cassandra

Posted

技术标签:

【中文标题】使用 java 模拟多个用户连接到 Cassandra【英文标题】:Simulate multiple users connection to Cassandra using java 【发布时间】:2020-04-07 16:19:00 【问题描述】:

我正在使用 java 开发应用程序。目标是模拟多个用户连接到 Cassandra(并发连接),所有用户都连接到同一个集群。

我的问题是:我是否应该实现多个会话,每个会话模拟一个用户。还是整个应用程序只有一个会话。?如果可能的话,如何实现多个会话?

如有参考或示例,不胜感激。

【问题讨论】:

您想测量什么 - 多个用户如何通过同一个应用创建负载。还是多个用户将负载创建为不同的应用? 我想测量多个用户如何在 Cassandra DB 上创建负载。无论是否来自同一个应用程序。我正在开发的应用程序只是为了模拟多用户连接并执行一些 cql 。 【参考方案1】:

您应该始终考虑使用带有连接池的单个会话来处理并发请求。如果会话出错,您可以建立重试机制。话虽如此,您可以在技术上创建冗余会话,但驱动程序会允许它。

【讨论】:

【参考方案2】:

理想情况下,每个应用程序只应使用一个Cluster/Session 对象,因为每个Session 对象都会创建一个pool of connections to every node of the cluster + a control connection 以获取有关架构和拓扑更改等的通知,并且具有太多的连接会给节点增加额外的负载。如documentation中所述,单个网络连接可以同时进行多个请求,如果需要可以增加in-flight的请求数,但不建议设置太高,因为in - 飞行请求表明节点无法如此快速地执行查询 - 如果您正在运行使用 ALLOW FILTERING 的查询或获取过多数据,则可能会发生这种情况。

您可以在 DataStax 的指南“Developing applications with DataStax drivers”中找到更多信息。

【讨论】:

以上是关于使用 java 模拟多个用户连接到 Cassandra的主要内容,如果未能解决你的问题,请参考以下文章

java模拟使用windows身份验证连接到sql server

同时模拟多个用户

如何从 java 连接到正在运行的 bigtable 模拟器

无法连接到 Jconsole - cassandra k8 集群

在 Windows 应用程序中模拟连接到远程机器(c#)

使用服务器端 Blazor,在连接到 SQL Server 数据库时如何使用 Windows 身份验证模拟用户?