Ruby on rails 具有后台架构的高负载rails服务器
这是我的任务。 每一秒的背景任务都应该根据一些数据生成json。此操作不是cpu密集型的(主要是网络),它生成JSON内容(5-10KB)。操作大约需要200毫秒 另外,我有大约1000名客户每隔几秒钟就要一次此内容。假设是每秒200个请求 服务器应该只输出当前的实际json 目前我已经有rails 4+nginx+passenger+debian服务器做其他工作,与这项工作相关 作为一名学生,我希望以最经济高效的方式制作服务器,并通过以下方式轻松扩展:Ruby on rails 具有后台架构的高负载rails服务器,ruby-on-rails,nginx,high-load,Ruby On Rails,Nginx,High Load,这是我的任务。 每一秒的背景任务都应该根据一些数据生成json。此操作不是cpu密集型的(主要是网络),它生成JSON内容(5-10KB)。操作大约需要200毫秒 另外,我有大约1000名客户每隔几秒钟就要一次此内容。假设是每秒200个请求 服务器应该只输出当前的实际json 目前我已经有rails 4+nginx+passenger+debian服务器做其他工作,与这项工作相关 作为一名学生,我希望以最经济高效的方式制作服务器,并通过以下方式轻松扩展: 添加更多的背景工作,生成更多的json
瓶颈是任何具有阻塞机制、GIL、IO锁等的后端,请尝试通过使用中间Memcache数据点拆分请求/响应周期来避免此类问题。客户端是否要求类似类型的内容?背景工作人员在忙什么?内容是否可缓存?您有什么样的数据结构和存储?客户机要求提供json创建的最后一个json的副本。您可以这样想:backgrounder创建一个文件=>客户端下载当前文件。内容可缓存,但每一秒背景都会创建新的实际文件。Backgrounder向外部服务器请求数据并将其连接起来。我现在没有任何存储空间。这有点像RSS方法吗?URL是否包含任何日期范围参数或用户id?只是想找出你可以应用的模式,它比rss更简单。它就像文件服务器。客户端请求文件和后台作业更新文件。无需存储文件历史记录。只有真正的版本需要使用dalli gem和loops gem进行memcached,这让我很开心。在我的虚拟机上一切都很顺利。感谢you@YegorRazumovsky听起来很棒!要实现10K连接,只需使用更多的Nginx服务器即可。另一种选择是Rails响应缓存,但有时集中式缓存(也称为Memcache)更适合。