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

标签 database amazon-ec2 server cassandra nosql

现在我有一个运行 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

});

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

最佳答案

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

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

关于database - 使用 Cassandra 创建实时应用程序的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045422/

相关文章:

php - 将javascript变量存储在mysql数据库中

PHP/MYSQL 根据另一个条件检索名称

python - 使用 crond 运行时,boto 与 AWS 的连接挂起

amazon-web-services - S3 "US Standard"区域与 EC2 中的 "us-east-1"区域相同吗?

java - 通过外部 java 类更新 TextView

javascript - 创建服务器 - 处理 CORS pre-flighted

android - 如何在 Android 中创建本地数据库?

如果文件标题中有 ',PHP 文件上传错误

php - 无法从 EC2 WordPress 站点连接到 Amazon RDS

javascript - Node : Communication between two servers (net)