如何确定分布式架构?

16

我试图理解设计大型应用程序的思考过程。

假设我有一个客户需要一个新的客户网站,他预计每天会有40,000个订单,已经有25,000个用户。在设计应用程序时,如何确定是否需要采用分布式架构?我应该使用Web Farm等技术吗?

我以前主要构建过两层(物理)应用程序,我真的想提高我的理解能力。

任何见解都将非常有用!


4
最好的提示是找一个在该领域拥有经验证明的人来加入。否则,不要做任何愚蠢的设计决策,并根据需要进行扩展。但是,如果没有经验,就很难分辨出愚蠢和明智之举。 - sehe
+1 在 @sehe 的评论上 - 你需要从懂行的人那里寻求帮助。 - BrandonZeider
虽然我同意你们的观点(sehe和BrandonZeider),但并不是每个人都有机会去做你们所建议的事情。 - e36M3
如果需要更多的见解,您可以考虑转到http://serverfault.com/。 - Patrick M
4个回答

6

从一开始就对你的新应用程序进行负载测试。

自从大规模设计无法给出您期望的结果(15年以上的经验)之后,最好的做法是为变化设计并让正确的架构从您的需求中出现。

根据您的描述,采用敏捷方法论来进行此项目,并使用其实践指导您的项目取得成功。其中一个重要的实践是为您所做的所有工作制定“完成定义”。在您的DoD中,明确地列出以下项目:

  • 需要通过负载测试(40,000个订单;每天25,000个用户)。

当您开始开发时,首先要做的事情之一当然是设置环境以能够运行这样的负载测试。如果从未发生过这种情况,您早在项目的早期就已经知道会遇到麻烦。至少每个迭代都进行负载测试,您将知道您的架构是否可以处理规模需求。

希望对您有所帮助。


2
这将取决于除每天订单数量外的许多其他因素。它将托管在哪里?物理架构是什么样子的?除电子商务之外,应用程序还有什么其他功能?是否需要与其他应用程序集成(当然除了支付网关)?等等。
在正确的云托管环境中(例如VMware),一个简单的两层应用程序可以动态扩展,非常适合电子商务网站。在正确的本地托管环境中(负载平衡网络),一个简单的两层应用程序也应该适用于电子商务网站。这是扩展上限(可能隐藏在虚拟化中,最终成为一种扩展)和扩展下限(添加更多服务器)之间的区别。
分布式架构将允许您将系统负载(例如订单处理)分发到1:M服务器上,这些服务器位于负载均衡器后面(也许)。这是一种非常常见的方法,也非常适合电子商务网站。
在我看来,没有一个架构或系统设计适用于所有模具。最接近适合所有模具的架构(再次强调,我个人意见)将是面向服务的架构。如果所有业务流程和逻辑都是服务(并且经过正确设计),那么无论您的要求如何变化,无论您的托管环境是什么样子或发生了什么变化,并且无论您有什么集成要求,您的系统都可以在几乎没有更改的情况下处理它。

2

如果你正在编写 .Net 应用程序,将其放在 Azure 中(云端啊,云端!;)。

这将帮助你获得所需的处理能力。只要不犯任何愚蠢的错误,应用程序就可以正常工作。


1

至少部分地解决扩展问题可以通过负载均衡来实现。

并发可能是您真正的问题。分布式事务是一种笨重的工具,但如果没有额外的思考它不会解决每个用例。

一些金融公司对于 Web 服务器直接访问数据库有额外的安全要求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接