【发布时间】:2013-02-20 02:56:57
【问题描述】:
我有一个服务器多客户端服务器 - 在收到来自客户端的消息后,服务器需要对其进行处理,然后再将其传递给另一个客户端。
我不知道我想做的最好的实现是什么,所以如果有任何帮助,我将不胜感激。这些消息将按时间间隔发送,因此消息需要被接收、处理并推送到结构中,然后才能在特定时间从要发送的结构中访问。消息有两个属性:目的地和优先级。访问将按时间间隔进行,有两种模式:特定于客户端节点,或向所有节点开放接收。
- 如果时间间隔只允许特定节点接收,则会发生从最高优先级到最低优先级检查的所有队列,即以最高优先级发送的最早消息将从结构中“推出”。
- 如果时间间隔为“开放”,则无论节点如何,都将“推出”最高优先级的最早消息。
我最初认为它可能是vector<vector<queue<message>>,但我意识到根据第 2 点进行搜索效率不高。我将不胜感激任何建议!有人建议我使用哈希映射,但我没有这方面的经验,如果这是最好的方法,我将不胜感激。
edit:将相同的消息推送到两个不同的结构中是否有更好的解决方案?一:按优先级分类,向量持有FIFO队列(每个优先级一个)。二:按节点分类,vector<vector<queue<message>>。
【问题讨论】:
-
澄清一下,每条消息是否总是发往 one 节点?另外,节点的可能数量是多少(至少是一个非常粗略的范围:数十、数百、数千)?
-
@Darius 该消息最初将只发往一个节点(随后可能会实现广播)。可能的节点数量将在数以百计的范围内。抱歉没有说清楚!
标签: data-structures hashmap queue client-server server-side