【发布时间】:2016-05-14 18:16:04
【问题描述】:
我正在使用 phoenix 框架构建一个应用程序,该应用程序将使用数千个通道,用户将每秒钟发送一次长的、经纬度信息的消息。
所以,我每秒会收到数千条消息。
问题是,我将如何将收到的每条消息存储到数据库中? 请耐心描述一下我对此的想法,因为我正在考虑以下选项来处理将消息存储到 DB 中:
-
使用相同的连接过程将消息存储到数据库中。
可能的警告: 这会影响通道的延迟时间和性能吗?
-
为每个通道创建一个数据库专用进程来存储其消息。
可能的警告: 那么,如果我有 100'000 个通道,我将需要另外 100'000 个进程来存储消息,这样可以吗?考虑到 erlang 进程既精简又便宜?
-
为所有通道创建一个数据库进程,然后来自任何通道的每条消息都将排队,然后由这个单独的数据库进程存储。
可能的警告: 一个进程存储上千通道的所有消息,消息队列会走高,会慢吗?
那么,存储每秒来自数千个频道的消息的推荐方法是什么?
编辑
我将使用dynamo db,它可以轻松处理数千个并发请求。
【问题讨论】:
-
首先,Phoenix 默认为您提供数据库进程池。其次,每个用户已经有一个进程,所以延迟不应该受到影响。
标签: erlang elixir phoenix-framework