【发布时间】:2015-04-22 15:21:33
【问题描述】:
我的任务是扩展一个系统,我需要在 Couchbase 服务器中执行大量插入操作。顺便说一句,我正在使用 Couchbase Server 2.5,以及 Couchbase Java Client 1.4.4
我希望从消息队列中接收大约 100K 条消息,我将它们拉出,然后尽快将这些消息持久化到 Couchbase 中。我打算通过利用像 Akka 这样的并发框架来引入并发。我打算为每条消息生成新的 Actor 并持久化,因此在任何给定的时间点,理论上我都有可能在系统中拥有超过 10 万个 Actor,它们都同时尝试通过 Couchbase 客户端持久化消息。
几个问题:
- 我应该如何考虑这里的资源争用?假设一台 4 核机器,理论上只有 4 次写入可以以真正并行的方式发生。
- 让我们假设我的 Couchbase 集群在优秀的硬件上运行,并且应该能够非常快速地扩展到超过 100K 的请求。我的理论是我可能会在客户端遇到瓶颈,如果我遇到了......
- 我应该如何扩展我的客户端以便能够执行这么多(或更多写入)而不超时?有没有办法在客户端调整我的线程池?
- 最后,我是否应该引入某种方式来限制我的写入,从而减轻 couchcbase 客户端上的“压力”?
- 在考虑如何正确、优雅地扩展它,避免出现意外错误/资源泄漏时,我还缺少什么?
谢谢!
【问题讨论】: