我正在使用phoenix框架构建应用程序,该框架将使用数千个频道,用户将每隔一秒钟发送长时间,拉秒信息的消息。频道上的持续消息
所以,我会每秒钟收到数千条消息。
问题是,如何将每条消息存入数据库? 请多多包涵来形容这个我的想法,因为我想到下列选项来处理信息存储到DB:
使用相同的连接过程中对信息存储到数据库中。
可能的警告: 这会影响通道的等待时间和性能吗?
为每个通道创建一个DB专用进程来存储其消息。
可能需要注意的事项: 然后,如果我有100'000个通道,我需要另一个100'000进程来存储消息,这样好吗?考虑到erlang过程是精简而便宜的?
为所有通道创建一个数据库进程,然后来自任何通道的每条消息都将排队,然后由此个人数据库进程存储。
可能需要注意的事项: 一个存储数千个通道的所有消息的过程,消息队列会变高,会慢吗?
所以,这是存储信息来每秒从数以千计的通道建议的方法?
编辑
我会用dynamo db这将扩展到处理数千个容易并发请求的。
首先,Phoenix默认为您提供db进程池。其次,每个用户已经有一个进程,所以延迟不应该受到影响。 – tkowal