java - 将一个请求拆分到多个 tomcat 服务器以从 Cassandra DB 获取数据

标签 java spring tomcat cassandra

我们有 6 台 tomcat 服务器在环境中运行,我的应用程序 war 部署在每台服务器上。在当前情况下,我正在使用分页从 cassandra 获取所需的数据。假设DB中有10000条记录,它会先取1-1000,然后取下一组数据。重要的一点是它只使用一个 tomcat 服务器,因为这是一个等待时间更长的请求。

现在,我想将此请求拆分到 6 个不同的 tomcat 服务器,例如第一个 tomcat 将获取 1-1000 行,然后从 1001-2000 获取第二个,依此类推。然后将所有响应汇总为单个响应。那么,在 Camel 中有什么方法可以使用 spring DSL 跨多个 tomcat 服务器溢出单个路由请求,这样我就可以利用所有服务器来提高性能。感谢您的宝贵意见。谢谢。

最佳答案

遗憾的是,无法一次在不同偏移量的单个分区内对行进行分页。 The protocol spec定义从每个查询返回的分页状态。然后使用该分页状态检索下一页行。分页状态被认为是内部的,不应被操纵。在 java-driver 2.0.10/2.1.6 中有一种机制可以在语句上设置分页状态(JAVA-550),但是它非常严格,因为分页状态必须从原始查询中派生,所以你可以保持该状态以备后用,并在其他时间继续查询。

但是,如果您要进行范围查询(我怀疑这是因为您有很多行),可以考虑的一种选择是 datastax spark connector它有一种机制,可以将范围查询分解为 token 范围,并将 token 范围的查询委托(delegate)给提交给 spark worker 的任务。如果您能以某种方式在每个 tomcat 实例中运行一个 spark worker,那可能是一个选择。

关于java - 将一个请求拆分到多个 tomcat 服务器以从 Cassandra DB 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29655348/

相关文章:

java - tomcat 启动失败 : SEVERE: Error starting static Resources

java - Spring Security 的域权限

java - 接受java代码作为用户输入

java - 检查对服务器的所有请求的有效负载

java - 从文本文件中读取 int 值,并使用值更改文件内容以分隔文本文件。(java)

java - 使用spring MVC返回生成的pdf

java - 现有的 Java Web 应用程序和 Spring STS (Spring 3)

java - 如何使用 Spring MVC 中的 @PathVariable 发送 Map<String, String>

java - JLS、Java和相关技术之间的关系是什么?

java - 使用java将数据插入mongodb