如何确定分布式架构?

Mar*_*rco 16 .net c# architecture asp.net distributed

在设计大型应用程序时,我正试图了解思考过程.

假设我有一个客户需要一个新的客户网站,他估计每天有40,000个订单,已有25,000个用户群.在设计应用程序时,您如何确定是否需要分布式架构?我应该使用网络农场吗?等等

我过去主要构建2层(物理)应用程序,我真的想提高我的理解力.

任何见解都会很棒!

Rud*_*udi 6

从一开始就加载测试新应用程序.

因为做一个大型设计的前期永远不会给你你期望的结果(超过15年的经验),最好的办法是设计变革,让你的需求正确的架构.

根据您的描述,为该项目采用敏捷方法,并使用其实践指导您的项目取得成功.其中一项重要做法是为您所做的所有工作制定"完成定义".显然,在你的国防部你将拥有这个项目:

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

正如您将开始开发一样,首先要做的事情之一就是设置环境以便能够运行这样的负载测试.如果这种情况从未发生过,那么您在项目的早期就已经知道您将遇到麻烦.根据需要进行多次负载测试(至少每次冲刺一次),您将知道您的体系结构可以/可以处理规​​模要求.

HTH


Bra*_*der 2

这将取决于许多其他因素,而不仅仅是每天的订单数量。它将在哪里举办?该物理架构是什么样的?除了电子商务之外,该应用程序还可以做什么?它是否需要与其他应用程序集成(当然除了支付网关之外)?ETC。

在正确的云托管环境(例如 VMware)中,可以动态扩展的简单两层应用程序对于电子商务网站来说效果很好。正确的本地托管环境(负载平衡的网络场)中的简单两层应用程序也应该适用于电子商务网站。这就是纵向扩展(可能隐藏在虚拟化中,最终导致规模扩大)和横向扩展(添加更多服务器)之间的区别。

分布式架构允许您将系统负载(例如订单处理)分配给(可能)位于负载均衡器后面的 1:M 服务器。这是一种非常常见的方法,对于电子商务网站也非常有效。

在我看来,没有一种架构或系统设计适合每一种模式。适合每种模式的最接近的架构(同样,我的观点)将是面向服务的架构。如果所有业务流程和逻辑都是服务(并且设计正确),那么无论您的需求如何变化,无论您的托管环境是什么样子或发生变化,无论您有什么集成要求,您的系统都可以轻松处理它或没有变化。