我正在考虑聊天应用程序后端架构的两种选择:
注意:术语"服务器"指的不是物理机器,而是指特定的地址/端口。
每种型号还有其他优缺点吗?我会在什么情况下使用哪种型号?还有其他可能的后端架构吗?
如果这是相关的:该应用程序侧重于2用户房间(即直接消息传递),而不太重视群组或非常大的房间。
如果这不是正确的Stack Exchange网络,请告诉我,我可以提出问题。谢谢!
答案 0 :(得分:2)
我想为你指出一些事情:
答案 1 :(得分:0)
我想知道为什么要为每个房间(或者你称之为服务器)创建不同的地址和端口的原因
例如,它可以像发布者/订阅者模式一样工作。在单个服务器和单个地址上,创建一个频道,用户(在单个或群组会话中)可以收听该频道。然后,如果用户在该频道上发布消息,您可以将其发送给所有订阅者。
还有不同的方法来处理消息持久性,例如首先将它们插入数据库然后将它们发布到通道中。但正如@Khang指出的那样,需要经纪人。您的代理可能本身可以处理消息持久性,也可以只将消息从一个服务器发送到另一个服务器。 (例如Nats)
另一件事是,如果你想扩展它,你的消息应该能够通过你的分布式网络传播,就像通道用户连接到不同服务器的情况一样;您选择的经纪人仍可以帮助您。
但回到利弊,你谈到的两个解决方案可能会让你在太多地址上打开太多端口(如果我理解正确的话)这似乎没有问题,因为你可能会用完它们而单个端口可以处理您需要的一切。目前我也不知道你将如何实现它。它可能没有比其他架构更快的速度。