在设计大型应用程序时,我试图了解思维过程。
假设我有一个客户需要一个新的客户网站,他估计每天有40,000个订单,已有25,000个用户群。在设计应用程序时,您如何确定是否需要分布式架构?我应该使用网络农场吗?等
我过去主要构建2层(物理)应用程序,我真的希望提高我的理解。
任何见解都会很棒!
答案 0 :(得分:6)
从一开始就加载测试新应用程序。
由于做一个大型设计的前期永远不会给你你期望的结果(超过15年的经验),最好的办法是设计变革,让你的需求正确的架构。
根据您的描述,对该项目采用敏捷方法,并使用其实践指导您的项目取得成功。其中一项重要做法是为您所做的所有工作制定“完成定义”。显然,在你的国防部你将拥有这个项目:
正如您将开始开发一样,首先要做的事情之一是设置环境以便能够运行这样的负载测试。如果这种情况从未发生过,那么你很早就知道你会遇到麻烦。 根据需要进行多次负载测试(至少每次冲刺一次),您将知道您的体系结构可以/可以处理规模要求。
HTH
答案 1 :(得分:2)
它将取决于许多其他因素,而不仅仅是每天的订单数量。它将在哪里举办?这个物理架构是什么样的?除电子商务外,该应用程序还做了什么?是否需要与其他应用程序集成(当然除了支付网关)?等
在正确的云托管环境(例如VMware)中,可以动态扩展的简单双层应用程序可以很好地用于电子商务网站。在正确的内部部署托管环境(负载平衡的Web场)中的简单双层应用程序也应该适用于电子商务网站。扩展(可能隐藏在虚拟化中,最终成为一种扩展)和扩展(添加更多服务器)之间的区别。
分布式体系结构允许您将系统负载(例如订单处理)分配给位于(可能)负载均衡器后面的1:M服务器。这是一种非常常见的方法,也适用于电子商务网站。
在我看来,没有一种架构或系统设计适合所有模具。适合每个模具的最接近的架构(再次,我的观点)将是面向服务的架构。如果所有业务流程和逻辑都是服务(并且设计正确),那么无论您的需求如何变化,无论您的托管环境如何变化,或者无论您的集成要求是什么,您的系统都可以处理它或者没有变化。
答案 2 :(得分:2)
由于您正在编写.Net,请将应用程序放在Azure中(da cLOUD man,DA CLOUD !;)。
它将帮助您获得所需的处理能力。只要你不做任何愚蠢的错误,应用程序就可以运行。
答案 3 :(得分:1)
可以通过负载平衡至少部分地解决扩展问题。
并发可能是你真正的问题。分布式事务是一个繁琐的工具,但如果没有额外的考虑,它将无法解决所有用例。
某些金融公司对可直接访问数据库的Web服务器有其他安全要求。