我正在努力实现一个应该返回 JSON 响应并且应该维持非常高负载的 RESTful API。API 的“读取”部分将产生最高负载,API 的“写入”部分将产生极少的负载。我的第一次尝试是使用 nodejs 编写整个 API。我几乎做到了,但在 javascript 和 ruby 之间面临非常高的模型和逻辑重复,因为 API 是更大系统的一部分。我尝试将所有逻辑移动到后端(mySql),但这个想法变得更加丑陋。我的第二次尝试是在 Ruby 生态系统中编写 API,以便在系统的所有部分之间共享模型/逻辑和测试。
我尝试单独使用 Cramp 和 Goliath,但所有这些异步的东西确实使 API 实现变得复杂。我只需要 2 个异步读取 url,因为它们会产生最高的负载,并且通过一路异步,我被迫以异步方式实现 API 的其余部分,这并没有增加任何价值。
我目前的尝试是混合:使用 Thin/Sinatra/Cramp 鸡尾酒。我在 Ruby 代码中实例化 Thin rack 句柄,并使用 rack builder 我在 Sinatra 和 Cramp 之间拆分 API,它采用同步实现,Cramp 以异步方式实现 2 个 url。
这是一个好方法吗?或者将 Sinatra 和 Cramp 放在一个 Web 服务器(Thin)中会因为某种原因给我带来更多麻烦?
更新: 我正在尝试将 Sinatra 与 rack/fiber_pool 和 em_mysql2 混合的解决方案。似乎我正在扼杀两个目标 - 使 API 与同步实现异步。但是我遇到了一个我认为很快就会修复的错误。
会不会有这样的问题?