我有以下问题:
服务器进程1
服务器进程2
问题是,process 1和process 2返回客户端的结果是完全不同的,不相关的。
一个人怎么分解这个?您是否只有一个进程不断地发送数据,并将协议定义为有一个与返回类型是1或2相对应的位?
你有两个过程吗?那么,他们如何共享数据存储(它只是一个结构,而不是一个数据库)?
谢谢!
发布于 2009-10-01 23:28:36
听起来,您想要将您的一系列in“放到某个地方”,并将它们收集到一个数据存储中。在我的系统中,我将传感器读数传输到数据库中,并允许它们直接访问web客户端,为他们提供实时的电力读数。我写了一篇关于为什么是数据库不适用于实时数据。的博客文章--尽管它是保存数据以供以后分析的完美方法。
我希望第一个服务器进程是一个使用txamp将ints流到RabbitMQ的扭曲服务器。任何想要实时数据的客户端都可以订阅RabbitMQ中的流,也可以使用Txamp。Web浏览器客户端可以使用绕轨道 下面是一个有用的示例。
在设计服务器中,1保存到数据库。相反,您可以让server3从RabbitMQ收集数据并将其流到数据库中。我计划有一个服务器来收集大量数据并呈现图形,以便存储到中央文件共享中。
不要创建自己的消息传递系统,RabbitMQ是经过良好测试、可伸缩的,如果出现问题,可以持久化您的“消息”(原始数据)。
发布于 2009-10-01 20:41:30
如果您可以限制自己使用Twisted,我建议您使用透视经纪人。它本质上是一个RPC系统,不太关心“客户端”和“服务器”的概念--无论是TCP连接的发起者还是响应者都可以在PB中启动RPC调用。
因此,服务器1将接受带有回调对象的注册调用,并在有新数据可用时调用回调。服务器2根据客户端的需要提供各种RPC操作。如果它们对相同的数据进行操作,我将把这两台服务器放在一个进程中。
发布于 2009-10-01 20:16:28
为什么不使用数据库而不是“只是一个结构”呢?关系型和非关系型DB都提供了许多实际优势(单独使用它们的进程,负责复制[和/或快照、备份、.],如果您需要用于“查询”的丰富功能,等等)。
最糟糕的情况是,“只是一个结构”可以由第三个完全专用于它的进程来处理(基本上模仿任何DB引擎会提供什么--尽管引擎可能会更好、更快;-),允许您至少保持良好的分解(两个服务器进程都与“数据存储进程”交互)。
https://stackoverflow.com/questions/1505744
复制相似问题