我要告诉我必须解决的问题,并且如果我处于正确的路径中,我需要一些建议。多线程Windows服务 - Erlang
的问题是:
我需要创建一个接收请求Windows服务应用程序,并做一些动作。 (套接字通信)这个动作是执行一个脚本(可能在lua或perl中)。这个脚本模拟客户端的业务规则,在数据库中查询,在网站发出请求,然后向客户发送响应。
有3个强制性要求:
- 该服务将在同一时间收到很多请求。所以我想使用工作者的线程模型。
- 该服务的吞吐量必须很高。同一秒我会有很多请求。
- 低延迟:我必须很快响应这些请求。
每个请求都会生成一个日志条目。由于大I/O时间,我不能在脚本执行的同时在物理磁盘中写入这些日志条目。可能我会在内存中创建一个队列,其他的Threds会使用这个队列并写入磁盘。
未来,有可能两个工作者的线程必须改变消息。
我必须为此服务制定协议。我正在考虑使用Thrift,但我不知道涉及的开销。也许我会做我自己的协议。
为了编写windows服务,我想到了Erlang。这是个好主意吗?
有没有人有任何建议/提示来解决这个问题?哪种编写这项服务的语言更好?
不知道“很多”,“高”和“非常快”的数量实际上等于多少,这是一个主观的问题。 – spender 2011-04-02 16:59:27
@spender:是的,也准备好了,但是后来记得有时几乎不可能指定这个,甚至几乎不可能。 – 2011-04-02 17:28:31
请求每秒:约1k每秒 延迟:约600毫秒。取决于脚本中实施的业务规则。 – 2011-04-02 18:40:26