【发布时间】:2011-04-02 16:55:17
【问题描述】:
我将告诉我必须解决的问题,如果我走在正确的道路上,我需要一些建议。
问题是:
我需要创建一个接收请求并执行某些操作的 Windows 服务应用程序。 (Socket通信)这个动作是执行一个脚本(可能是lua或perl)。这个脚本模拟客户端的业务规则,在数据库中查询,在网站中发出请求,然后向客户端发送响应。
有 3 个强制性要求:
- 服务会同时收到大量请求。所以我想用worker的线程模型。
- 服务必须具有高吞吐量。我将在同一秒内收到许多请求。
- 低延迟:我必须非常快速地响应这些请求。
每个请求都会生成一个日志条目。由于 I/O 时间大,我无法在脚本执行的同时将这些日志条目写入物理磁盘。可能我会在内存中创建一个队列,其他线程会消耗这个队列并写入磁盘。
以后有可能两个woker的线程要改消息。
我必须为此服务制定协议。我正在考虑使用 Thrift,但我不知道所涉及的开销。也许我会制定自己的协议。
要编写 Windows 服务,我在考虑使用 Erlang。这是个好主意吗?
有没有人有解决这个问题的建议/提示?哪种语言更适合编写此服务?
【问题讨论】:
-
不知道“很多”、“高”和“非常快”究竟是什么数量,这是一个主观问题。
-
@spender: 是的,我也准备好注意到这一点,但后来又想起有时几乎不可能甚至非常粗略地指定这一点
-
每秒请求:大约每秒 1k 延迟:大约 600 毫秒。取决于脚本中实现的业务规则。
标签: windows erlang latency thrift throughput