我们有一个带有Tomcat servlet容器的Java(Spring)Web应用程序。 我们有像博客这样的东西。 但博客必须使用Ajax动态加载其帖子。 客户端的ajax脚本会检查每秒的新帖子。 即Ajax必须每秒向服务器询问新帖子,这对数据库来说非常重要。
但是,如果我们同时拥有数十万个连接呢? 我认为我们必须每秒都使用cron检索所有帖子,然后将其保存到某处。但是哪里? 主要思想是卸载数据库。 关于建筑的任何想法? 提前谢谢!
答案 0 :(得分:3)
根据具体情况,还有其他的轮询架构可能更优化:
长轮询
长轮询是一种变体 传统的民意调查技术 允许模拟信息 从服务器推送到客户端。同 长轮询,客户要求 来自服务器的信息 与普通民意调查类似的方式。然而, 如果服务器没有 为客户提供的信息, 而不是发送空响应, 服务器保存请求并等待 有些信息可供使用。 一旦信息可用 (或在适当的超时后),a 完整的回复发送到 客户。那时客户通常会 立即重新请求信息 从服务器,使服务器 几乎总会有一个可用的 等待它可以使用的请求 提供数据以响应事件。 在web / AJAX上下文中,长轮询是 也称为Comet编程。
此技术的实施示例: Push Server
您还可以使用观察者模式注册请求,并在更新完成后通知他们。
答案 1 :(得分:0)
成千上万的并发用户每秒都会轮询我们的网站,这会产生大量的流量。如果你真的希望这种负载,你将不得不相应地设计你的平台,可能是通过集群多个Web,应用程序和数据库服务器。
请记住,对于数据库连接池,您不需要为每个用户建立数据库连接。
答案 2 :(得分:0)
我对Tomcat并不熟悉,但在WebSphere中我们可以设置连接池来准备一定数量的连接。
另外,您是否主要担心读取或写入次数相同?
另外,您可能还希望根据区域等对数据库进行“拆分”。这样,整个数据库中不会出现单个负载,但可以拆分甚至负载均衡。
还有“NoSQL”数据库可供查看。也许要考虑的事情。只是提出帮助的想法。