使用Cassandra创建实时应用程序的正确方法

WHO*_*LES 5 database amazon-ec2 cassandra nosql server

现在,我有一个运行Cassandra的ec2实例和一个简单的websocket服务器。我想知道这是否是制作“实时”聊天应用程序的正确方法。有什么我想念的吗?

客户端连接到websocket,插入一条消息,将该消息存储到数据库中,然后如果记录到数据库成功,则将消息发送给用户。

const cassandra = require('cassandra-driver');
const client = new cassandra.Client({ contactPoints: ['127.0.0.1'], 
localDataCenter: 'datacenter1' });

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3000 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {

   //Insert message into Cassandra DB
   //Send message to other users if record to database with a consistency 
      level of one is successful
   //Then send messages to users connected to the websocket in chatroom

});
Run Code Online (Sandbox Code Playgroud)

编辑:我似乎也找不到类似这样的任何教程,所以如果您有任何链接,请分享

Mik*_*eev 4

您的问题没有简单的答案,也不太清楚具体内容。在像 Cassandra 这样的分布式系统中,“如果数据库中的记录成功”并不是一件容易的事情,因为您可以拥有许多数据副本。它始终是数据一致性和可用性之间的权衡。在使用Cassandra之前首先需要了解CAP定理

我不确定聊天应用程序是否需要强一致性,但拥有 2 或 3 个数据副本会很好。如果是 cassandra,您可以选择更合适的一致性级别。我认为对于聊天消息,它可以是ONEANY,在这种情况下,Csaandra 将提供最终的一致性,但与更“强”的一致性级别相比,您将拥有更多的可用性和性能。