使用 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 模拟器