这个问题是关于设计决策的。我目前正在开发一个网络项目,该项目将有4万用户,并且在几个月内预计将增长5千万用户(尽管不是并发用户)。我想要有一个可以轻松扩展而不需要太多努力的架构。设计决策 - 扩展基于Web的应用程序的体系结构
为了解释,我想使用一个微不足道的场景。比方说,用户实体和服务,如CreateUser,AuthenticateUser等,是页面控制器的简单方法调用。但是,一旦流量增加,例如,认证用户(或与用户实体相关的这类服务)必须被移出到不同的内部服务器以传播负载。但是同时在用户数为40K时通过网络使用RPC调用会变得过度。
我的建议是最初使用IPC,当我们需要扩展时,我们可以间接切换到基于TCP的RPC调用,以便它可以轻松扩展。例如,我指的是System.IO.Pipes.NamedPipeStreamServer
开头,稍后再转到TcpListener
。
如果我们有适当的设计可以封装上述方法,那么我们很容易将服务扩展到多个网络服务器,但同时避免在用户数较少时进行网络调用。
这是最好的方法吗?任何建议都会很棒..
注意:数据库缩放定义为第二阶段优化,因此我们已经制定了适当的架构设计,以便在流量增加时轻松分区数据。主要的瓶颈将是这段时间内的应用程序服务器。