正在为低客户端计数创建每个客户端的Cassandra会话



我正在创建一个工具,使用户可以通过图形用户界面在Cassandra DB上进行CRUD操作。我首先计划让客户建立自己与集群的联系并进行每个会话,但是在进行研究之后,每个人都说您应该只使用一个会话。现在我有两个解决方案:

1。无论如何,正如我首先计划的那样,请使用多个会话。

  • 很容易设置,只需使用工具调用 iSession session = cluster.connect((; 当工具打开时
  • 可能很慢?我不知道,我认为客户次数低的情况不会很慢
  • 这可能是危险的,Crud操作可能会采取意想不到的行为?从我可以收集的情况下,情况并非如此
  • 我的雇主可能会因为不遵循标准而杀死我吗?如果该解决方案易于理解,并且有可忽略的问题,我怀疑这会发生。

2。使用客户端服务器连接并将CQL查询发送到服务器以发送到DB,然后将结果返回到客户端。

  • 我只需要一个会话,可以与服务器中的数据库交谈
  • 这是更多的工作
  • 实际上必须维护一块硬件以运行服务器,如果它降低了,则无法使用该工具
  • 由于客户端服务器之间的通信增加可能会很慢?我不知道
  • 很难做正确的事,我必须设置一个管理每种情况的网络通信协议

3。我没有想到/知道的第三个解决方案。

作为一个例子,可以说我们有10个客户同时工作(我怀疑是否会同时进行这么多的客户(,并且因为我很好奇,请考虑是否同时有100个客户。

我真的很倾向于解决方案1.但是我也真的很想要经验丰富的人的第二意见。是的,我可以使用解决方案1,还是一个错误/危险?我正在使用dataStax c#驱动程序的apache cassandra版本3.4.1

更新:是否可以序列化 iSession 实例并将其发送给客户以重建和使用?这将是两全其美的最好的,因为那时我可以与多个客户端共享一个过程,而无需设置网络协议。每次客户端启动时,它只需要向服务器询问会话实例,然后将其使用,就好像是在主机中创建的。

最好在一个过程中共享会话,但是如果您有多个单独的进程,那么如果您将端子数量保持相对较低,则可以单独的会话。请注意,驱动程序通常会在群集中的每个节点上打开连接,直到您明确覆盖负载平衡策略(但是只有在您绝对知道自己做什么的情况下,才需要这样做(。

最新更新