目前我正在使用 Thrift 协议在 Rails 应用程序和 HBase 之间使用同步通信:
table = HBaseRb::Table.new ThriftClientFactory.create("client_name"), "table_name"
i = table.atomic_increment("row_key", "f:count_#{Time.now.getlocal.hour}")
这些代码在模型类中,因此如果 HBase 出现问题,可以阻止服务。
为了解决这个问题,我想异步进行 Thrift 通信(非阻塞 I/O)。我认为EventMachine可以解决这个问题。但是有几个关于在我的 Rails 应用程序中使用 EventMachine 的问题:
据我所知,EventMachine 就像一个持续监听事件的服务器(或守护进程)。如果是这样,我应该在我的 Rails 应用程序中包含一个小型 EM 服务器吗?
我应该
EventMachine.start_server :host, : port, :server_module
用来做我想做的事吗?如果是这样,HTTP 请求是我向 EM 服务器发送事件的方式吗?
如果我对 EM 的理解有误,请告诉我。
感谢您的任何建议/更正。