高负载 rails 具有后台架构的服务器
Highload rails server with backgrounder architecture
这是我的任务。
每个第二个后台程序任务应该根据一些数据生成 json。此操作不是 cpu 密集型(主要是网络),它会生成 JSON 内容 (5-10KB)。操作大约需要 200 毫秒。
我也有大约 1000 名客户每隔几秒钟就询问一次此内容。假设它大约是 200 requests/sec。
服务器应该只输出当前实际值 json。
目前我已经有 rails 4+nginx+passenger+debian 服务器在做其他与这项工作相关的工作。
作为一名学生,我想以最具成本效益的方式制作我的服务器,并能够以这种方式轻松扩展:
- 添加更多后台作业,生成更多 json 的
- 请求数量增加到每秒 10000 个
目前我有 linode 2048 ssd 2 CPU 核心。我的问题是:
- 我的后台任务应该使用什么gem/solution(目前写在ruby)
- 如何有效地存储实际 json 并将其从后台传递给 rails/nginx。
- 如何使服务 json 尽可能快。
你提到了 "Server should just output current actual json",我猜 JSON 代可能不会成为瓶颈,因为你可以将它缓存到 Memcache 并直接为 Memcache 服务:
1) 定期后台进程 -> 将数据转储到 Memcache(甚至 gzip 以加快速度)
2) 用户 -> Nginx -> 内存缓存
查看模块内置的 Nginx 内存缓存 http://nginx.org/en/docs/http/ngx_http_memcached_module.html
瓶颈是任何具有阻塞机制、GIL、IO 锁等的后端,尝试通过使用中间 Memcache 数据点拆分 request/response 循环来避免此类问题。
这是我的任务。 每个第二个后台程序任务应该根据一些数据生成 json。此操作不是 cpu 密集型(主要是网络),它会生成 JSON 内容 (5-10KB)。操作大约需要 200 毫秒。
我也有大约 1000 名客户每隔几秒钟就询问一次此内容。假设它大约是 200 requests/sec。
服务器应该只输出当前实际值 json。
目前我已经有 rails 4+nginx+passenger+debian 服务器在做其他与这项工作相关的工作。
作为一名学生,我想以最具成本效益的方式制作我的服务器,并能够以这种方式轻松扩展:
- 添加更多后台作业,生成更多 json 的
- 请求数量增加到每秒 10000 个
目前我有 linode 2048 ssd 2 CPU 核心。我的问题是:
- 我的后台任务应该使用什么gem/solution(目前写在ruby)
- 如何有效地存储实际 json 并将其从后台传递给 rails/nginx。
- 如何使服务 json 尽可能快。
你提到了 "Server should just output current actual json",我猜 JSON 代可能不会成为瓶颈,因为你可以将它缓存到 Memcache 并直接为 Memcache 服务:
1) 定期后台进程 -> 将数据转储到 Memcache(甚至 gzip 以加快速度)
2) 用户 -> Nginx -> 内存缓存
查看模块内置的 Nginx 内存缓存 http://nginx.org/en/docs/http/ngx_http_memcached_module.html
瓶颈是任何具有阻塞机制、GIL、IO 锁等的后端,尝试通过使用中间 Memcache 数据点拆分 request/response 循环来避免此类问题。